博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信支付中文签名错误
阅读量:5833 次
发布时间:2019-06-18

本文共 680 字,大约阅读时间需要 2 分钟。

hot3.png

最近因为公司需要,要做一个微信支付,碰到一个签名的问题。 折腾了我两天,郁闷呀

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

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

2、第二个是重点

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

3、结论

在junit  下 str.getBytes()==str.getBytes("UTF-8")

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

tomcat 版本是 7   

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

 

 

 

 

转载于:https://my.oschina.net/internetafei/blog/791399

你可能感兴趣的文章
weblogic 9.2部署CXF Service应用
查看>>
MySQL建表语句的一些特殊字段
查看>>
DeDe调用指定栏目ID下的文章
查看>>
《Unix环境高级编程》读书笔记 第8章-进程控制
查看>>
腾讯前端二面题目详解
查看>>
RNA-seq标准化
查看>>
mascara-1
查看>>
C#中Time
查看>>
IBM Cloud Speech to Text 语音识别
查看>>
Jquery Form表单取值
查看>>
【cocos2d-js官方文档】十二、对象缓冲池
查看>>
php分页
查看>>
Python version 2.7 required, which was not found in the registry
查看>>
Android API level 与version对应关系
查看>>
[实战演练]Intel面试题目 - 进栈出栈顺序问题
查看>>
linux指令之文件查看 ls
查看>>
iOS 11 下 UICollectionView 的HeaderView 遮挡滚动条
查看>>
jQuery Ajax post多个值传参
查看>>
一点感想
查看>>
HDU - Pseudoforest
查看>>