首先附上微信支付的開(kāi)發(fā)者文檔
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_16&index=11
其實(shí)這里所說(shuō)的踩坑記錄称簿,無(wú)非就是微信在開(kāi)發(fā)者文檔上的寫(xiě)不太明確靴姿,也沒(méi)有比較官方的demo,在此列出一個(gè)可行的demo餐弱,供大家下載使用。
主要問(wèn)題就是在這幾步解密上
首先是base64解碼的工具類(lèi)
這個(gè)工具類(lèi)都是比較簡(jiǎn)單的片部,大部分的框架都會(huì)封裝這種類(lèi)似的工具類(lèi)拱烁,這里自己做簡(jiǎn)單封裝
然后是md5工具類(lèi),這個(gè)就不往外放了崩哩,網(wǎng)上多的是巡球,現(xiàn)成的也多的是
主要坑人的地方是第三條。邓嘹。酣栈。
上面寫(xiě)明了用AES-256-ECB-PKCS7Padding,但是你把下面的ALGORITHM_MODE_PADDING參數(shù)換成AES/ECB/PKCS7Padding汹押,發(fā)現(xiàn)報(bào)了這么個(gè)異常
java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/ECB/PKCS7Padding矿筝,
然后把參數(shù)改成AES/ECB/PKCS5Padding,發(fā)現(xiàn) Illegal key size or default parameters
解決方法:
http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters
JDK8 jar包下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
JDK7 jar包下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK6 jar包下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
把里面的兩個(gè)jar包:local_policy.jar 和?US_export_policy.jar 替換掉原來(lái)jdk安裝目錄Java\jre\lib\security 下的兩個(gè)jar包接可以了
然后運(yùn)行一些試試棚贾,窖维,此時(shí)代碼正常,數(shù)據(jù)正常妙痹。铸史。。
因?yàn)槟承﹪?guó)家的進(jìn)口管制限制细诸,Java發(fā)布的運(yùn)行環(huán)境包中的加解密有一定的限制沛贪。比如默認(rèn)不允許256位密鑰的AES加解密,解決方法就是修改策略文件震贵,? 從官方網(wǎng)站下載JCE無(wú)限制權(quán)限策略文件利赋,注意自己JDK的版本別下錯(cuò)了。將local_policy.jar和US_export_policy.jar這兩個(gè)文件替換%JRE_HOME%\lib\security和%JDK_HOME%\jre\lib\security下原來(lái)的文件猩系,注意先備份原文件媚送。