微信小程式支付接入實戰

天塵·雲煙發表於2019-01-29

1. 微信小程式支付接入實戰

1.1. 需求

  最近接到一個小程式微信支付的需求,需要我寫後臺支援,本著能不自己寫就不自己寫的cv原則,在網上找到了些第三方程式,經過嘗試後,最後決定了這不要臉作者的這款

1.2. 使用第三方sdk

https://github.com/Pay-Group/best-pay-sdk

不要臉的作者,自稱最好用的sdk,demo地址:

https://github.com/Pay-Group/best-pay-demo

1.3. 專案改造

  1. 通過檢視該專案的readme,我們可以知道,這個專案表面上只支援微信公眾號支付和h5支付,我下載demo體驗了一下,發現封裝的還是可以的。
  2. 通過檢視微信支付官網 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3 ,我們知道小程式的支付流程,在後臺執行過程上和上面兩個都是類似的,只要小小的改動就可以支援小程式支付了
    小程式流程圖
  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;
}
  1. 這裡返回的資訊都是簽過名可以由微信小程式直接呼叫的,可以看到改動真的很小,只是把跳轉網頁改成了返回json資料
  2. 接下來就是微信小程式的事了,直接參考官網的就行

相關文章