2023年7月2日发(作者:)
微信⼩程序获取⼿机号
wxml 代码:
wxjs:代码// 授权登录 getUserProfile(e) { // 获取⽤户信息 rProfile({ desc: '⽤于完善会员资料', // 声明获取⽤户个⼈信息后的⽤途,后续会展⽰在弹窗中,请谨慎填写 success: (res) => { // 头像 let avatarUrl=Url; // 昵称 let nickName=me; ({ success:res=>{ // 获取code let code=; t({ url: '/api/xcx/getLogin', data: { code:code, avatarUrl:avatarUrl, nickName:nickName, }, method:"POST", header: { 'content-type': 'application/json' // 默认值 }, // 数据返回json格式 success (res) { (res); // 存储openid ⽤户获取⼿机号 rageSync('openid', ); // 存储session_key⽤于获取⼿机号 rageSync('sessionKey', nKey); // 存储⽤户id rageSync('userid',); } }) } }) } }) },将⽤户信息发送后台/*获取⽤户信息的路由*/Route::post('xcx/getLogin','xcxLoginController@getLogin');控制器代码: public function getLogin(Request $request){// 接受code $code=$request->post('code');// 接受头像 $avatarUrl=$request->post('avatarUrl');// 接受昵称 $nickName=$request->post('nickName');// 获取appid $appid = "wx64832aa6eaea82b0"; // 从微信公众平台获得secret $secret = "95e2acaf355dbcb443f5cd4748a152ed"; // 发送请求换取openid和sessionkey $url = "/sns/jscode2session?appid=$appid&secret=$secret&js_code=" . $code. "&grant_type=authorization_code"; // 暂使⽤file_get_contents()发送请求,你可以使⽤CURL扩展的形式实现,获取opid和session_key $res = json_decode(file_get_contents($url), true);// 给$params追加openid $params['openid'] = $res['openid']; // 给$params追加session_key $params['sessionKey'] = $res['session_key'];// 查看数据库⾥是否有openid,有就修改,没有就添加 $user = Wxuser::where('openid', $params['openid'])->first(); $params['uid']=$user['id'];// 有就修改⽤户的额openID if ($user) {// 将sessionKey 发送⾄⼩程序缓冲⽤于获取⼿机号 Wxuser::where('openid', $params['openid'])->update(['sessionKey'=>$params['sessionKey']]); return ['code' => 201, 'meg' => '修改成功', 'data' => $params]; } else {// 没有就添加新⽤户 $add = Wxuser::create($params); return ['code' => 200, 'meg' => '添加成功', 'data' => $res]; } }⼩程序点击获取⼿机号按钮
代码需要将 button 组件 open-type 的值设置为 getPhoneNumber,当⽤户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三⽅服务端结合 session_key 以及 app_id 进⾏解密获取⼿机号。 // 获取⼿机号 getphone(e){ // open-type="getPhoneNumber" bindgetphonenumber="getphone" 获取encryptedData var encryptedData =tedData; var iv =; // 取出授权登录的openid let openid= rageSync('openid') // 取出授权登录的sessionKey let sessionKey= rageSync('sessionKey') // 取出⽤户id var userid= rageSync('userid') t({ url: '/api/xcx/send', data: { encryptedData:encryptedData, iv:iv, openid:openid, sessionKey:sessionKey, userid:userid }, method:"POST", header: { 'content-type': 'application/json' // 默认值 }, // 数据返回json格式 success :res=> { (res); if (res) { a({ phone: }) } }
}) }
laravel 路由/*获取⼿机号*/Route::post('xcx/send','xcxLoginController@send');laravel控制器//获取⼿机号public function send(Request $request){ $encryptedData = $request->post('encryptedData'); $iv = $request->post('iv'); $sessionKey = $request->post('sessionKey'); $id=$request->post('userid'); $appid = 'wx64832aa6eaea82b0'; $pc = new WXBizDataCrypt($appid, $sessionKey); $errCode = $pc->decryptData($encryptedData, $iv, $data ); if ($errCode == 0) { $phone = json_decode($data, true)['phoneNumber']; //根据⽤户id 将⼿机号添加到数据表⾥⾯ Wxuser::where('id','=',$id)->update(['phone' => $phone]); return ['code' => 200, 'meg' => 'success', 'data' => $phone]; } else { return ['code' => 500, 'meg' => 'error', 'data' => $errCode]; }
模型代码
下载php
将⽂件放⼊开发的项⽬中,并修改⽂件名称和修改命名空间
decryptData($encryptedData, $iv, $data );if ($errCode == 0) { print($data . "n");} else { print($errCode . "n");} *
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688279566a112560.html
评论列表(0条)