以下:
/**以下支付业务处理 */
daShang: function (e) {
console.log(e);
var daShangJinE = e.target.dataset.jinE;//金额
var bookingNO = "";//订单号
wx.request({
url: '',//获取prepayId 、paySign 的请求url (1)这里的理解正确么,正确的话,prepayId、paySign是怎么生成的?
method: 'POST',
data: {
daShangJinE: daShangJinE,
bookingNO: bookingNO,
openId: ''
},
header: { 'content-type': 'application/json' },
success: function (res) {
wx.requestPayment({//调用支付API
timeStamp: new Date(),//当前时间
nonceStr: '',//随机字符串
package: 'prepay_id=' + res.data.prepay_id,//统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*
signType: 'MD5',
paySign: res.data.paySignjs,
success: function (res) {
console.log("success: " + JSON.stringify(res));
},
fail: function (err) {
console.log(err);
}
})
},
fail: function (err) {
console.log("fail: " + JSON.stringify(err));
}
})
}
(2)这段代码还有其他什么遗漏、错误的地方?
感觉你解释的很仔细了,可能因为我以前没有接触支付这块,所以还是不能很好理解,我再看看,谢谢
建议是,nonceStr 和 timeStamp 都在服务端生成。创建订单(获取 prepay_id)和获取支付签名(获取 paySign)解耦。
这些是你的后端需要和微信通信时传递的字段。
然后根据这个签名算法: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3 来获取小程序发起支付所需要的 paySign 。
至于 prepay_id,实际上就是业务方后端在向微信下支付订单时获取的信息,具体看微信支付的文档吧...
不知道为什么,发布问题的时候很认真的缩进排版,结果发不上来还是这样;
主要的不理解的地方是:红色第(1)点,url、prepayId、paySign不知道是怎么形成的。
谢谢
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3
timeStamp 的类型应该是 string,写错了。
把缩进搞一搞吧,你这样贴东西没人愿意看的。把业务逻辑都剥开,
timeStamp 的类型应该是 number,而不是 Date 的实例。timeStamp,nonceStr 应该是服务器的返回值,你这里不对。