已解决; 原因如下: 支付接口的判断与其他接口逻辑不太一样;不要只关注签名,关注下传参。 1.严格校验参数,多一个参数或者少一个参数都会导致微信生成的签名与你的签名不一致,导致验签失败; 2.参数中的数值尽量保证其正确性,因为不正确的参数也会导致签名失败,这就是坑爹的一点了,因为参数不对,但是报签名错误; 从上面两点进行排查基本上可以解决v3版接口的签名问题;
api v3 合单支付接口验签失败,请检查签名?get请求的接口签名通过,post请求一直提示签名错误,我就纳闷了 [图片] 1.签名的私钥和公钥使用openssl配对校验过,没问题; 2.使用微信官方提供的签名工具进行签名,结果一致; 3.Authorization中的数据我一个一个的对比过,没有大小写问题,顺序都严格一致; 4.GET请求签名可通过,post不行,postman使用参数单独调取接口也失败的; 到底是什么问题啊?这问题也太莫名其妙了吧
2020-05-28楼主解决了吗
微信支付API V3一直提示SIGN_ERROR微信支付API V3一直提示SIGN_ERROR,之前在对接代金券业务没问题,现在想把支付切换到V3版本。 自认为报文组装,签名没有问题,只是有几个参数不太理解,不知是参数设置导致的问题。 以下三个mchid: 合单商户号 combine_mchid, 子单商户号 sub_orders[0].mchid 二级商户号 sub_orders[0].sub_mchid 因未涉及二级商户,固全部使用同一值,这样是否有问题。 以下两个商户订单号: 子单商户订单号 sub_orders[0].out_trade_no 合单商户订单号 combine_out_trade_no 因未涉及二级商户,子订单大小为1,固全部使用同一值(尝试过修改不一样),这样是否有问题。 烦请解答,谢谢。 Authorization WECHATPAY2-SHA256-RSA2048 mchid="157****371",nonce_str="8c3fae72b80146e28c2e76a050b90830",timestamp="1589354071",serial_no="555038*******DD480",signature="NcwH7MvF/7jsSt50g2cCnzHz0mHLeoU9heH6HCQ/czJPdCV1z+tet00DenIMYgMMCbuhUNf8W0l1xts5YP9TBLoNM5uLzlqG7Ik9bGk5HuDw0eWeKXPI03Gnz5FWbKIKn5MGi19XqfXgQv4QFlP4RCzT9sJRJxVGBXjMf5yFWfHSLhY/2zIOZMQGz3yBleJFy6hAsD1aGuoWKHSmFsdAxGBiKYwgx42pHt0qHlp+y8KvFwDcnRvELNUFhe06ARsCG3qisIa9fzDnOIvqOZMqFsRL/Pzebn50RqqxFp+P7lAxjcfw5xxYgDhkKmN39Qsqc6/7Fn9GrW+fUruIxWCJdQ==" 以下响应中的描述 :"sign_message_length": 660 这个具体是哪个长度? 请求响应: { "code": "SIGN_ERROR", "detail": { "detail": { "issue": "sign not match" }, "field": "signature", "location": "authorization", "sign_information": { "method": "POST", "sign_message_length": 660, "truncated_sign_message": "POST\n/v3/combine-transactions/jsapi\n158****071\n8c3fae72b80146e28c2e76a050b90830\n{\"time_e\n", "url": "/v3/combine-transactions/jsapi" } }, "message": "验签失败,请检查签名\t" }
2020-05-23