目前消息回调函数输出值为空,是否是因为微信返回数据存在加密,麻烦有懂的大佬给小弟指点一下
前端代码(uniapp)
wx.requestPayment({
appId:appid,
timeStamp:timeStamp,
nonceStr: nonce_str,
package: packageValue,
signType: 'MD5',
paySign:sign,
success: function (resp) {
console.log('success:' + JSON.stringify(resp));
uni.showToast({
title: '支付成功',
icon: 'none',
duration: 2000
});
const params = {
outTradeNo: this.toClass.orderId + '',
};
getwxorder(params).then(orderStatus => {
console.log(orderStatus);
setTimeout(function () {
uni.navigateTo({
url: '/pages/course/order?item=2'
});
}, 0);
});
},
'fail': function (resp) {
console.log('fail:' + JSON.stringify(resp));
uni.showToast({
title: '支付失败',
icon: 'none'
});
},
'complete': function (resp) {
console.log('complete:' + JSON.stringify(resp));
// 在此处执行支付完成后的回调操作
}
});
} else {
console.log('Failed to get payment parameters from the server.');
}
输出:
以下是后端回调地址代码(node.js)
exports.notify = (req, res) => {
console.log(req.body);
var jsonData = req.body.xml;
if (jsonData.return_code == 'SUCCESS') {
var key = "我的key";
console.log(jsonData);
if (true) { //sign == jsonData.sign
console.log('yes')
// 在这里添加数据到数据库
//json转xml
var json2Xml = function (json) {
let _xml = '';
Object.keys(json).map((key) => {
_xml += `<${key}>${json[key]}</${key}>`
})
return `<xml>${_xml}</xml>`;
}
var sendData = {
return_code: 'SUCCESS',
return_msg: 'OK'
}
res.end(json2Xml(sendData));
}
}
};
你在微信网页内使用小程序的支付API ?
微信内网页支付参考:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_4.shtml
3版本所特有的,在v2版本的加密方式中仅有MD5和HMAC-SHA256,其中HMAC-SHA256采用商户key对数据进行的加密,因此我依旧无法成功支付。不知道v2版本下是否有相关问题的解决方案,若还是不行我只能重头至尾重新尝试一下v3版本的支付。谢谢!!!