欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > uniapp微信小程序,使用fastadmin完成一个一键获取微信手机号的功能

uniapp微信小程序,使用fastadmin完成一个一键获取微信手机号的功能

2025/2/25 18:08:10 来源:https://blog.csdn.net/qq_34985408/article/details/144675094  浏览:    关键词:uniapp微信小程序,使用fastadmin完成一个一键获取微信手机号的功能

前端部分

点击按钮,获取手机号

<button open-type="getPhoneNumber" @getphonenumber="bindGetPhoneNumber" hover-class="none"class="btn-purity">一键获取</button>

传入openid和code

bindGetPhoneNumber(e) {var that = this;if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {uni.showModal({title: '温馨提示',content: '您已拒绝授权,无法获取手机号!',showCancel: false,success: function(res) {if (res.confirm) {uni.$emit("getContract", {});uni.navigateBack();// uni.switchTab({// 	url: "/pages/home/index/index"// })}}});return;} else {var json = {openid: this.userInfo.openid,};let version = uni.getSystemInfoSync().SDKVersion;// json['encryptedData'] = e.detail.encryptedData;// json['iv'] = e.detail.iv;json['code'] = e.detail.code;this.$api.user.getPhone(json).then(res => {console.log(7777123, res)if (res !== false) {this.phoneNumber = res.data.mobile}});}},

后台部分

初始化EasyWechat的核心类

private $app;public $payment;public function __construct(){$config = get_addon_config('lineup');Log::write('[ Log LIST ++++++++++$config ] ' . json_encode($config, JSON_UNESCAPED_UNICODE), 'debug');$options = ['app_id'      => $config['app_id'],'secret'      =>  $config['app_secret'],'response_type' => 'array',];$payment_config = [// 必要配置'app_id'             => $config['app_id'] ?? '','mch_id'             => $config['mch_id'] ?? '','key'                => $config['mch_key'] ?? '',   // API 密钥// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)'cert_path'          => '', // XXX: 绝对路径!!!!'key_path'           => '',      // XXX: 绝对路径!!!!'notify_url'         => '',     // 你也可以在下单时单独设置来想覆盖它];try {$this->app = Factory::miniProgram($options);$this->payment = Factory::payment($payment_config);} catch (\Exception $e) {\think\Log::error('初始化失败:' . $e->getMessage());}}/*** 根据 jsCode 获取用户 session 信息*/public function jscode2session($code){return $this->app->auth->session($code);}/*** 获取手机号* @param $code*/public function getPhoneNumber($code){$token = $this->app->access_token->getToken();try {$data = Http::post("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=".$token['access_token'],json_encode(['code'=>$code]));$data = json_decode($data,true);if($data['errcode'] != '0'){throw new Exception("获取手机号失败");}}catch (ErrorException $exception){throw $exception;}return $data['phone_info'];}/*** 微信小程序消息解密*/public function decryptData($session, $iv, $encryptedData){return $this->app->encryptor->decryptData($session, $iv, $encryptedData);}

解析出手机号

public function decryptPhoneNumber($post){$wxmini = new \app\common\library\lineup\Wxmini();//新版本授权try {if(!empty($post['code'])){$return = $wxmini->getPhoneNumber($post['code']);}else if($post['iv'] && $post['encryptedData']){$return = $wxmini->decryptData($post['session_key'], $post['iv'], $post['encryptedData']);}else{throw new Exception("参数错误");}}catch (Exception | ErrorException $e){return ['status' => false,'info'   => $e->getMessage(),'data' => [],];}return ['status' => true,'data' => ['mobile' => isset($return['phoneNumber']) ? $return['phoneNumber'] : '',],];}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词