thinkPHP小程序获取openid unionid

9 篇文章 0 订阅
2 篇文章 0 订阅

function getWxinfo()
    {

        $arr['appid'] = config('socket.appid');
        $arr['secret'] =config('socket.secret');
        $arr['grant_type'] ='authorization_code';
        $arr['js_code'] = input('param.code');


        $encryptedData = input('param.encryptedData');
        $iv = input('param.iv');

        $url = "https://api.weixin.qq.com/sns/jscode2session?";

        $url = $url . http_build_query($arr);

        $http = new HttpClient();//添加账户记录
        $res = $http->get($url);

        $res=json_decode($res,TRUE);
        // var_dump($res);

        $sessionKey=$res['session_key'];
        /* var_dump($pc); */
        $errCode = $this->decryptData($arr['appid'], $sessionKey,$encryptedData, $iv);
        if ($errCode != -41001 &&$errCode != -41002&&$errCode != -41003&&$errCode != -41004) {
            return $errCode;
        } else {
            throw new \Exception($errCode);
        }

    }


    /**
    * 微信信息解密
    * @param  string  $appid  小程序id
    * @param  string  $sessionKey 小程序密钥
    * @param  string  $encryptedData 在小程序中获取的encryptedData
    * @param  string  $iv 在小程序中获取的iv
    * @return array 解密后的数组
    */
    function decryptData($appid , $sessionKey, $encryptedData, $iv){
        $OK = 0;
        $IllegalAesKey = -41001;
        $IllegalIv = -41002;
        $IllegalBuffer = -41003;
        $DecodeBase64Error = -41004;

        if (strlen($sessionKey) != 24) {
            return $IllegalAesKey;
        }
        $aesKey=base64_decode($sessionKey);

        if (strlen($iv) != 24) {
            return $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 $IllegalBuffer;
        }
        if( $dataObj->watermark->appid != $appid )
        {
            return $DecodeBase64Error;
        }
        $data = json_decode($result,true);
        return $data;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值