> 文档中心 > 【运营小卖部】小程序解密 encryptedData 获取 unionID 等信息

【运营小卖部】小程序解密 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 说明. * 
    *
  • -41001: encodingAesKey 非法
  • *
  • -41003: aes 解密失败
  • *
  • -41004: 解密后得到的buffer非法
  • *
  • -41005: base64加密失败
  • *
  • -41016: base64解密失败
  • *
*/class ErrorCode { public static $OK = 0; public static $IllegalAesKey = - 41001; public static $IllegalIv = - 41002; public static $IllegalBuffer = - 41003; public static $DecodeBase64Error = - 41004;}?>