【运营小卖部】小程序解密 encryptedData 获取 unionID 等信息
decryptData ( $encryptedData, $iv, $data );if ($errCode == 0) { // 返回值 $data 就是一个json字符串 print ($data . "\n") ;} else { print ($errCode . "\n") ;}//正常返回值内容 例子//如果返回字段中没有返回 unionId。参考官方文档,需要将小程序和公众号绑定到同一开放平台才可以获取到/*{ openId: "oGZUI0egBJY1zhBYw2KhdUfwVJJE", nickName: "Band", gender: 1, language: "zh_CN", city: "Guangzhou", province: "Guangdong", country: "CN", avatarUrl: "http://wx.qlogo.cn/mmopen/vi_32/aSKcBBPpibyKNicHNTMM0qJVh8Kjgiak2AHWr8MHM4WgMEm7GFhsf8OYrySdbvAMvTsw3mo8ibKicsnfN5pRjl1p8HQ/0", unionId: "ocMvos6NjeKLIBqg5Mr9QjxrP1FA", watermark: { timestamp: 1477314187, appid: "wx4f4bc4dec97d474b" }}*/wxBizDataCrypt.php
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; }}errorCode.php
<?php/ * error code 说明. **
*/class ErrorCode { public static $OK = 0; public static $IllegalAesKey = - 41001; public static $IllegalIv = - 41002; public static $IllegalBuffer = - 41003; public static $DecodeBase64Error = - 41004;}?>- -41001: encodingAesKey 非法
*- -41003: aes 解密失败
*- -41004: 解密后得到的buffer非法
*- -41005: base64加密失败
*- -41016: base64解密失败
*