在使用企业微信发红包api接口进行测试的时候,做了各种尝试依然报报签名错误,应该往哪个方向排查呢?
接口api地址:https://developer.work.weixin.qq.com/document/path/90275
接口测试,请求参数xml如下:
接口返回结果:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[签名错误]]></return_msg>
<result_code><![CDATA[FAIL]]></result_code>
<err_code><![CDATA[SIGN_ERROR]]></err_code>
<err_code_des><![CDATA[签名错误]]></err_code_des>
</xml>
参与企业签名的参数和参数顺序
参与支付签名的参数
----------------------------
排查过程,已经对照企业微信“发企业红包”接口对过很多遍,也搜索了别人之前的踩坑经历都做了对比排查
1、使用签名检查工具(http://mch.weixin.qq.com/wiki/tools/signverify/)校验签名算法是否有误。已排查过确认无误,程序签名结果与网页检查工具签名结果一致
2,确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题),已排查过,同一商户号调用其它接口是成功的,很多地方都在使用这个密钥,也不敢去轻易修改测试
3,确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查),已排查过无误
4,确认参数的大小写,参数名与接口文档一致。确认过,一致无误。
5,签名原串的参数值使用原始值,不需要encode。确认过无误
6,接口需要使用UTF-8编码。确认过是用的UTF-8编码,为了防止编码问题,请求参数里面没带中文一样签名错误
7、排查参数值,
wxappid使用的企业id,
mch_id商户号也确认过,
参与企业签名的agentid和密钥Secret,分别用了”企业支付“应用的agentid和Secret和自己创建的测试应用的agentid和Secret,依然报签名错误
参与支付签名的密钥,同一商户号调用其它接口是成功的,可以排除这里的问题。