https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3 现金发红包接口
已按照https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1 手动填入参数
#2.连接商户key:
act_name=3333321ss&client_ip=118.89.65.223&mch_billno=a0000000000000000001&mch_id=1529243621&nonce_str=905Qh0J59d69JjDtD7QkyRAm576kh5hU&re_openid=oiW0l03-60UfHJfo0olLt3wOLb0E&remark=111&remark=222dddd&send_name=111&sign_type=HMAC-SHA256&total_amount=100&total_num=1&wishing=2222&wxappid=wx7be0736b916a50f1&key=aVumz6nk2w9JE2HXwl5fwCV0711J5M9Q
sign=72BA838444C5CEF4225371AF0352BFE3EF59039C83A328D7B0E3FB5A23724CFD
得到最终XML结构
<xml> <act_name><![CDATA[3333321ss]]></act_name> <client_ip><![CDATA[118.89.65.223]]></client_ip> <mch_billno><![CDATA[a0000000000000000001]]></mch_billno> <mch_id><![CDATA[1529243621]]></mch_id> <nonce_str><![CDATA[905Qh0J59d69JjDtD7QkyRAm576kh5hU]]></nonce_str> <re_openid><![CDATA[oiW0l03-60UfHJfo0olLt3wOLb0E]]></re_openid> <remark><![CDATA[111]]></remark> <remark><![CDATA[222dddd]]></remark> <send_name><![CDATA[111]]></send_name> <sign_type><![CDATA[HMAC-SHA256]]></sign_type> <total_amount><![CDATA[100]]></total_amount> <total_num><![CDATA[1]]></total_num> <wishing><![CDATA[2222]]></wishing> <wxappid><![CDATA[wx7be0736b916a50f1]]></wxappid> <sign>72BA838444C5CEF4225371AF0352BFE3EF59039C83A328D7B0E3FB5A23724CFD</sign></xml>
但是把该XML发送至接口提示签名错误.
已使用utf-8编码..测试MD5签名方式已成功.HMAC-SHA256失败
您好,应该是以下问题导致的:
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/