小程式支付詳解+原始碼(客戶端+服務端)
阿新 • • 發佈:2019-01-02
今天剛將小程式的支付調通,和大家分享下(坑)
包括小程式端、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