微信企业红包开发签名一样一直提示签名错误的解决办法

本文记录了一次解决微信支付API中红包发放时签名错误的过程,通过调整参数排序和检查编码方式最终解决了问题。

本人的XML就不贴了,涉及一些敏感信息,按照签名算法生成的签名和微信官方提供签名平台生成的签名是一样一样的。

微信官方的签名验证平台: https://pay.weixin.qq.com/wiki/tools/signverify/ 

但测试发红包的时候,就一直提示签名错误!

按照官方的说明:

1、没有使用商户平台设置的商户API密钥进行加密(有可能之前设置过密钥,后来被修改了,没有使用新的密钥进行加密)。
2、加密前没有按照文档进行参数排序(可参考文档)
3、把值为空的参数也进行了签名。可到(http://mch.weixin.qq.com/wiki/tools/signverify/ )验证。
4、如果以上3步都没有问题,把请求串中(post的数据)里面中文都去掉,换成英文,试下,看看是否是编码问题。(post的数据要求是utf8)

有以上4种可能,我曾经还真遇到过空字符串折腾我到深夜的情况。(看来文档还是要好好看看呀)不过上次的问题是我的签名和官方验证的不一样。但这样不同,我的签名和官方验证的签名是一样的。依然签名错误

后台,,,的后台,,,终于在论坛上试了试这个方法解决了问题。

public String createXml() {
String sb = "<xml>";
sb += "<act_name>"+act_name+"</act_name>";
sb += "<client_ip>"+client_ip+"</client_ip>";
sb += "<mch_billno>"+mch_billno+"</mch_billno>";
sb += "<mch_id>"+mch_id+"</mch_id>";
sb += "<nonce_str>"+nonce_str+"</nonce_str>";
sb += "<re_openid>"+re_openid+"</re_openid>";
sb += "<remark>"+remark+"</remark>";
sb += "<send_name>"+send_name+"</send_name>";
sb += "<total_amount>"+total_amount+"</total_amount>";
sb += "<total_num>"+total_num+"</total_num>";
sb += "<wishing>"+wishing+"</wishing>";
sb += "<wxappid>"+wxappid+"</wxappid>";
sb += "<sign>"+sign+"</sign>";
sb += "</xml>";
return sb;
}

这是一段JVAV的代码,我参考这位的把顺序换了换,TMD竟然好了!!不是有排序吗?狗日的.....

贴个链接吧:http://bbs.csdn.net/topics/391866698#post-400701437

留念!!

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值