小程序如何获取手机号( thinkphp3.2.3框架)

互联网 18-8-14
本篇文章给大家带来的内容是关于小程序如何获取手机号( thinkphp3.2.3框架),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、直接上代码php

namespace Home\Controller; use Think\Controller; class ApiController extends Controller {     /**  * error code 说明.  * <ul>   *    <li>-41001: encodingAesKey 非法</li>  *    <li>-41003: aes 解密失败</li>  *    <li>-41004: 解密后得到的buffer非法</li>  *    <li>-41005: base64加密失败</li>  *    <li>-41016: base64解密失败</li>  * </ul>  */     public static $OK = 0;     public static $IllegalAesKey = -41001;     public static $IllegalIv = -41002;     public static $IllegalBuffer = -41003;     public static $DecodeBase64Error = -41004;     // 小程序     public static $appid = 'XXX';  //小程序appid     public static $secret = 'XXX'; //小程序秘钥     public $sessionKey ='';      // 获取openId session-key 等     public function getopenId($value='')     {             $code = I('post.code');         $appid = self::$appid;         $secret = self::$secret;         $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='. $appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';         $result = httpGet($url);         $res = json_decode($result);         // session(['sessionKey'=>$res,'expire'=>7200]);         $this->ajaxReturn($res);               }      // 获取小程序手机号api 接口,对应下面小程序 js     public function getPhoneNumber($value='')     {            $encryptedData = I('get.encryptedData');        $iv = I('get.iv');        $this->sessionKey=I('get.session_key');        $res = $this->decryptData($encryptedData, $iv);        // $res = json_decode($res);        if($res->phoneNumber){             // $res->phoneNumbe 就是手机号可以 写入数据库或者做其他操作        }                $this->ajaxReturn(['msg'=>$res,'status'=>'1']); //把手机号返回              }      // 小程序解密    public function decryptData($encryptedData, $iv)     {         if (strlen($this->sessionKey) != 24) {             return self::$IllegalAesKey;         }         $aesKey=base64_decode($this->sessionKey);                   if (strlen($iv) != 24) {             return self::$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 self::$IllegalBuffer;         }         if( $dataObj->watermark->appid != self::$appid )         {             return self::$IllegalBuffer;         }          return  $dataObj;         // return self::$OK;     }   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; }   }

//2、小程序

2.1在app.js 启动页面里先login

// 登录     // if (!wx.getStorageSync('session_key') || wx.getStorageSync('time') < Date.parse(new Date())){ // 判断session_key是不是存在获者过期       wx.login({         success: res => {           console.log(res)           // 发送 res.code 到后台换取 openId, sessionKey, unionId           wx.request({             url: 'https://www.zhixiaobing.com/index.php?m=&c=api&a=getopenId',             header: { "Content-Type": "application/x-www-form-urlencoded" },             method: 'post',             data: { code: res.code },             success: function (res) {               console.log(res.data);               wx.setStorageSync('openid', res.data.openid)               wx.setStorageSync('session_key', res.data.session_key)               wx.setStorageSync('time', parseInt(Date.parse(new Date())) + 7200)             }           })                    }       })

//2.2 在小程序模板里写组件

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" >//这是官方的组件点击会弹出授权页面

在js里写下面的函数

getPhoneNumber: function (e) {     var that =this;      var session_key = wx.getStorageSync('session_key')     if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {       wx.showModal({         title: '提示',         showCancel: false,         content: '未授权',         success: function (res) { }       })     } else {//确认授权       wx.request({         url: 'https://www.showoow.com/index.php?m=mini&c=api&a=getPhoneNumber&openid=' + wx.getStorageSync('openid'), //openid是app.js 已经存的         header: {"Content-Type": "application/x-www-form-urlencoded" },         method: "get",         data: {           encryptedData: e.detail.encryptedData, iv: e.detail.iv, session_key:session_key         },         success:function(res){           if (res.data.msg.phoneNumber){             console.log(res);             wx.showModal({               title: '提示',               showCancel: false,               content: '授权成功',               success: function () {                 wx.setStorageSync('phoneNumber', res.data.msg.phoneNumber);                 var time = Date.parse(new Date()) + 60 * 60 * 24 * 2                 wx.setStorageSync('exp', time );               }             })             setTimeout(function(){               wx.navigateTo({                 url: '/pages/form/form',               })             },1500);             that.setData({               show:'show',               hiden:''             })           }else{             wx.showToast({               title: '授权失败',               icon:'loading'             })           }                  },         fail:function(){           wx.showToast({             title: '授权失败',             icon: 'loading'           })         }       })           }   },

到此小程序获取手机号完结,在公司写了个小程序,可以正常获取手机号

相关推荐:

微信小程序传递参数以及接收数据的方法

小程序中页面兼容h5标签的解析

以上就是小程序如何获取手机号( thinkphp3.2.3框架)的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 小程序
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:微信小程序中request请求封装的代码分析

相关资讯