调用微信支付,我的支付一直返回支付验证签名失败,err_code是-1
不知道为什么,我用校验工具,都通过了,
具体的参数如下
appId:"wxc3c8295cb8a9c3d8"
nonceStr:"1530502592954"
packageValue:"prepay_id=wx02113632902836b58aa62a100937745017"
paySign:"F104C4A9D1FC32BF68557287937B38E3"
signType:"MD5"
timeStamp:"1530502592"
请问哪位能给我解答一下,这个问题么,真的好几天了,都调试不通过,微信就不能提供一个demo的程序么?好差的开发体验啊.
发现小程序的这个问题非常诡异
首先,我从服务器获取到了五个必须的字段,这五个字段,我如果直接在代码里面写死数据,可以直接调起支付,没有问题.
当我直接把拿到的数据赋值给wx.requestPayment,作为参数的时候,会出现错误,-1的情况就出现了.
我的具体代码如下
success: function(res) {
wx.showToast({
title: '创建订单成功',
duration: 1000,
mask: true
})
console.log(res);
var time = String(res.data.data.timeStamp)
var nonce = String(res.data.data.nonceStr)
var packageName = String(res.data.data.packageValue)
var pay = String(res.data.data.paySign)
var sign = String(res.data.data.signType)
console.log(time)
console.log(nonce)
console.log(packageName)
console.log(pay)
console.log(sign)
wx.requestPayment({
'timeStamp': time,
'nonceStr': nonce,
'package': packageName,
'signType': 'MD5',
'paySign': sign,
success: function(res) {
console.log("success");
console.log(res);
},
fail: function(res) {
console.log("fail");
console.log(res);
},
complete: function(res) {
console.log("complete");
console.log(res);
}
})
}
代码对应的控制台输出如下
{data: {…}, header: {…}, statusCode: 200, errMsg: "request:ok"}data: code: 0data: appId: "wxc3c8295cb8a9c3d8"nonceStr: "1530760287929"packageValue: "prepay_id=wx051111278716365a8b8d5f3e0644257598"paySign: "CE7713C270DF032CF76F34C7D67B08BA"signType: "MD5"timeStamp: "1530760287"__proto__: Objectdesc: "成功"__proto__: ObjecterrMsg: "request:ok"header: {Content-Type: "application/json;charset=UTF-8", Date: "Thu, 05 Jul 2018 03:11:27 GMT", Vary: "Accept-Encoding", Content-Length: "242"}statusCode: 200__proto__: Object
11:11:28.016 pay.js? [sm]:177 1530760287
11:11:28.017 pay.js? [sm]:178 1530760287929
11:11:28.018 pay.js? [sm]:179 prepay_id=wx051111278716365a8b8d5f3e0644257598
11:11:28.018 pay.js? [sm]:180 CE7713C270DF032CF76F34C7D67B08BA
11:11:28.019 pay.js? [sm]:181 MD5
11:11:37.733 pay.js? [sm]:196 fail
11:11:37.734 pay.js? [sm]:197 {err_code: "-1", err_desc: "支付验证签名失败", errMsg: "requestPayment:fail"}
但是控制台输出的数据,我直接写死代码就可以调用支付,这个微信的好奇怪啊,难道跟编码有关系么?
我如果直接复制控制台参数到代码里面,直接可以过,而且调用起来微信没有问题.
wx.requestPayment({
'timeStamp': '1530760287',
'nonceStr': '1530760287929',
'package': 'prepay_id=wx051111278716365a8b8d5f3e0644257598',
'signType': 'MD5',
'paySign': 'CE7713C270DF032CF76F34C7D67B08BA',
success: function(res) {
console.log("success");
console.log(res);
},
fail: function(res) {
console.log("fail");
console.log(res);
},
complete: function(res) {
console.log("complete");
console.log(res);
}
})
小程序的bug?我已经实验过好多次了,就是这样的.不知道原因.
我也出现了楼主一样的问题,不知道楼主是怎么解决的。
你好,社区也有类似反馈,可以搜索下,或者按照下面这个方向查一下
支付签名验证失败
https://developers.weixin.qq.com/blogdetail?action=get_post_info&docid=0002aef8298988dee4b6727c25d800&highline=%E6%94%AF%E4%BB%98%E9%AA%8C%E8%AF%81%E7%AD%BE%E5%90%8D%E5%A4%B1%E8%B4%A5
好的,社区的这个我也看过的,还在查问题,谢谢,墙裂建议官方出一个demo的程序,服务端和小程序端都给个demo
原因多方面 有 prepay_id 说明统一下单 没问题。 查下支付设置 安全域名是否匹配
问题原因找到了
不是你说的问题,数据全都对,应该是小程序的bug了.坑死人了.
层主,我也遇到了这样的问题,prepay_id有了,是不是可以说明我之前的步骤没问题?我就怕是我之前的签名和后面的签名有关系,前面设置出问题导致了后面出错
是怎样的bug,我也遇到这样的问题了
就是字段取错了,我的已经好了