微信支付中文签名错误

最近由于公司须要,要作一个微信支付,碰到一个签名的问题。 折腾了我两天,郁闷呀java

一、先说一下,签名的问题,按照规则排序就不说了,最后说一下编码  tomcat

data=new String( data.getBytes( "UTF-8"),"ISO8859-1" ); 微信

二、第二个是重点函数

这个也是对的,关键是这个改完了,还签名错误 最奇葩的是junit 单元测试时过了的,可是 在生产环境中,就是有问题。而后就是各类折腾,首先仍是测试,把中文换掉,OK的,说明仍是编码的问题。而后再检查httpclient ,提交时候的编码,各类比对,问题之后。后来发现,在没有提交的时候,签名已经有问题了,比对内容,UE,而后人眼比对,各类无奈呀,最后,直接两个str equals,竟然是true ,而后傻脸了,最后就是想tomcat 和junit 有什么不一样,既然是java ,那么默认的确定是UTF-8,一个噢然的机会,撇了一个签名函数 Md5 签名的参数是 byte ,须要把 String 转为byte ,而后就改了.getBytes("UTF-8") ,而后就OK了 ,后来就像这个问题。单元测试

三、结论测试

在junit  下 str.getBytes()==str.getBytes("UTF-8")微信支付

在tomcat7 下str.getBytes()==str.getBytes("GBK"),编码

tomcat 版本是 7   排序

不是说java 默认下都是UTF-8 么,为何会这样呢?get

相关文章
相关标签/搜索