小程序获取手机号:快速验证和实时验证

news2025/3/13 13:22:36

概述

小程序手机号快速验证和实时验证都已经开始收费了。

  • 手机号实时验证组件,在每次请求时,平台均会对用户选择的手机号进行实时验证;每次组件调用成功,收费0.04元
  • 手机号快速验证组件,平台会对号码进行验证,但不保证是实时验证。每次组件调用成功,收费0.03元
  • 两者的区别简单理解就是实时验证能确保手机号是可用的(比如微信会要求使用者输入验证码确保手机号可用性),而快速验证就是把微信绑定的手机号返回去,不管有没有注销或者欠费

基础库选择

快速验证组件其实就是最开始的获取手机号码组件,调用流程比较复杂,需要wx.login,然后再使用encryptedData和iv得到手机号。新版本的也还能继续使用这种,但同时也增加了一个code(基础库从2.21.2开始),可以直接用code而忽略encryptedData和iv。

所以,建议基础库直接选择2.21.2或者以上的,这样实时和快速的两种能统一处理掉。
基础库版本修改位置: 开发者工具右上角的详情->本地设置->修改调试基础库
在这里插入图片描述

后端代码

后端代码非常简单,根据code来得到手机号,进行自己业务的逻辑,为了方便查看,我把响应值直接返回给小程序了,真实业务自行调整成保存数据库或者其他逻辑。

