这两天无数次在做微信支付的时候出现签名错误,都快崩溃了。明明我自己生成的签名是没得问题的。自己手动生成的签名,和官方的微信支付接口测试结果是一样的。
后来无意中提到了
postMethod.setRequestEntity(new StringRequestEntity(xmlString,"text/xml",encode)); 这行代码,我才想起这个问题,我的httpclient版本是4.5的,这个方法已经被舍弃了,于是乎改成了post.setEntity(new StringEntity(xml,"UTF-8"));结果真的通过了。。。。心里瞬间有万匹马在奔腾。
在做微信支付的时候遇到签名错误的同学,在你自己手动生成的签名和微信支付接口测试生成的sign是一样的情况下,请试一下post请求的时候设置UTF-8。无论是php,Java还是.net估计都可以。微信支付签名接口测试地址:
https://pay.weixin.qq.com/wiki/tools/signverify/