重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

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

时间:2020-09-07 12:00:09 作者:重庆seo小潘 来源:
本篇文章给大家带来的内容是关于小程序如何获取手机号(thinkphp3.2.3框架),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1、直接上代码phpnamespace HomeController;use ThinkController;class ApiController extends Controller {/*

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

1、直接上代码phpnamespace HomeController;use ThinkController;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';//小程序appidpublic 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 接口,对应下面小程序 jspublic 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, unionIdwx.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 * 2wx.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框架)的详细内容,更多请关注小潘博客其它相关文章!