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'] : '',],];}
相关文章:
uniapp微信小程序,使用fastadmin完成一个一键获取微信手机号的功能
前端部分 点击按钮,获取手机号 <button open-type"getPhoneNumber" getphonenumber"bindGetPhoneNumber" hover-class"none"class"btn-purity">一键获取</button> 传入openid和code bindGetPhoneNumber(e) …...
CSS系列(27)- 图形与滤镜详解
前端技术探索系列:CSS 图形与滤镜详解 🎨 致读者:探索CSS的艺术表现力 👋 前端开发者们, 今天我们将深入探讨 CSS 图形和滤镜效果,学习如何创建引人注目的视觉效果。 基础图形 🚀 几何形状…...
Docker 技术系列之安装多版本Mysql5.6和Mysql5.7
image 大家好,后面的就不是关于MAC专有的内容,基本是跟Java环境,基础技术方面有关。所以这个教程对于在linux系统还是macOS都是通用的,不用担心。 上一篇,我们安装好对应的Docker之后,感受到了它的便利。接…...
理解并使用Linux 内核中的 Tracepoint
理解并使用Linux 内核中的 Tracepoint 1. 引言 1.1 为什么需要 Tracepoint? 在内核调试与性能分析中,传统的 printk 方法虽然简单直接,但存在几个显著的局限性: 日志噪音:printk 会将所有输出无差别地记录到系统日…...
centos7中Gbase8s数据库安装,以及数据导入遇到的一系列问题
centos7中Gbase8s数据库安装,以及遇到的一系列问题 以下是我在centos7上安装gbase8s数据库遇到的一系列问题,包括数据库安装,数据导入,数据连接,不能完全作为标准,只可作为类似问题参考,有问题…...
AW36518芯片手册解读(3)
接前一篇文章:AW36518芯片手册解读(2) 二、详述 3. 功能描述 (1)上电复位 当电源电压VIN降至预定义电压VPOR(典型值为2.0V)以下时,该设备会产生复位信号以执行上电复位操作&#x…...
MySQL的REPEATABLE READ事务隔离级别
本文隔离级别: T1内读T2的update数据 首先开两个事务(左二) 事务1修改成李四,提交 事务2再读还是张三,也就是说,记录的数据从事务开始时一直到结束,读的都是同一个版本,读不到T2未提交的此条记录修改&…...
sqoop的参数有哪些?
Sqoop 是一款用于在 Hadoop 与关系型数据库之间进行数据传输的工具,它有很多参数,可分为通用参数、导入参数和导出参数等,以下是一些常见的参数介绍: 通用参数 --connect 说明:指定要连接的关系型数据库的 JDBC URL。…...
动态规划<四> 回文串问题(含对应LeetcodeOJ题)
目录 引例 其余经典OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 引例 OJ 传送门Leetcode<647>回文子串 画图分析: 使用动态规划解决 原理:能够将所有子串是否是回文的信息保存在dp表中 在使用暴力方法枚举出所有子串,是…...
跨模态知识迁移:基于预训练语言模型的时序数据建模
在NLP和CV领域,通常通过在统一的预训练模型上进行微调,能够在各自领域的下游任务中实现SOTA(最先进)的结果。然而,在时序预测领域,由于数据量相对较少,难以训练出一个统一的预训练模型来覆盖所有…...
重温设计模式--职责链模式
文章目录 职责链模式的详细介绍C 代码示例C示例代码2 职责链模式的详细介绍 定义与概念 职责链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它旨在将请求的发送者和多个接收者解耦,让多个对象都有机会处理请求&a…...
git冲突解决
git冲突解决 最近遇到了一次git冲突的问题 起因是因为最近公司数据推送部分重构,负责重构的同事就改动了我的一小部分推送的代码,然后等我开发完合并到远程master的时候,报了merge冲突。我对于git工具确实不是很熟练,只是学习了…...
Java学习笔记(14)--面向对象编程
面向对象基础 学习资料来自多态 - Java教程 - 廖雪峰的官方网站 目录 面向对象基础 Override 多态 举个例子 覆写Object方法 调用super final 练习 小结 Override 在继承关系中,子类如果定义了一个与父类方法签名完全相同的方法,被称为覆写&…...
《Swift 字面量》
《Swift 字面量》 介绍 在 Swift 编程语言中,字面量是一种表示源代码中固定值的表达方式。字面量可以直接表示数字、字符串、布尔值等基本数据类型,为编程提供了简洁和直观的方式。Swift 支持多种类型的字面量,包括整数字面量、浮点数字面量…...
数据库 SQL 常用语句全解析
数据库 SQL 常用语句全解析 在数据库领域,SQL(Structured Query Language)作为标准语言,掌控着数据的查询、插入、更新与删除等关键操作。无论是新手入门数据库,还是经验丰富的开发者日常工作,熟练掌握 SQ…...
SQLite 命令
关于《SQLite 命令》的文章,我可以为您概述一些关键点。SQLite是一个轻量级的数据库管理系统,它被广泛用于各种应用程序中。SQLite命令主要分为两类:一类是SQL命令,另一类是SQLite特定的点命令。 SQL命令:这些命令用于…...
本地如何启动casdoor
1、下载代码 GitHub - casdoor/casdoor at v1.777.0 下载对应tag的代码,我这里选择的时v1.777.0版本 通过网盘分享的文件:casdoor-1.777.0.zip 链接: https://pan.baidu.com/s/1fPNqyJYeyfZnem_LtEc0hw 提取码: avpd 2、启动后端 1、使用goland编译…...
目标检测-R-CNN
R-CNN在2014年被提出,算法流程可以概括如下: 候选区域生成:利用选择性搜索(selective search)方法找出图片中可能存在目标的候选区域(region proposal) CNN网络提取特征:对候选区域进行特征提取(可以使用AlexNet、VGG等网络) 目…...
【持续更新】Github实用命令
Intro 最近高强度使用github,遂小计于此作为备忘。 Basic github是一个代码管理软件,能够track文件变动并且管理版本,是当代coding必不可少的工具。当你安装好github在本地以后,你可以通过以下命令初始化当前文件夹(…...
docker 容器的基本使用
docker 容器 一、docker是什么? 软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没有docker容器之前,一直是有这种需求的,比如上节课我把我安装的虚拟机给你们打包了,前面的这种打包方式是…...
Marketch终极指南:如何快速将Sketch设计稿转换为HTML页面
Marketch终极指南:如何快速将Sketch设计稿转换为HTML页面 【免费下载链接】marketch Marketch is a Sketch 3 plug-in for automatically generating html page that can measure and get CSS styles on it. 项目地址: https://gitcode.com/gh_mirrors/ma/marketc…...
LLM API延迟突增300ms?模型token吞吐骤降?——AI原生可观测性四象限诊断法,15分钟定位GPU显存泄漏+KV Cache膨胀根源
第一章:AI原生软件研发的可观测性实践 2026奇点智能技术大会(https://ml-summit.org) AI原生软件的研发范式正从根本上重塑可观测性需求——模型推理延迟、数据漂移、提示工程异常、向量嵌入分布偏移等新型信号,无法被传统APM或日志监控体系有效捕获。可…...
【C# .NET 11 AI推理加速权威指南】:5大零拷贝内存优化+3层GPU绑定策略,实测吞吐提升4.7倍(含微软内部验证数据)
第一章:C# .NET 11 AI推理加速安全性最佳方案总览.NET 11 引入了原生 AI 推理加速支持与深度安全增强机制,为 C# 开发者构建高性能、可验证、低延迟的 AI 应用提供了统一平台。其核心围绕 ONNX Runtime 集成优化、硬件加速抽象层(HAL…...
别再骂大模型笨了!用“显式工作记忆法”彻底根治LLM“死不悔改”的照搬行为
别再骂大模型笨了!用“显式工作记忆法”彻底根治LLM“死不悔改”的照搬行为 在将大模型接入业务系统的过程中,你一定遇到过这种让人抓狂的场景: 你在Prompt里明确写了:“请给出不同于旧方案的新组合,严禁照搬ÿ…...
网盘直链解析技术:如何绕过客户端限制实现高速下载
网盘直链解析技术:如何绕过客户端限制实现高速下载 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否曾因网盘客户端下载限速而苦恼?是否在无法安装客户端的环境中…...
Flash浏览器终极指南:一键解决Flash内容播放难题,免费重温经典游戏
Flash浏览器终极指南:一键解决Flash内容播放难题,免费重温经典游戏 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 还在为无法播放网页Flash内容而烦恼吗ÿ…...
2026年公考备战:呼和浩特这3家培训机构凭何领跑行业口碑榜?
呼和浩特这3家培训机构凭何领跑行业口碑榜?随着2026年公考备战季悄然拉开序幕,呼和浩特众多备考生的目光再次聚焦于如何选择一家靠谱的培训机构。近期,一份基于学员真实反馈、上岸数据及行业教研深度的本土公考机构口碑榜引发关注。榜单显示&…...
AI Agent 可以操作哪些表单和数据收集工具?MCP 支持情况盘点
随着 MCP 协议的普及,越来越多的工具开始支持 AI 直接调用。本文梳理了目前已明确支持 MCP 的表单和数据收集工具,帮你判断哪个适合接入你的 AI 工作流。什么样的工具「支持 MCP」?简单说,就是这个工具提供了官方或可用的 MCP Ser…...
我用9个AI Agent,从0到1复刻了一个完整的Claude Code
起因4月初,Claude Code的源码泄露了。拿到源码之后通读了一遍,大概1,900个文件、512K行TypeScript代码。看完之后就有了一个想法:能不能用Go把它重写一遍?不是写个Demo玩玩,而是把所有功能都搬过来——CLI入口、LLM查询…...
长芯微LDC1258完全P2P替代ADS1258,是一款16通道、低噪声、24位、ΔΣ模数转换器(ADC)
描述LDC1258是一款16通道、低噪声、24位、ΔΣ模数转换器(ADC)。支持16 个单通道输入或者8组差分输入。既可以支持单次转换也可以支持连续转换:单次转换时,最大数据速率为29.5kSPS;连续转换时,最大数据速率为125kSPS。片内含有PLL…...
