本篇文章给大家带来的内容是关于小程序如何获取手机号( thinkphp3.2.3框架),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、直接上代码php
namespace HomeController;
use ThinkController;
class ApiController extends Controller {
/**
* error code 说明.
*
登录后复制
-
*
- -41001: encodingAesKey 非法
- -41003: aes 解密失败
- -41004: 解密后得到的buffer非法
- -41005: base64加密失败
- -41016: base64解密失败
*
*
*
*
*
*/ 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') {
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>//这是官方的组件点击会弹出授权页面</button>
登录后复制
在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'
})
}
})
}
},
登录后复制
到此小程序获取手机号完结,在公司写了个小程序,可以正常获取手机号
相关推荐:
以上就是小程序如何获取手机号( thinkphp3.2.3框架)的详细内容,更多请关注米云其它相关文章!
