【服务商模式】现金红包-发放普通红包接口返回签名错误
参数(re_openid已做模糊处理)
<xml>
<msgappid>wxb54fa7ff735ec8c1msgappid>
<nonce_str>kE06mM1HtR5yAlIY4LPMB7fG50WBm6QPnonce_str>
<act_name>refundactact_name>
<sign>9AD76C6F5F06FC5E45ECA776275DB253sign>
<remark>remarkremark>
<mch_id>1268923501mch_id>
<sub_mch_id>1270855201sub_mch_id>
<wishing>thankswishing>
<wxappid>wxb54fa7ff735ec8c1wxappid>
<mch_billno>1597288536182mch_billno>
<re_openid>oabcdEFG_lb-xAbCdEfG0re_openid>
<total_amount>1total_amount>
<send_name>refundsend_name>
<total_num>1total_num>
<client_ip>115.199.96.146client_ip>
<sign_type>MD5sign_type>
xml>
返回值
{re_openid=oabcdEFG_lb-xAbCdEfG0, total_amount=1, err_code=SIGN_ERROR, return_msg=签名错误, result_code=FAIL, err_code_des=签名错误, mch_id=1268923501, return_code=SUCCESS, wxappid=wxb54fa7ff735ec8c1, mch_billno=1597288023009}
这个服务商的appid以及密钥key都是一直在使用,调用下单以及退款接口都无异常,证书也没有问题。同样的appid,mch_id和密钥,先调用获取openid没问题,再调用发红包就报签名错误。代码使用的微信SDK。而且签名反复确认过。参数签名前排序过,空值已去掉,请求内容不包含中文,且使用在线签名验证工具验证签名正常。
这个接口与之前接口唯一的区别就是,之前传appid,mch_id,使用服务商密钥签名。现在照接口文档要求传wxappid,mch_id,同样使用服务商密钥签名。有什么问题吗。
小程序是可以用关联的微信支付商户号发送现金红包的,有两种方式:1、可以调用小程序红包接口,但是只适用于特定的场景值,一般为扫码领取;2、可以调用企业付款到零钱接口变通一下;具体可以参考这篇文章https://www.big4ever.com/article/6
您好,应该是以下问题导致的:
1、没有使用商户平台设置的商户API密钥进行加密(有可能之前设置过密钥,后来被修改了,没有使用新的密钥进行加密)
2、加密前没有按照文档进行参数排序(可参考文档)
3、把值为空的参数也进行了签名。可到(http://mch.weixin.qq.com/wiki/tools/signverify/ )验证。
4、如果以上3步都没有问题,把请求串中(post的数据)里面中文都去掉,换成英文,试下,看看是否是编码问题。(post的数据要求是utf8)
请按照以下的几点进行排查:
1、到商户平台重新设置新的密钥后重试
2、检查请求参数把空格去掉重试
3、 中文不需要进行encode,使用CDATA
4、 按文档要求生成签名后再重试
在线签名验证工具:http://mch.weixin.qq.com/wiki/tools/signverify/