你好,请问你们的问题解决了吗?我也遇到了这个问题,一筹莫展....
APP支付调起微信支付返回-1各位大佬,在接入微信支付的时候,调用统一下单接口能正常返回数据,在返回数据的时候服务器这边对返回的字段进行从新签名,但当客户端去发起支付的时候,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 忘有经验的大佬,官方指导下
2019-11-21