現在、ドッキング決済を必要とするプロジェクトが多数ありますが、ここでは主にドッキング Alipay H5 決済について説明します
ナンセンスではありませんコードについて言いたいことはたくさんあります
Alipay の公式 SDK の紹介
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk --> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-easysdk</artifactId> <version>2.2.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.10.124.ALL</version> </dependency>
payment を呼び出すメソッドの作成
@RequestMapping("/test") public void doPost(HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws ServletException, IOException { //商户号 String APP_ID=""; //私钥 String APP_PRIVATE_KEY=""; //编码 String CHARSET="UTF-8"; //公钥 String ALIPAY_PUBLIC_KEY=""; //我是沙箱环境 所有请求地址是沙箱版 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //获得初始化的AlipayClient AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request //这里主要是设置回调 也就是支付成功之后你要做什么操作的地址 alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp"); alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址 /** * @description: * @author: hwk * @date: 2022/6/14 16:34 * @param: out_trade_no 订单编号 * total_amount 付款金额 * subject 商品名称 * product_code 支付方式 如手机网站 pc网站 APP支付等 **/ JSONObject jsonObject = new JSONObject(); jsonObject.put("out_trade_no", "264484811515156"); jsonObject.put("total_amount", "66"); jsonObject.put("subject", "测试支付"); jsonObject.put("product_code", "QUICK_WAP_WAY"); alipayRequest.setBizContent(jsonObject.toJSONString()); String form=""; try { form = alipayClient.pageExecute(alipayRequest).getBody(); } catch (AlipayApiException e) { e.printStackTrace(); } //因为我不会写前端 所以直接输出测试 如果在正式环境中 建议直接return 返回的from表单 httpResponse.setContentType("text/html;charset=" + CHARSET); httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面 httpResponse.getWriter().flush(); httpResponse.getWriter().close(); } //支付回调 @RequestMapping("/test1") public void aliPayNotify() { Map<String, String> params = getAllRequestParam(request); String tradeStatus = params.get("trade_status"); if ("TRADE_SUCCESS".equals(tradeStatus)) { System.out.println("支付成功"); }else { System.out.println("支付失败"); } } private Map<String, String> getAllRequestParam(final HttpServletRequest request) { Map<String, String> res = new HashMap<>(8); Enumeration<?> temp = request.getParameterNames(); while (temp.hasMoreElements()) { String en = (String) temp.nextElement(); String value = request.getParameter(en); res.put(en, value); } return res; }
正式参加 支払いの際、文字列 json を使用して受け取ることができます これは単なるデモです
#成功したデモの写真
##実際の支払いに必要なパラメータを説明します
appid 公開キーと秘密キーを除くあなたは正常です 支払いに必要なパラメータは、製品の ID (主に、製品 ID に基づいて製品の名前と価格をクエリするために使用され、その後の支払いのその他の呼び出しに使用されます)、購入者
、およびクエリです。製品の詳細を取得し、対応するパラメータに設定します。Alipay SDK を呼び出してフォームから生成します。
例: 購入はメンバーシップです。支払いが完了したら、その人のメンバーシップを開くか更新します。
注文の際に注意していただきたい点が 1 つあります。支払いを開始する前に作成されたものは未払いである必要があります。コールバックで、ユーザーが成功したかどうかを判断します
ユーザーが支払いが成功したかどうかを積極的に確認する場合は、最初にデータベースにアクセスすることをお勧めします注文番号に従って支払いが成功したかどうかを確認します そうでない場合は、公式インターフェイスに移動して支払いが成功したかどうかを確認します この利点は、コールバックが少し遅くなる場合があり、ユーザーが主導権を握ることです支払いが成功した場合、支払い失敗の返品は発生しません
以上がAlipay決済プロジェクトとJavaドッキングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。