微信小程序02: 使用微信快速验证组件code获取手机号


1.前言简介

上文为核心文章, 请先复制上文的代码后再复制此篇代码
里面是对微信小程序大部分操作的总结与封装

1.1 专栏传送门

本篇专栏地址:
=> 传送门: 微信小程序相关操作专栏 <=

专栏中的一个文章说明(可跳过此说明)

1.1.1 上文小总结

上文为核心文章, 请先复制上文的代码后再复制此篇代码
里面是对微信小程序大部分操作的总结与封装

1.1.2 上文传送门

[===> 微信小程序00: 获取accessToken,手机号, 小程序二维码,openId与unionId 公共配置类(核心篇) ]

2. 微信小程序获取手机号

微信小程序官方文档: => 传送门 <=
在这里插入图片描述

2.1 业务场景(使用充值)

微信小程序手机号快捷验证, 当然了 2023年8月26日起开始收费了(功能就是下图展示的)
当然 用其他普通短信认证 都行 反正价格都差不多, 不免费了!!!
在这里插入图片描述
=> 传送门: 微信小程序手机号快速验证-微信开放社区

2.2 准备工作

第一步: 请先复制核心篇微信小程序-00的统一封装类

=> 传送门: 微信小程序00: 微信小程序公共配置类(核心篇)

第二步: 请先复制上一篇 获取accessToken

=> 传送门: 微信小程序01: springboot获取accessToken方式

使用流程介绍

第一步: 是将微信小程序相关操作同一封装
第二步: 使用第一步封装代码并且获取accessToken
目的: 将获取到的accessToken用于本篇文章进行手机号快捷验证

2.3 具体代码使用与注释如下

2.2步骤说过 这里还是在强调一下

特别注意: 请先复制核心篇: ===> 微信小程序-00`的统一封装类
注意: 请先阅读上一篇: ===> 微信小程序01: springboot获取accessToken方式

2.3.1 代码解释(一)[无需复制]

找到WechatServiceUtils类 的 getPhoneByCode()方法
这个是通过微信code获取手机号信息

	/**
     * 获取手机号信息
     * @param code js_code
     * @return phone
     */
    public String getPhoneByCode(String code) {
        String phoneUrl = wechatConfigProperties.getPhoneUrl(getRedisCacheAccessToken());

        Map<String, Object> map = new HashMap<>();
        map.put("code", code);

        JSONObject jsonObject = sendPostRestTemplate(phoneUrl, map, JSONObject.class);
        System.out.println(jsonObject);

        if (jsonObject.containsKey("errcode")) {

            /*如果异常码是0 说明正常*/
            if (!Objects.equals(String.valueOf(jsonObject.get("errcode")), "0")) {
                log.error("===> 获取手机号的异常信息 : {}", jsonObject + "");

                throw new ServiceException("获取失败: " + jsonObject.get("errmsg"), (Integer) jsonObject.get("errcode"));
            }
        }

        JSONObject phoneInfo = jsonObject.getJSONObject("phone_info");

        return phoneInfo.getString("phoneNumber");
    }

2.3.2 代码解释(二)[无需复制]

自己封装一个发送post请求的模板(使用restTemplate, 使用其他方法随意)

    /**
     * 远程调用 restTemplate方法 post请求
     *
     * @param url
     * @param body
     * @return
     */
    public <T> T sendPostRestTemplate(String url, Map<String, Object> body, Class<T> responseType) {
        return restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(body, null), responseType).getBody();
    }

2.4 最后一步 获取手机号信息

2.4.1 两行代码搞定(使用代码)

注意: 可以建立实体类请求对象 配合@Validated对参数进行校验

  String code = (String) jsonObject.get("code");

  String phone = wechatServiceUtils.getPhoneByCode(code);

2.4.2 异常码信息(常用)

错误码错误描述解决方案
-1system error[系统繁忙,此时请开发者稍候再试]
40029code 无效[js_code无效]
45011api minute-quota reach limit mustslower retry[next minute API 调用太频繁,请稍候再试]
40013invalid appid[请求appid身份与获取code的小程序appid不匹配]

2.5 前端小程序调用方法(补充)

ps 这个code不是wx.login的code 千万别弄混了
具体使用方式如下(页面+js)

2.5.1 按钮页面代码

<button wx:if="{{login}}" open-type="getPhoneNumber" class="loginbutton" bind:getphonenumber="getPhoneNumber">获取手机号</button>

2.5.2 获取手机号js代码

业务自己填充

getPhoneNumber(e) {
		let _this = this;
		let param = {
			code: e.detail.code
		}
		getPhone(param).then(res => {
			_this.setData({
				userPhone: res.data.phone_info.phoneNumber,
			})
		})
	}

3. 文章的总结与预告

3.1 本文总结

  1. 使用微信手机号快捷验证组件获取手机号
  2. 找到充值位置与方式(核心呀...)
  3. 上面代码一复制就OK了, 注册的时候使用一次即可
  4. 其余可用openId/unionId进行判断

3.2 下文预告

  1. 获取openId与unionId

  2. 传送门: => 获取不限制小程序二维码 <=

  3. 微信支付

  4. 微信提现



作者pingzhuyan 感谢观看

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pingzhuyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值