微信小程序 获取 手机验证码 短信验证码 后端功能实现解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 微信小程序 获取 手机验证码 短信验证码 后端功能实现解析

在之前的小程序项目中,争对用户信息的有效性问题(比如手机号是否真实),我使用了微信小程序自带的获取手机号的功能,获取到用户的手机号,因为微信绑定的手机号一定经过微信的严格验证,能够确保手机号真实。但是根据客户的需求,需要实现使用短信验证码登入的功能,那么没办法,客户是上帝,我只能去实现它。

 

前言

 

对于获取微信绑定的手机号来确保小程序用户的真实性,可以看我这篇文章,我写的很详细。

接下来讲解如何实现短信验证码来校验用户的有效性。

本文主要讲解实现微信小程序获取手机短信验证码的后端部分,希望能帮到大家


实现过程如下

  1. 腾讯云中创建短信签名、创建短信正文模板,人工审核
  2. 使用Java SDK调用短信发送API接口
  3. 短信发送成功

(因为客户要求使用腾讯云服务器,所以我这里用腾讯云为例)

 

第一步:创建短信签名、创建短信正文模板

首先理解一下相关概念:

短信签名

短信签名是位于短信正文前【】中的署名,用于标识公司或业务,例如【腾讯科技】。申请时企业用户需要上传资质证明,个人用户需要上传个人身份证明。短信签名需要审核通过后才可使用。

签名示例:

认证企业为:深圳市腾讯计算机系统有限公司,可以申请与企业名相关的签名【腾讯科技】,也可以申请公司旗下的产品名称相关的签名【微信】【腾讯云】等。

简而言之,如果短信内容为:

【腾讯科技】您的QQ登录验证码是1234,5分钟内有效。

那么,短信签名就是——腾讯科技。这样看懂了吧?


短信模板

短信模板即具体发送的短信正文内容,短信模板支持验证码模板、通知类短信模板和营销短信模板。短信内容可以通过模板参数实现个性化定制。

如果短信内容为:

腾讯科技需要发送短信验证码:【腾讯科技】您的QQ登录验证码是1234,2分钟内有效。

那么,短信模板就是:您的QQ登录验证码是{1},{2}分钟内有效

模板参数中{1},{2}是变量,且按序排列,他们的值可以在实际下发时通过设置模板参数的值来自定义。


为了避免开发者滥发短信,所以短信签名、短信模板需要腾讯云进行人工审核,具体操作如下:

打开腾讯云官网,进入右上角控制台,进入短信界面,然后创建签名。

然后同样的方法,创建短信模板

接着就是人工审核,大概10分钟左右就够了。


第二步:使用Java SDK调用短信发送API接口

所谓使用SDK,也就是说,腾讯已经给你写好发送短信的API接口,连调用API接口的模板都给你写好了,你只要拿来用就可以。

SDK下载地址(Github):https://github.com/TencentCloud/tencentcloud-sdk-java

当然这个SDK里面所有功能都实现了,比如发送短信,群发短信,拉取回执状态,统计短信发送数据,包括国内的,境外的,全都有。但是功能多,导包的时间也长,而我们只需要发送国内短信即可,所以我自己把他精简了一下,因为我这里只需要发送短信的功能。

我这里以IDEA为例,打开IDEA,新建一个MAVEN项目

勾上Create from archetype

选择org.apache.maven.archetypes:maven-archetype-webapp

添加属性

name:archetypeCatalog,value:internal

为什么要这么做?是因为系统默认从Maven获取依赖,但是很慢,我们可以选择从本地导入,这样基本不需要时间,达到快速创建项目的效果。


创建完Maven项目,只需要修改两个文件

1.pom.xml

1. <?xml version="1.0" encoding="UTF-8"?>
2. <project xmlns="http://maven.apache.org/POM/4.0.0"
3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5. <modelVersion>4.0.0</modelVersion>
6. 
7. <groupId>org.example</groupId>
8. <artifactId>yanzhengma</artifactId>
9. <version>1.0-SNAPSHOT</version>
10. 
11. <properties>
12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
13. <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
14. <java.version>11</java.version>
15. <maven.compiler.source>11</maven.compiler.source>
16. <maven.compiler.target>11</maven.compiler.target>
17. </properties>
18. 
19. <dependencies>
20. <dependency>
21. <groupId>com.github.qcloudsms</groupId>
22. <artifactId>qcloudsms</artifactId>
23. <version>1.0.6</version>
24. </dependency>
25. </dependencies>
26. </project>

2.随意包下的Main函数

