收藏
回答

sandbox获取验签密钥报错

我打算使用sandbox进行支付测试,但是在获取验签密钥时,一直报“获取沙箱密钥失败,确认交易密钥是否正确”,请求的代码如下

```

url = "https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey"
response = requests.post(url, data.encode('UTF-8'), headers={'Content-Type': 'application/xml'})

```

其中我试过在获取签名时,添加原始支付密钥,或者不添加原始支付密钥都是报这个错。data如下:

```

'<xml><appid>xxxxxx</appid><mch_id>xxxxxx</mch_id><nonce_str>xxxxxx</nonce_str><sign>9B184C18D1F65AD872D9C2457D97209C</sign></xml>'

```


麻烦哪位帮忙解答一下。

最后一次编辑于  02-22  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

3 个回答

  • 刘Pai
    刘Pai
    02-22

    其中我生成签名的时候只用了appid,mch_id, nonce_str,还有再拼接上支付密钥。不知道我哪里有问题

    02-22
    赞同
    回复
  • 微信支付技术助手
    微信支付技术助手
    02-22

    原因分析:

    签名出错,参考安全规范

    POST的数据里面没有商户相关的API_KEY, 但是凡是调用接口的签名, 在StringA按ASCII码拼接完请求参数之后,都需要在结尾加上key值,该值在微信商户平台可查到.

    错误StringA:


    stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA"; 


    正确StringA:


    stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA&key=xxxxxxxxxxxxxx"; 


    然后再将StringA做MD5或sha256加密运算.

    得到正确返回sandbox_signkey, 可以此做后续沙盒测试.


    02-22
    赞同
    回复
  • Mine
    Mine
    04-08

     楼主解决了吗

    04-08
    赞同
    回复