赞
踩
今天晚上12点部署生产项目,又是个不眠夜。
之前整的好多东西都忘光了,还是记录下来吧。
跟对接支付宝支付差不多,地址:小程序支付能力介绍 | 小程序
开通流程:
- 1.先要去支付宝开放平台,创建小程序。
-
- 2.拿到创建好的APPID。
-
- 3.需要开通相关能力,如果支付能力,签约能力等,管理 - > 能力管理页面
-
- 4.在开发设置拿到支付网关地址,设置公钥私钥,白名单信息等
-
- 5.使用支付宝开放平台开发助手,生成公钥私钥
-
- 6.接口内容,可加密可不加密都行,
-
- 7.下载服务端sdk地址:概述 | 网页&移动应用 我用的是通用版,把依赖放到pom里就可以了
-
- 8.根据 “统一收单交易创建接口” 接口写就行了
开发流程:
- 1、用户在小程序上点击 "充值" 按钮,调用后端服务接口,服务接口调用支付网关,
- 2、支付网关根据小程序的appid和支付宝公钥、小程序私钥调用支付宝java通用版SDK(小程序需要一个支付宝的uuid就是三方登录时获取的支付宝user_id),获取到tradeNo支付宝交易流水号,将流水号返给后台服务,然后后台服务返给小程序,
- 3、小程序根据流水号去唤起支付宝收银台,完成请求操作后,
- 4、支付宝服务端会异步通知支付网关,然后支付网关通知服务后台是否支付成功了,
- 5、然后做自己的业务逻辑处理,更新表呀,发送通知呀等操作
SDK部分代码:
请求:
- AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
- AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
- request.setNotifyUrl("");
- JSONObject bizContent = new JSONObject();
- bizContent.put("out_trade_no", "20210817010101003");
- bizContent.put("total_amount", 0.01);
- bizContent.put("subject", "测试商品");
- bizContent.put("buyer_id", "2088102146225135");
- bizContent.put("timeout_express", "10m");
-
- 商品明细信息,按需传入
- //JSONArray goodsDetail = new JSONArray();
- //JSONObject goods1 = new JSONObject();
- //goods1.put("goods_id", "goodsNo1");
- //goods1.put("goods_name", "子商品1");
- //goods1.put("quantity", 1);
- //goods1.put("price", 0.01);
- //goodsDetail.add(goods1);
- //bizContent.put("goods_detail", goodsDetail);
-
- 扩展信息,按需传入
- //JSONObject extendParams = new JSONObject();
- //extendParams.put("sys_service_provider_id", "2088511833207846");
- //bizContent.put("extend_params", extendParams);
-
- 结算信息,按需传入
- //JSONObject settleInfo = new JSONObject();
- //JSONArray settleDetailInfos = new JSONArray();
- //JSONObject settleDetail = new JSONObject();
- //settleDetail.put("trans_in_type", "defaultSettle");
- //settleDetail.put("amount", 0.01);
- //settleDetailInfos.add(settleDetail);
- //settleInfo.put("settle_detail_infos", settleDetailInfos);
- //bizContent.put("settle_info", settleInfo);
-
- 二级商户信息,按需传入
- //JSONObject subMerchant = new JSONObject();
- //subMerchant.put("merchant_id", "2088000603999128");
- //bizContent.put("sub_merchant", subMerchant);
-
- 业务参数信息,按需传入
- //JSONObject businessParams = new JSONObject();
- //businessParams.put("busi_params_key", "busiParamsValue");
- //bizContent.put("business_params", businessParams);
-
- 营销信息,按需传入
- //JSONObject promoParams = new JSONObject();
- //promoParams.put("promo_params_key", "promoParamsValue");
- //bizContent.put("promo_params", promoParams);
-
- request.setBizContent(bizContent.toString());
- AlipayTradeCreateResponse response = alipayClient.execute(request);
- if(response.isSuccess()){
- System.out.println("调用成功");
- } else {
- System.out.println("调用失败");
- }
响应:
- {
- "alipay_trade_create_response": {
- "code": "10000",
- "msg": "Success",
- "out_trade_no": "20150423001001",
- "trade_no": "2015042321001004720200028594"
- },
- "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
- }
这里说一下支付宝和支付宝小程序的区别,支付宝是将会话id返给前端,小程序是将tradeNo交易流水号返给前端,在有就是支付宝小程序需要一个用户自己的uuid(三方登录时获取的支付宝user_id),其他基本一样。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。