HMAC-SHA256签名错误?

小游戏 企业微信 微信支付 小程序 文章 2020-07-30 21:11 721 0 全屏看文

AI助手支持GPT4.0

HMAC-SHA256签名错误?

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失败



https://pay.weixin.qq.com/wiki/doc/api/tools/cash_ coupon.php?chapter=13_ 4 & index = 3 cash red packet interface has been implemented according to https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_ 2. Connect merchant 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 to get the final XML structure < XML > < act_ name> < wishing > [CDATA [2222]]> < / wishing > < wxappid > [CDATA [wx7be0736b916a50f1]]> < / wxappid > < sign > 72ba838444c5cef4225371af0352bfe3ef59039c83a328d7b0e3fb5a23724cfd < / sign > < / XML > but sending the XML to the interface indicates that the signature error is wrong. UTF-8 encoding is used. The MD5 signature method has been tested successfully. Hmac-sha256 failed

回答:

支付技术助手8:

您好,应该是以下问题导致的:

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/

有梦想不睡觉:1.密钥已重置
2.排序正确
3.无空参
4.无中文
5.http://mch.weixin.qq.com/wiki/tools/signverify/ 只能使用MD5签名.
支付技术助手8:1. 到商户平台重新设置新的密钥后重试
2. 检查请求参数把空格去掉重试
3. 中文不需要进行encode,使用CDATA
4. 按文档要求生成签名后再重试
在线签名验证工具:http://mch.weixin.qq.com/wiki/tools/signverify/
MD5和HMAC-SHA256都是支持的。
有梦想不睡觉:1.今日已重置五次密钥
2.参数无空格.
3.无中文.
4.http://mch.weixin.qq.com/wiki/tools/signverify/  第三步只显示MD5 ,已添加参数sign_type=HMAC-SHA256
5.https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1 使用该工具生成XML 提示签名错误
支付技术助手8:你好,这边建议您添加一下wepayTS8(备注:微信社区XXX问题)。提供一下以下信息。
-请求的具体API接口(提供文档地址和请求的URL):
- 问题发生时间【必填】:
- 商户号【 必填】:
- 商户订单号【 必填】:
- 相关报错信息文案【 必填】:
- 问题截图或视频【 必填】:
-完整的请求和返回参数以及单号【 必填】:
有梦想不睡觉:你好,早上已添加,但未通过.,

-EOF-

AI助手支持GPT4.0