各位大佬,在接入微信支付的时候,调用统一下单接口能正常返回数据,在返回数据的时候服务器这边对返回的字段进行从新签名,但当客户端去发起支付的时候,SendReq返回的是true。搜了下社区大家遇到的问题,也尝试了一遍还是不行。
返回重新签名的代码:
/// <summary> /// 获取支付信息 /// </summary> /// <param name="prepay_id"></param> /// <returns></returns> private string GetPayReqInfo( string prepay_id, string nonce_str) { //随机字符串 //string nonce_str = new Random().Next(0, 99999).ToString(); //时间戳 string timeStamp = MFDSAUtil.GetTimestamp().ToString(); string package = "Sign=WXPay" ; string temp = string .Format( "appid={0}&noncestr={1}&package={2}&partnerid={3}&prepayid={4}×tamp={5}&key={6}" , appid,nonce_str,package,mch_id,prepay_id,timeStamp,payKey); //签名 string tsign = Utils.MD5Encrypt32(temp).ToUpper(); //签名MD5大写形式 LitJson.JsonData data = new LitJson.JsonData(); data[ "partnerId" ] = mch_id; //商户号 data[ "prepayId" ] = prepay_id; //统一下单编号 data[ "nonceStr" ] = nonce_str; //随机字符串 data[ "timeStamp" ] = timeStamp; //时间戳 data[ "package" ] = package; data[ "sign" ] = tsign; //签名 return LitJson.JsonMapper.ToJson(data); } |
然后我检查了应用签名跟appid,还有商户id都是没有问题,但还是不行。有几个疑问
统一下单返回数据中有sign字段,调起微信支付是直接用这个签名吗
如果1的问题不成立,那么返回数据中的nonce_str字段值是要参与重新签名,还是使用发起统一下单请求的nonce_str值,或者是重新随机
参与重新签名的字段是否是这六个:appid,noncestr,package,partnerid,prepayid,timestamp,key
忘有经验的大佬,官方指导下
你好,请问你们的问题解决了吗?我也遇到了这个问题,一筹莫展....
我也碰到小程序支付问题了,但我是提示 {err_code: "-1", err_desc: "调用支付JSAPI缺少参数: total_fee", errMsg: "requestPayment:fail"}
你知道是啥原因吗?
这个是我打印的值?
你上面的问题 sign值是要重新签名的,nonce_str 是随机的。
参与签名的字段 有官方文档:
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3
感谢回复,我是App的支付,跟小程序的支付重签的参数还是有区别的,这个noncestr字段我也尝试自己随机和用统一下单接口返回的noncestr参与重签,也还是不行
我看你的错误,应该是你在请求的时候缺少这个total_fee总金额值,也就是要支付的金额总价格。
小程序 wx.requestPayment 这个是不用带金额的,金额在统一下单那边就带了的。所以很郁闷。 抱歉没注意到你是app支付
https://blog.csdn.net/chenan0408/article/details/79043615 百度了一个App支付返回-1的,你看看有没有帮助
好的,谢谢,看了下,也试过,还不行,有点尴尬
你好,你们有么有遇到过在商户平台更换了应用签名之后,调用支付一直返回-1的问题呢。望解答!谢谢