|
|
相关文献:
敏感数据加密数据解密算法:
https://developers.weixin.qq.com ... 6%E7%AE%97%E6%B3%95
获取手机号:
https://developers.weixin.qq.com ... getPhoneNumber.html
小程序登录:
https://developers.weixin.qq.com ... -ability/login.html
步骤:
1,小程序getPhoneNumbernumber,拿到e.detail.iv,e.detail.encryptedData,这两个参数是需要再后面解密的;
2,wx.login,拿到code;
3,用code去服务端获取sessionKey;
4,用sessionKey到服务端获取手机号
wxml
- <button class="weui-btn weui-btn_primary" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取用户手机号</button>
复制代码
js
- getPhoneNumber: function (e) {
- var ivObj = e.detail.iv;
- var telObj = e.detail.encryptedData;
- var codeObj = "";
- var that = this;
- //------执行Login---------
- wx.login({
- success: res => {
- // 先wx.login得到code
- let jsCode = res.code;
- // 用code 去服务端获取sessionKey
- app.util.request({
- 'url': 'entry/wxapp/xcxsess',
- 'data': {
- code: jsCode,
- },
- 'cachetime': '30',
- success(res) {
- let sessionkey = res.data.data;
- wx.request({
- url: 'https://xxxx.com/addons/小程序模块名/xcxjm.php', //接口地址
- data: {
- appid: "小程序APPID",
- sessionKey :sessionkey,
- code: jsCode,
- encryptedData: telObj,
- iv: ivObj
- },
- success: function (ressss) {
- console.log(ressss);
- var phoneObj = ressss.data.phoneNumber;
- that.setData({shoujihao:phoneObj});
- console.log("手机号=", phoneObj)
- wx.setStorage({ //存储数据并准备发送给下一页使用
- key: phoneObj,
- data: ressss.data.phoneNumber,
- })
- }
- })
- }
- });
- }
- });
- },
复制代码
php
在这里将php解密例子下载后,上传服务器,demo.php修改名为xcxjm.php
https://developers.weixin.qq.com ... 6%E7%AE%97%E6%B3%95
xcxjm.php
- <?php
- include_once "wxBizDataCrypt.php";
- $appid = isset( $_REQUEST[ 'appid' ] ) ? $_REQUEST[ 'appid' ] :'';
- $sessionKey = isset( $_REQUEST[ 'sessionKey' ] ) ? $_REQUEST[ 'sessionKey' ] :'';
- $encryptedData = isset( $_REQUEST[ 'encryptedData' ] ) ? $_REQUEST[ 'encryptedData' ] : "";
- $iv = isset( $_REQUEST[ 'iv' ] ) ? $_REQUEST[ 'iv' ] :'';
- $pc = new WXBizDataCrypt($appid, $sessionKey);
- $errCode = $pc->decryptData($encryptedData, $iv, $data );
- if ($errCode == 0) {
- print($data . "\n");
- } else {
- print($errCode . "\n");
- }
复制代码
wxapp.php
新建方法
- public function doPageXcxsess(){
- global $_GPC, $_W;
- $appid = '小程序appid';
- $secret = '小程序secret';
- $code=$_GPC['code']; //微擎获取前台上传的code值
- $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
- $info = file_get_contents($url);//get请求网址,获取数据
- $json = json_decode($info);//对json数据解码
- $arr = get_object_vars($json);//返回一个数组。获取$json对象中的属性,组成一个数组
- $openid = $arr['openid'];
- $session_key = $arr['session_key'];
- return $this->result(0, 'success', $session_key);//返回给前台一个session_key
- }
复制代码
下面这个参考文献也有参考价值:https://blog.csdn.net/qq_43382853/article/details/106162879
|
|