本人的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
留念!!
本文记录了一次解决微信支付API中红包发放时签名错误的过程,通过调整参数排序和检查编码方式最终解决了问题。
873

被折叠的 条评论
为什么被折叠?



