微信退款异步通知 aes-256-ecb 解密

实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 对微信退款回调的加密数据进行解密
*
* @param string $encryptData 原始加密数据
* @param string $key 商户 key
*
* @return string 解密后的 xml 数据
*/
public function decryptData( $encryptData, $key = '' )
{
//1. base64_decode
$encryptData = base64_decode($encryptData);

//2. md5 original key
$md5LowerKey = strtolower(md5($key));

//3. decrypt AES ECB
$decrypted = openssl_decrypt($encryptData, 'AES-256-ECB', $md5LowerKey, OPENSSL_RAW_DATA);

return $decrypted;
}

遇到的坑

  • openssl_decrypt 第四个参数一定要使用 OPENSSL_RAW_DATA