微信官方给出的退款通知req_info解密方法如下:
1、对加密串A做base64解码,得到加密串B(解码会出现乱码,但不影响最终的解密)
2、对商户key做md5,得到32位小写key* ( 商户key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置 )
3、用key*对加密串B做AES-256-ECB解密
//解码微信退款通知里面的req_info字串 function refund_decrypt($str, $key) { $str = base64_decode($str); $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_ECB); $block = mcrypt_get_block_size('rijndael_128', 'ecb'); $pad = ord($str[($len = strlen($str)) - 1]); $len = strlen($str); $pad = ord($str[$len - 1]); return substr($str, 0, strlen($str) - $pad); } echo refund_decrypt('微信退款通知里面的加密串req_info值', MD5('商户key'));