网上看了很多版本,什么修改 wxBizDataCrypt.php和pkcs7Encoder.php 简直有点开玩笑的意思,大部分都是一个复制一个的发文章,找不到原创了。今天我就带来一个简单的解决方法,几行代码就行了。
首先删除除了wxBizDataCrypt.php和errorCode.php之外的所有文件,然后把wxBizDataCrypt.php 替换如下
<?php namespace wx; use wxErrorCode; class WXBizDataCrypt { private $appid; private $sessionKey; /** * 构造函数 * @param $sessionKey string 用户在小程序登录后获取的会话密钥 * @param $appid string 小程序的appid */ public function __construct( $appid, $sessionKey) { $this->sessionKey = $sessionKey; $this->appid = $appid; } /** * 检验数据的真实性,并且获取解密后的明文. * @param $encryptedData string 加密的用户数据 * @param $iv string 与用户数据一同返回的初始向量 * @param $data string 解密后的原文 * * @return int 成功0,失败返回对应的错误码 */ public function decryptData( $encryptedData, $iv, &$data ) { if (strlen($this->sessionKey) != 24) { return ErrorCode::$IllegalAesKey; } $aesKey=base64_decode($this->sessionKey); if (strlen($iv) != 24) { return ErrorCode::$IllegalIv; } $aesIV=base64_decode($iv); $aesCipher=base64_decode($encryptedData); $result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV); $dataObj=json_decode( $result ); if( $dataObj == NULL ) { return ErrorCode::$IllegalBuffer; } if( $dataObj->watermark->appid != $this->appid ) { return ErrorCode::$IllegalBuffer; } $data = $result; return ErrorCode::$OK; } }
ok问题解决了,有点小坑就是我这里是以命名空间引用的errorCode文件,这里注意一下就行了。
还不会怎么办?有大招,扫描右下方二维码关注提问即可。