PHP通过微信接口获取用户手机号功能的方法及原理代码

2023-07-24

近期在做一个微信端项目的用户注册登录时需要获取用户的手机号用于短信验证码的接收核验,具体需求是:为了在用户登录的时候判断其是否已经成功注册,没有成功注册的话就将获取到的openid和session_key加密后作为token传给前端,然后让前台通过组件获得code之后连着token一起传给后端,后端拿着code再去请求微信接口获取到用户的电话号码,以此完成注册。经过参考官方的文档和搜索网上的案例,虽有波折但也顺利的完成了这个功能。现将相关代码分享给大家,供大家参考。

PHP通过微信接口获取用户手机号功能的方法及原理代码

1、common.php文件

/**
 * 发送curl get
 * @param string $url
 * @return mixed
 */
function curl_get($url)
{
    $oCurl = curl_init();
    if (stripos($url, "https://") !== FALSE) {
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
    }
    if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) {
        curl_setopt($oCurl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    }
    curl_setopt($oCurl, CURLOPT_URL, $url);
    curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
    $sContent = curl_exec($oCurl);
    $aStatus = curl_getinfo($oCurl);
    curl_close($oCurl);
    if (intval($aStatus["http_code"]) == 200) {
        return $sContent;
    } else {
        return false;
    }
}
if (!function_exists('http_post_json')){ //这一行是判断公共方法有无这个方法,避免重名~
    /**
     * PHP发送Json对象数据
     * @param $url string
     * @param $jsonStr string
     * @param string[] $headers
     * @return array
     */
    function http_post_json(string $url, string $jsonStr, array $headers = array(
        'Content-Type: application/json; charset=utf-8',
    )): array
    {
        $headers[] =         'Content-Length: ' . strlen($jsonStr);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        return array($httpCode, $response);
    }
}

2、调用接口代码:

/**必须先进入登录状态,然后拿到phone的code去请求然后拿到access_code,请求phone的接口 */
            $appid = getConfig('appid_y');   //填写自己的appid,小程序中看
            $secret = getConfig('secret_y');    //填自己的secret,公众平台看
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
            $access_token = json_decode(curl_get($url),true);    
            if(isset($access_token['errcode']))
                return ['errcode'=>$access_token['errcode'],'msg'=>'请求失败','data'=>$access_token];
            $access_token = $access_token['access_token'];   //获取到了access_token
            //请求电话号使用方法只能在公网能访问的目录下进行,本地进行没有返回值
            $url = 'https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token='.$access_token;
            $json_code = json_encode(['code'=>$param['code']]);
            $headers = [
                'Accept: application/json',
                'User-Agent: */*',
                'Content-Type: application/json; charset=utf-8',
            ];
            $phone = http_post_json($url,$json_code,$headers);
            $phone[1] = json_decode($phone[1],true); 
            if(empty($phone[1])||$phone[1]['errcode']!=0)
                throw new Exception('系统获取手机号失败');
            $phoneNumber = $phone[1]['phone_info']['phoneNumber'];
            /**拿到电话号码end */

好了,以上内容就是今天为大家分享的关于PHP通过微信接口获取用户手机号功能的方法及代码,希望大家喜欢!

深圳坪山网站建设公司搜索引擎网站优化排名培训网站排名优化网站优化过程中常见的误区济南网站做网站优化优化网站模板h5的号码广州实惠SEO网站优化推广佛山门窗网站seo优化网站推广与优化结论德安网站排名优化非凡网站优化福州市网站优化平台有哪些汕尾实惠的免费网站优化肇庆百度网站优化萝岗公司网站优化推广技巧孝感市网站关键词排名优化如何中山网站技术优化莲塘付费网站优化网站排名优化赞易点网络企业网站适合做优化吗什么是不利于网站优化忠县网站优化推广无锡网站优化怎么做上海优化网站seo公司网站怎么自己优化网站SEO优化书籍推荐陕西网站关键词排名优化推荐我要做网站优化网络推广网站的营销优化有哪些浙江网站排名优化营销网站编辑优化兼职香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化