微信小程序获取用户微信绑定的手机号码|ThinkPHP|getPhoneNumber

,getPhoneNumber:function(e){
    if(e.detail.iv&&e.detail.encryptedData){
        // console.log(e.detail.iv)
        // console.log(e.detail.encryptedData)
        wx.login({
            success:(res)=>{
                wx.request({
                    url:`https://SERVER/Api/Index/get_session_key`
                    ,header:{'content-type':'application/json'}
                    ,data:{
                        code:res.code
                    }
                    ,success:(res)=>{
                        console.log(res)
                        let session_key=res.data.session_key
                        wx.request({
                            url:`https://SERVER/Api/Index/decryptData2`
                            ,header:{'content-type':'application/json'}
                            ,data:{
                                'encryptedData':encodeURIComponent(e.detail.encryptedData)
                                ,'iv':e.detail.iv
                                ,'session_key':session_key
                            }
                            ,success:(res)=>{
                                console.log(res.data)
                                if(!res.data){
                                    console.log('获取失败,请重试')
                                    wx.showToast({
                                        title:'网络错误,请重试…'
                                        ,icon:'none'
                                    })
                                }else{
                                    this.setData({
                                        phone:res.data.purePhoneNumber
                                    })
                                }
                            }
                        })
                    }
                })
            }
        })
    }else{
        console.log('拒绝获取手机号码')
    }
}
function get_session_key($code){
    $url="https://api.weixin.qq.com/sns/jscode2session?appid=".C('MP_APPID')."&secret=".C('MP_SECRET')."&js_code=$code&grant_type=authorization_code";
    $res=jsondecode($this->httpGet($url));
    $out=[
        'session_key'=>$res[session_key],
    ];
    $this->ajaxReturn($out);
}

function decryptData2($encryptedData,$iv,$session_key){
    $aesKey=base64_decode($session_key);
    $aesIV=base64_decode(str_replace(' ','+',$iv));
    $aesCipher=base64_decode(urldecode($encryptedData));
    $result=openssl_decrypt($aesCipher,"AES-128-CBC",$aesKey,1,$aesIV);
    $this->ajaxReturn(jsondecode($result));
}

function httpGet($url){
    $curl=curl_init();
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl,CURLOPT_TIMEOUT,500);
    // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
    // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($curl,CURLOPT_URL,$url);
    $res=curl_exec($curl);
    curl_close($curl);
    return $res;
}

猜你喜欢

转载自blog.csdn.net/sr_www/article/details/81323588