四个步骤
1、将微信返回的xml数据转换成map,获取 req_info
这个步骤做过微信支付的都会就不说了
2、对加密串 req_info 做base64解码,得到加密串B (类型为byte[])
byte B[] = Base64.decode(reqInfo);
3、对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 )
SecretKeySpec key = new SecretKeySpec(MD5Util.MD5Encode(appKey,"utf-8").toLowerCase().getBytes(), "AES");
4、用key*对加密串B做AES-256-ECB解密
public static String decryptData(byte[] b, SecretKeySpec key) throws Exception {
Cipher cipher = null;
cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE,key);
return new String(cipher.doFinal(b),"utf-8");
}
将得到的xml数据再转化成map即可。我并未遇到 “当使用PKCS7Padding 进行解密时报错: Cannot find any provider supporting AES/ECB/PKCS7Padding” 此情况。
最后 由于春运快到了,给大家安利一个抢火车票的小程序心到抢票,微信扫码关注点击立即抢票即可
个人亲测效率很高,抢票块,价格便宜,大家也可以加他们官方微信 xdticket 咨询。