1. import com.github.qcloudsms.SmsSingleSender;
2. import com.github.qcloudsms.SmsSingleSenderResult;
3. import com.github.qcloudsms.httpclient.HTTPException;
4. import org.json.JSONException;
5. import java.io.IOException;
6. public class Main {
7. public static void main(String[] args) {
8. // 短信应用 SDK AppID
9. int appid = 1400xxxx84; // SDK AppID 以1400开头
10. // 短信应用 SDK AppKey
11. String appkey = "d4e5bxxxxxxxxxx02c907501b4ee8645";
12. // 需要发送短信的手机号码
13.         String[] phoneNumbers = {"178xxxxxx85"};
14. // 短信模板 ID,需要在短信应用中申请
15. int templateId = 60xxx8; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请
16. // 签名
17. String smsSign = "XXXX"; // NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请
18. try {
19.             String[] params = {"5678","5"};
20. SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
21. SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0],
22.                     templateId, params, smsSign, "", "");
23.             System.out.println(result);
24.         } catch (HTTPException e) {
25. // HTTP 响应码错误
26.             e.printStackTrace();
27.         } catch (JSONException e) {
28. // JSON 解析错误
29.             e.printStackTrace();
30.         } catch (IOException e) {
31. // 网络 IO 错误
32.             e.printStackTrace();
33.         }
34.     }
35. }

还有要这四个jar包

我们就像Java运行Hello World那样,运行一下主函数,短信就发出来了


接下来来解析一下代码:

1.短信账号,密匙

1. int appid = 1400xxxx84;
2. String appkey = "d4e5bxxxxxxxxxx02c907501b4ee8645";

类似微信小程序,appid是账号,appkey是密匙,我们在腾讯云控制台获取。

点进去可以查看appkey。


2.需要发送的手机号

String[] phoneNumbers = {"178xxxxxx85"};

3.短信模板ID

int templateId = 60xxx8;

在第一步的 国内短信 —— 签名管理 中 查看ID。

4.签名

String smsSign = "XXXX";

同短信模板,你申请的是什么签名,这里就写什么,比如“腾讯科技”

5.填入参数

String[] params = {"5678","5"};

在第一步中,介绍了短信模板的概念

短信模板就是:您的QQ登录验证码是{1},{2}分钟内有效

其中这个{1},类似SQL中的预编译,这里有几个参数,这个params数组就几个元素。

短信发出去就是——您的QQ登录验证码是5678,5分钟内有效


以上数据全部替换后,执行Main主函数就可以,短信就发出来了

这就是微信小程序中,实现短信验证码登入的后端操作,时间有限,我只是简单写了一下,还有更多功能,我会在后续继续深入研究。


相关文章
|
5天前
|
移动开发 小程序 前端开发
几千怎么部署搭建校园服务平台,校园圈子论坛系统小程序搭建,校园系统源码,多种功能一体的综合性校园平台
校园圈子论坛是一款集交友、二手市场、聊天等多功能于一体的校园社交平台,支持App、小程序和H5三端交付。学生可处理闲置物品、结识新朋友,通过算法匹配兴趣相投的用户。平台提供分享邀请机制,支持自动绑定推荐关系,并设有奖励机制。开发过程中需注重数据安全与系统稳定性,确保功能兼容及性能优化。
36 5
|
5天前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
49 3
|
8天前
|
小程序 安全 搜索推荐
陪玩小程序的搭建解析与功能需求
陪玩小程序是为玩家提供专业陪玩服务的应用,嵌入社交或游戏平台,具备智能匹配、实时聊天、预约服务等功能,支持便捷高效的游戏体验。源码交付时需提供详细文档、技术支持及定制开发服务,确保客户能顺利维护和升级。选择陪玩小程序时应关注功能需求、用户体验、安全性和成本效益,以确保最佳使用效果。
36 0
|
26天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
38 7
|
5天前
|
小程序 安全 网络安全
清晰易懂!陪玩系统源码搭建的核心功能,陪玩小程序、陪玩app的搭建步骤!
陪玩系统源码包含多种约单方式、实时语音互动、直播间与聊天室、大神申请与抢单、动态互动与社交及在线支付与评价等核心功能。搭建步骤包括环境准备、源码上传与解压、数据库配置、域名与SSL证书绑定、伪静态配置及后台管理。注意事项涵盖源码安全性、二次开发、合规性和技术支持。确保平台安全、合规并提供良好用户体验是关键。
|
1月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
2月前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
112 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
3月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
107 12
|
2月前
|
小程序 Linux Python
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
27 1
|
2月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
311 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)