获取access_token,这个是小程序的,appid和secert可通过小程序后台获取到。access_token的有效期是2小时,可以做成个定时任务。

    public void runmicro(){
        log.info("进入获取micro accessToken 定时任务");
        try {
            String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + Cons.APPID_MICRO + "&secret=" + Cons.SECRET_MICRO;
            String result = Jsoup.connect(url).ignoreContentType(true).method(Connection.Method.GET).execute().body();
            log.info(result);
            Cons.accessTokenMicro = JSON.parseObject(result).getString("access_token");
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

有了access_token,就可以正常获取手机号码了。
其中,requestBody中参数格式必须是code:codeValue,我直接限制小程序按照这个格式传递了,没有做合法校验。

    @PostMapping("/mobile")
    @Log("查询手机号码")
    @ApiOperation("查询手机号码")
    @AnonymousAccess
    public ResponseEntity<JSONObject> mobile(@RequestBody JSONObject param){
        try {
            System.out.println(param.toString());
            String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + Cons.accessTokenMicro;
            String result = Jsoup.connect(url).method(Connection.Method.POST).ignoreContentType(true).ignoreHttpErrors(true).requestBody(param.toString()).execute().body();
            return new ResponseEntity<>(JSON.parseObject(result),HttpStatus.OK);
        } catch(Exception e) {
            e.printStackTrace();
        }
        return new ResponseEntity<>(HttpStatus.OK);
    }

小程序布局

使用了weui样式。这个无所谓,根据个人喜好了。
在wxss中进行引入

@import "/pages/style/weui.wxss";

在wxml中写两个按钮,测试两个获取手机号。其中实时组件的open-type是getRealtimePhoneNumber,同时通过bindgetrealtimephonenumber来指定获取到以后调用的方法;快速组件的open-type是getPhoneNumber,同时通过bindgetphonenumber来指定获取到以后调用的方法。

<page-meta root-font-size="system"/>
<view class="page" data-weui-theme="{{theme}}" data-weui-mode="{{mode}}">
    <view class="page__bd">
        <view class="weui-cells__title">手机号实时验证组件</view>
        <view class="weui-cells weui-cells_after-title">
            <view aria-labelledby="js_cell_l1_bd" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
                  <button type="primary" style="width: 100%;" open-type="getRealtimePhoneNumber" bindgetrealtimephonenumber="getrealtimephonenumber" >获取手机号(实时)</button>
                </view>
        </view>

        <view class="weui-cells__title">手机号快速验证组件</view>
        <view class="weui-cells weui-cells_after-title">
            <view aria-labelledby="js_cell_l1_bd" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
                  <button type="primary" style="width: 100%;" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" >获取手机号(快速)</button>
                </view>
        </view>
        
        <view class="weui-cells__title" style="padding-top: 30px;">手机号实时验证组件,在每次请求时,平台均会对用户选择的手机号进行实时验证。每次组件调用成功,收费0.03元。
        </view>
        <view class="weui-cells__title" >手机号快速验证组件,平台会对号码进行验证,但不保证是实时验证。每次组件调用成功,收费0.04元。</view>

    </view>

</view>

在这里插入图片描述

小程序公共调用方法

因为两种获取手机号的方式都是统一的通过code,所以在js中写个公共的方法,都可以直接调用。url是上面后台部署好的地址。

mobileRequest: function(code) {
      wx.request({
        url: 'https://eladmin.luotayixing.com/api/wechat/mobile',
        method: 'POST',
        data: {
          code: code
        },
        header: {
          'content-type': 'application/json'
        },
        success (res) {
          wx.showModal({
            title: '返回结果',
            content: JSON.stringify(res.data),
            showCancel: false,
            success (res) {
              
            }
          })
        }
      })
    },

组件事件回调

上面两个组件的事件回调方法比较简单,都是直接把code拿到。
这里需要增加下判断,比如用户点击了取消不要调用,其他出错情况不要调用等。我为了方便偷懒了。

    getrealtimephonenumber (e) {
      this.mobileRequest(e.detail.code)
    },
    getPhoneNumber (e) {
      this.mobileRequest(e.detail.code)
    },

官方给出的几个参数可以用,比如errno来判断是否失败了。

    console.log(e.detail.code)  // 动态令牌
    console.log(e.detail.errMsg) // 回调信息(成功失败都会返回)
    console.log(e.detail.errno)  // 错误码(失败时返回)

完整代码获取

可以通过公众号“洛塔志达服务”进行联系,发送“微信”,可添加好友沟通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1453699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文阅读_语音识别_Wisper

英文名称: Robust Speech Recognition via Large-Scale Weak Supervision 中文名称: 通过大规模弱监督实现鲁棒语音识别 链接: https://proceedings.mlr.press/v202/radford23a.html 代码: https://github.com/openai/whisper 作者: Alec Radford, Jong Wook Kim, Tao Xu, Greg…

基于协同过滤的时尚穿搭推荐系统

项目&#xff1a;基于协同过滤的时尚穿搭推荐系统 摘 要 基于协同过滤的时尚穿搭推荐系统是一种能自动从网络上收集信息的工具&#xff0c;可根据用户的需求定向采集特定数据信息的工具&#xff0c;本项目通过研究服饰流行的分析和预测的分析和预测信息可视化时尚穿搭推荐系统…

2024免费人像摄影后期处理工具Portraiture4.1

Portraiture作为一款智能磨皮插件&#xff0c;确实为Photoshop和Lightroom用户带来了极大的便利。通过其先进的人工智能算法&#xff0c;它能够自动识别并处理照片中的人物皮肤、头发和眉毛等部位&#xff0c;实现一键式的磨皮美化效果&#xff0c;极大地简化了后期处理的过程。…

STM32下载后需要复位

下载后需要复位才能自动运行程序&#xff0c;需要以下两步 STEP1 STEP2 一个勾选&#xff0c;一个不勾选。

乡政府|乡政府管理系统|基于Springboot的乡政府管理系统设计与实现(源码+数据库+文档)

乡政府管理系统目录 目录 基于Springboot的乡政府管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、活动信息管理 3、新闻类型管理 4、新闻动态管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

内存块与内存池

&#xff08;1&#xff09;在运行过程中&#xff0c;MemoryPool内存池可能会有多个用来满足内存申请请求的内存块&#xff0c;这些内存块是从进程堆中开辟的一个较大的连续内存区域&#xff0c;它由一个MemoryBlock结构体和多个可供分配的内存单元组成&#xff0c;所有内存块组…

JAVA之Java线程核心详解

Java线程核心 1.进程和线程 进程&#xff1a;进程的本质是一个正在执行的程序&#xff0c;程序运行时系统会创建一个进程&#xff0c;并且给每个进程分配独立的内存地址空间保证每个进程地址不会相互干扰。同时&#xff0c;在 CPU 对进程做时间片的切换时&#xff0c;保证进程…

Java 抽象容器类源码剖析

总体介绍 抽象容器类接口和具体容器类的关系如图所示&#xff0c;顶层包括Collection、List、Set、Queue、Deque和Map6个抽象容器类。 AbstractCollection&#xff1a;实现了Collection接口&#xff0c;被抽象类AbstractList、AbstractSet、AbstractQueue继承&#xff0c;Arra…

飞天使-k8s知识点19-kubernetes实操4-资源调度 标签和选择器:Label与Selector的使用-版本回退

文章目录 添加label资源调度 Deployment&#xff1a;创建与配置文件解析rs pod deploy 的关联信息展示Deployment&#xff1a;滚动更新Deployment&#xff1a;回滚回退版本实际操作 添加label [rootkubeadm-master1 test]# kubectl get pod NAME …

OpenCV Mat实例详解 四

OpenCV Mat实例详解三中详细介绍来了OpenCV Mat类的公有静态成员函数&#xff0c;下面介绍OpenCV Mat类的其他常用成员函数。 OpenCV Mat类常用成员函数 Mat & adjustROI (int dtop, int dbottom, int dleft, int dright)&#xff1b; dtop ROI 上边界移动值&#xff0c;如…

Java实现新能源电池回收系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…

LabVIEW智能监测系统

LabVIEW智能监测系统 设计与实现一个基于LabVIEW的智能监测系统&#xff0c;通过高效的数据采集和处理能力&#xff0c;提高监测精度和响应速度。系统通过集成传感器技术与虚拟仪器软件&#xff0c;实现对环境参数的实时监测与分析&#xff0c;进而优化监控过程&#xff0c;提…

一些配置问题记录

真的很感慨 为什么一开始的下载的软件还能用 卸载或重装后的软件总是存在各种各样的错误 真令人心烦 GNURADIO运行简单的采集信号程序报错&#xff0c; 其实不太理解为什么会出现这类错误&#xff0c;解决方法为 安装 jackd2 软件包&#xff0c;然后尝试手动启动 Jack 服务器…

通过玩游戏学会AWS

游戏名字&#xff1a; Cloud Quest 类型&#xff1a;亚马逊云科技官方出了一款 3D 角色扮演、虚拟城市建造形式的游戏实验课 进入方法&#xff1a;浏览器搜索 Cloud Quest&#xff08;或扫描下方二维码&#xff09;进入 Cloud Quest 课程页。 选择以下的链接 点击进行注册 进…

力扣题目训练(12)

2024年2月5日力扣题目训练 2024年2月5日力扣题目训练476. 数字的补数482. 密钥格式化485. 最大连续 1 的个数148. 排序链表164. 最大间距 2024年2月5日力扣题目训练 2024年2月5日第十二天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括简单题3道、中等题2道和…

21种matlab信号分解方法汇总

21中信号分解方法汇总 CEEMD(互补集合经验模态分解)CEEMDAN(自适应噪声完备集合经验模态分解) EEMD(集合经验模态分解&#xff09;EMD(经验模态分解)ESMD(极点对称模态分解&#xff09;EWT(经验小波变换分解)FEEMD(快速EEMD分解)ICEEMDAN(改进自适应噪声完备集合经验模态分解)L…

微波炉维修笔记

微波主要是靠2.45GHz 左右的微波(12.2cm 波长)加热水分子实现食物加热 所有不要使用金属器皿进行加热&#xff0c;要么因为电磁屏蔽&#xff0c;起不到加热效果&#xff0c;要么火光四射 微波炉基本组成 借鉴姜师傅的视频 碰到不加热其它都正常的问题 1.检查高压电容 使用万…

安装luajit及使用python运行lua脚本

使用Python运行lua脚本前&#xff0c;需要先安装LuaJIT&#xff0c;LuaJIT的官网是下载 (luajit.org) 目前已不再使用.exe文件的下载方式&#xff0c;需要使用Git从公共仓库下载源码&#xff0c;git命令为&#xff1a; $ git clone https://luajit.org/git/luajit.git 下载后…

解决ubuntu登录密码问题

解决ubuntu登录密码问题 不要随便删除密码&#xff0c;不要随便改密码&#xff0c;很容导致密码过期&#xff0c;或者密码无效。参考了很多人的做法&#xff0c;都没有得到解决。下面的过程&#xff0c;够详细了&#xff0c;我就是这么搞好的。 1、重启虚拟机&#xff0c;不停…

数据的力量:构筑现代大型网站之数据库基础与应用

目录 数据库基础知识--前言 大型网站架构特点 DBA数据库管理员 什么是数据? 数据存储 什么是数据库 数据表的概念 为什么需要mysql这样的数据库管理工具&#xff1f;★ DBMS 收费数据库与免费数据库 运维和数据库 开发与运维的不同阶段 数据库类别 数据库具体应用…