1. 程式人生 > >小程式支付詳解+原始碼(客戶端+服務端)

小程式支付詳解+原始碼(客戶端+服務端)

feature.jpg

今天剛將小程式的支付調通,和大家分享下(坑)

包括小程式端、java伺服器端

和其他方式的微信支付方式區別不大,也都需要經過統一下單、支付結果通知(回撥),具體流程如下:

1、小程式內呼叫登入介面,獲取到使用者的openid,api參見公共api【小程式登入API

2、商戶server呼叫支付統一下單,api參見公共api【統一下單API

3、商戶server呼叫再次簽名,api參見公共api【再次簽名

4、商戶server接收支付通知,api參見公共api【支付結果通知API

5、商戶server查詢支付結果,api參見公共api【

查詢訂單API

下面結合原始碼詳解下流程:

第一步: 獲取客戶的openid

統一下單中需要用到openid

小程式:

首先需要呼叫微信登入介面獲取使用者的code:

1.var that = this; 2.wx.login({ 3.success: function(res) { 4.that.getOpenId(res.code); 5.} 6.});

通過code獲取openid:

01.//獲取openid 02.getOpenId: function(code){ 03.var that = this
;
04.wx.request({  05.url: 'https://www.see-source.com/weixinpay/GetOpenId' 06.method: 'POST', 07.header: { 08.'content-type''application/x-www-form-urlencoded' 09.}, 10.data: {'code':code}, 11.success: function(res) { 12.var openId = res.data.openid; 13.that.xiadan(openId); 14.} 15.}) 16.}

java:

1.String code = request.getParameter("code"); 2.HttpGet httpGet = new HttpGet("https://api.weixin.qq.com/sns/jscode2session?appid="+Configure.getAppID()+"&secret="+Configure.getSecret()+"&js_code="+code+"&grant_type=authorization_code"); 3.//設定請求器的配置 4.HttpClient httpClient = HttpClients.createDefault(); 5.HttpResponse res = httpClient.execute(httpGet); 6.HttpEntity entity = res.getEntity(); 7.String result = EntityUtils.toString(entity, "UTF-8"); 8.response.getWriter().append(result);

第二步:統一下單

呼叫微信的統一下單介面,返回預訂單id(prepay_id)

小程式:

01.var that = this