本文原创首发CSDN,链接 https://mp.csdn.net/console/editor/html/106041472 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本段内容,尤其是脚本之家、码神岛等平台,谢谢配合。


目录

前言

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

b)短信签名

c)短信模板

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


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

前言

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

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

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


实现过程如下

  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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>yanzhengma</artifactId><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.encoding>UTF-8</maven.compiler.encoding><java.version>11</java.version><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target></properties><dependencies><dependency><groupId>com.github.qcloudsms</groupId><artifactId>qcloudsms</artifactId><version>1.0.6</version></dependency></dependencies>
</project>

2.随意包下的Main函数

import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;
import java.io.IOException;
public class Main {public static void main(String[] args) {// 短信应用 SDK AppIDint appid = 1400xxxx84; // SDK AppID 以1400开头// 短信应用 SDK AppKeyString appkey = "d4e5bxxxxxxxxxx02c907501b4ee8645";// 需要发送短信的手机号码String[] phoneNumbers = {"178xxxxxx85"};// 短信模板 ID,需要在短信应用中申请int templateId = 60xxx8; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请// 签名String smsSign = "XXXX"; // NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请try {String[] params = {"5678","5"};SmsSingleSender ssender = new SmsSingleSender(appid, appkey);SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0],templateId, params, smsSign, "", "");System.out.println(result);} catch (HTTPException e) {// HTTP 响应码错误e.printStackTrace();} catch (JSONException e) {// JSON 解析错误e.printStackTrace();} catch (IOException e) {// 网络 IO 错误e.printStackTrace();}}
}

还有要这四个jar包

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


接下来来解析一下代码:

1.短信账号,密匙

int appid = 1400xxxx84;
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主函数就可以,短信就发出来了

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

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

  1. java微信发送验证码,详解如何使用微信小程序云函数发送短信验证码

    其实微信小程序前端和云端都是可以调用短信平台接口发送短信的,使用云端云函数的好处是无需配置域名,也没有个数限制. 1.安装 下载后的SDK在cloudfunctions文件夹下会包含3个云函数文件夹, ...

  2. 微信小程序点击发送短信验证(60秒倒计时)

    微信小程序点击发送短信验证(60秒倒计时) /*** 执行计时,60s后可以重新发送短信验证码*/countdown: function() {var nsecond = 60;var that = ...

  3. 实现微信小程序获取手机验证码(点击开始倒计时)

    wxml部分: <input placeholder="请输入手机号" bindinput="phoneInput"></input> ...

  4. 微信小程序获取手机验证码

    一种比较常见的功能获取手机验证码 先看效果图: 其实这个功能实现起来很简单,主要就是调取第三方接口,拿到返回值验证的问题 直接上代码吧: <view class='changeInfo'> ...

  5. 微信小程序--获取二维码(java后端)

    获取二维码 根据业务需要,用户点击分享当前页面,需将小程序当前页面生成二维码,其他用户扫描二维码,跳转至分享页面: 官方文档地址 获取二维码 请求参数 封装请求参数发送请求,请求成功,微信会返回的图片 ...

  6. 微信小程序获取手机系统信息

    使用方法有2种 如下 方法1 wx.getSystemInfo  异步方法 wx.getSystemInfo({success(res) {console.log(res.model)console. ...

  7. 微信小程序获取手机分辨率高度

    getPhoneInfo:function(){this.setData({phoneHeight: 750 / wx.getSystemInfoSync().windowWidth * wx.get ...

  8. 微信小程序选择手机相册里的图片并上传到页面

    微信小程序获取手机相册里的图片并传到页面上 index.wxml代码 // 相册中的照片 <button bindtap='handleChooseAlbum'>选中图片</butt ...

  9. uniapp微信小程序怎样获取宽高?获取系统信息?微信小程序 获取用户手机屏幕高度与宽度信息等

    第一种方案(推荐) "vw" = "view width" "vh" = "view height" 使用 CSS3 引 ...

最新文章

  1. Ruby Metaprogramming
  2. 实锤了!史上最惨的新浪程序员
  3. python3—廖雪峰之练习(三)
  4. 关于加载django模块时的错误:no module named django.conf.urls.defaults
  5. 程序员面试题精选100题(58)-八皇后问题[算法]
  6. 清北NOIP训练营集训笔记——图论(提高组精英班)
  7. java idea 模块_idea 多模块项目依赖父工程class找不到问题的方法
  8. shell从oracle中获取变量,shell 如何读取环境变量的值
  9. linux 串口信息记到日志,[linux学习笔记]之一:ubuntu ch340调试备忘
  10. 如何在css中将图片横向摆放,css如何将图片横向平铺?
  11. 微信小程序位置定位php,【微信开发】微信小程序通过经纬度计算两地距离php代码实现...
  12. 温习古文之生于忧患,死于安乐
  13. Log4cxx使用小结
  14. 【电气专业知识问答】问:WXJ-11B微机蓄电池巡检装置的功能、特点和工作原理是什么?
  15. 柬埔寨招聘中文计算机,柬埔寨ll中文老师1000美金+招聘机会来啦,快来围观!!!...
  16. 2023年全国最新二级建造师精选真题及答案46
  17. 【XSY2271】青蛙(栈)
  18. 股票价、量走势图绘制
  19. 如何裁剪视频画面尺寸?快把这些方法收好
  20. 马蜂窝爬虫--往期创作整理

热门文章

  1. python 按照四个点的坐标裁剪不规则四边形
  2. pmp中ram和raci的区别_PMP复习三部曲2020
  3. 仿微博视频边下边播之封装播放器
  4. Jsp之一 WEB应用程序概述
  5. 设置计算机访问权限密码忘了怎么办,苹果访问限制密码是什么?忘记怎么办【详解】...
  6. domcer服务器按键显示怎么调,我的世界domcer怎么打开按键显示_我的世界按键大全...
  7. zookeeper和kafka的SASL认证以及生产实践
  8. pygame-KidsCanCode系列jumpy-part8-记录历史最高分
  9. h5(网页) 调用相机拍照和相册,实现图片上传功能
  10. 更完整的服务!LG将成为苹果Airplay第一台智慧电视