小程序微信支付js编码问题
发布于 6 年前 作者 pingchang 6920 次浏览 来自 问答

以下:

/**以下支付业务处理 */

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)这段代码还有其他什么遗漏、错误的地方?

7 回复

timeStamp 的类型应该是 string,写错了。

感觉你解释的很仔细了,可能因为我以前没有接触支付这块,所以还是不能很好理解,我再看看,谢谢

这些是你的后端需要和微信通信时传递的字段。

然后根据这个签名算法: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3 来获取小程序发起支付所需要的 paySign 。

至于 prepay_id,实际上就是业务方后端在向微信下支付订单时获取的信息,具体看微信支付的文档吧…

建议是,nonceStr 和 timeStamp 都在服务端生成。创建订单(获取 prepay_id)和获取支付签名(获取 paySign)解耦。

不知道为什么,发布问题的时候很认真的缩进排版,结果发不上来还是这样;

主要的不理解的地方是:红色第(1)点,url、prepayId、paySign不知道是怎么形成的。

谢谢

把缩进搞一搞吧,你这样贴东西没人愿意看的。把业务逻辑都剥开,

timeStamp 的类型应该是 number,而不是 Date 的实例。timeStamp,nonceStr 应该是服务器的返回值,你这里不对。

回到顶部