收藏
回答

微信支付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"

}

回答关注问题邀请回答
收藏

5 个回答

  • 丑男
    丑男
    2021-11-14

    楼主解决了吗 我跟你的问题一模一样

    2021-11-14
    有用
    回复
  • 姚小丹
    姚小丹
    2021-06-24

    我和你的问题是一摸一样的 现在还不知道是什么问题 也是boday哪里解析不全

    2021-06-24
    有用
    回复
  • 左先生
    左先生
    2020-07-21

    我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

    2020-07-21
    有用
    回复
  • Mr.🐶
    Mr.🐶
    2020-05-23

    楼主解决了吗

    2020-05-23
    有用
    回复
  • 微信支付技术助手8
    微信支付技术助手8
    2020-05-14

    V3验证签名工具:

    链接:https://pan.baidu.com/s/1ixOAnYyZVW13dFr0jWVpvw 

    提取码:wujv 

    2020-05-14
    有用
    回复 1
    • 姚小丹
      姚小丹
      2021-06-24
      我使用上面发的工具都已经验证签名通过了 但是最终请求还是显示The remote server returned an error: (401) Unauthorized.
      2021-06-24
      回复
登录 后发表内容