1. 微信小程序支付接入實戰
1.1. 需求
最近接到一個小程序微信支付的需求,需要我寫后台支持,本着能不自己寫就不自己寫的cv原則,在網上找到了些第三方程序,經過嘗試后,最后決定了這不要臉作者的這款
1.2. 使用第三方sdk
不要臉的作者,自稱最好用的sdk,demo地址:
1.3. 項目改造
- 通過查看該項目的readme,我們可以知道,這個項目表面上只支持微信公眾號支付和h5支付,我下載demo體驗了一下,發現封裝的還是可以的。
- 通過查看微信支付官網 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3 ,我們知道小程序的支付流程,在后台執行過程上和上面兩個都是類似的,只要小小的改動就可以支持小程序支付了
- 在demo中controller類實現了統一下單API,和回調支付結果API,小程序唯一的區別就是統一下單API直接由小程序調用返回預付單信息,再由小程序去調用
1.4. 修改后代碼
/**
* 發起支付
*/
@GetMapping(value = "/pay")
@ResponseBody
public PayResponse pay(@RequestParam("openid") String openid,
@RequestParam("amount") Double amount,
Map<String, Object> map) {
PayRequest request = new PayRequest();
Random random = new Random();
//支付請求參數
request.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);
request.setOrderId(String.valueOf(random.nextInt(1000000000)));
request.setOrderAmount(amount);
request.setOrderName("xxx費");
request.setOpenid(openid);
log.info("【發起支付】request={}", JsonUtil.toJson(request));
PayResponse payResponse = bestPayService.pay(request);
log.info("【發起支付】response={}", JsonUtil.toJson(payResponse));
return payResponse;
}
- 這里返回的信息都是簽過名可以由微信小程序直接調用的,可以看到改動真的很小,只是把跳轉網頁改成了返回json數據
- 接下來就是微信小程序的事了,直接參考官網的就行