收藏
回答

请问调起微信支付返回-1如何解决?

按照调起支付接口要求传入要求参数,结果返回 error -1

   查找网上的解决办法:

  1.  重置商户APIkey(重置数次后未解决)

  2. 二次签名需要重新生成,不能使用统一下单返回的,随机字符串需要使用统一下单返回的,确保appid商户id正确,时间戳10位字符串(仔细检查未能解决)

真机调试发现报错包名与平台不一致对比发现真机调试的包名与平台上填写的包名确实不相同,论坛中查找询问后发现不可以在真机测试,需要打包后调试打包后调试报错签名不一致(二次签名验证时签名不一致),未能解决

wxPay:function() {
var appid = "XXXXX";
var attach = "支付测试";
var body = "XXXXX"// 商品简单描述 D
var mch_id= "XXXX"// 商户号,申请微信支付,腾讯给的商户号
var nonce_str = '5K8264ILTKCH16CQ25SI8ZNM1'// 随机字符串
var out_trade_no = "" +new Date().getTime() + Math.floor( Math.random() * 10 ); //商户订单号
var total_fee = 10//支付金额,单位:分
var sign = "";
var notify_url = "http://www.weixin.qq.com/wxpay/pay.php"; //异步接收微信支付结果通知的回调地址
var trade_type = "APP"// 交易类型
var client_ip = '10.0.0.24';
var stringA = `appid=${appid}&attach=${attach}&body=${body}&mch_id=${mch_id}&nonce_str=${nonce_str}¬ify_url=${notify_url}&out_trade_no=${out_trade_no}&spbill_create_ip=${client_ip}&total_fee=${total_fee}&trade_type=${trade_type}`;
var stringSignTemp = stringA+"&key=XXXXX"//拼接上商户平台API密钥key
sign = md5(stringSignTemp).toUpperCase();
console.log(sign);
var xml = `<xml>
<appid>${appid}</appid>
<attach>${attach}</attach>
<body>${body}</body>
<mch_id>${mch_id}</mch_id>
<nonce_str>${nonce_str}</nonce_str>
<notify_url>${notify_url}</notify_url>
<out_trade_no>${out_trade_no}</out_trade_no>
<spbill_create_ip>${client_ip}</spbill_create_ip>
<total_fee>${total_fee}</total_fee>
<trade_type>${trade_type}</trade_type>  
<sign>${sign}</sign>
</xml>`;
uni.request({
data: xml,
method:"POST",
header : {'content-type':'application/x-www-form-urlencoded'},
success: function (res) {
var resData = res.data
console.log(resData);
var dataArr = resData.match(/[A-Za-z0-9]{10,}/g);
var prepayid = dataArr[4];
// var sign = dataArr[3];
var noncestr = dataArr[2];
console.log(prepayid,noncestr);
var stringA = `appid=${appid}&attach=${attach}&body=${body}&mch_id=${mch_id}&nonce_str=${noncestr}¬ify_url=${notify_url}&out_trade_no=${out_trade_no}&spbill_create_ip=${client_ip}&total_fee=${total_fee}&trade_type=${trade_type}`;
var stringSignTemp = stringA+"&key=XXXXX"//拼接上商户平台API密钥key
sign = md5(stringSignTemp).toUpperCase();
console.log(sign);
var userData = {
appid:'XXX',
partnerid:'XXX',
prepayid:prepayid,
package:'Sign=WXPay',
noncestr:noncestr,
timestamp:''+parseInt(new Date().getTime()/1000),
sign:sign
}
console.log(''+parseInt(new Date().getTime()/1000));
uni.requestPayment({
provider: 'wxpay',
orderInfo: userData,
success(res) {
console.log(res);
},
fail(err) {
console.log(err);
}
})
}
});
 
}



最后一次编辑于  11-15
回答关注问题邀请回答
收藏