微信支付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"
}
楼主解决了吗 我跟你的问题一模一样
我和你的问题是一摸一样的 现在还不知道是什么问题 也是boday哪里解析不全
我v3代金券有问题,可以问问你么
/** * 生成签名 */ protected function getSign() { $url_parts = parse_url($this->url); //链接 $canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : "")); $this->timestamp = time(); $this->nonce_str = createKey(); //随机字符串 $message = "{$this->method}\n" . $canonical_url . "\n" . $this->timestamp . "\n" . $this->nonce_str . "\n" . $this->body . "\n"; openssl_sign($message, $raw_sign, openssl_get_privatekey(file_get_contents($this->apiclient_cert)), 'sha256WithRSAEncryption'); $this->sign = base64_encode($raw_sign); }不知道这个raw_sign是什么意思,就是没生成签名this->sign
b
楼主解决了吗
V3验证签名工具:
链接:https://pan.baidu.com/s/1ixOAnYyZVW13dFr0jWVpvw
提取码:wujv