短信验证码接入在项目中太常见了,但是很多平台的验证码价格昂贵和接收速度慢等不利于用户体验的特点,此次主要是选择短信验证码的接入测试,接入之前就可以进行短信平台的挑选。

第一步:选择短信平台

寻找若干个短信平台,获取测试接口(注:有些平台是可以免费进行试用或者测试,有些平台是不能进行测试的,试用之前最好了解清楚。)如下图所以,就是某个短信平台的接口测试环境。

第二步:获取AppId和AppKey。

不同平台的设定方法是不同的,一般都是需要一个账户和密码,这样才能统计发送数量,大部分平台的展示都是在平台的首页,如下图

第三步:短信验证码使用是需要设定一个签名。

日常我们收到的短信都是类似下图的样式,这些画红色的,设定的短信签名一般是需要和公司营业执照或者商标名称类似,可以增强品牌效应。当然如果没有设定签名的话,默认使用一个签名,进行接口测试没问题,但是如果应用记住更换即可。

到这里已经可以进行接口测试了,如果觉得平台还可以,那么可以进行以下操作。

设定每个手机号日请求最大数量,大部分平台的都是需要自主设置,比如这个平台有默认设置,还可以设定剩余条数提醒和每天最大发送量以及预警通知手机等等。这些应该都是一个短信平台所必备的一些设置参数。

这里给大家提供了短信验证码接入的Java前端代码

<html>
<head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"><!-- 国内使用 --><link rel="stylesheet" href="https://cdn.staticfile.org/amazeui/2.7.2/css/amazeui.min.css"><script type="text/javascript" charset="utf-8" src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script><script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/sd/nch5/index.js?t=2015052012"></script><!-- 若您的主要用户来源于海外,请替换使用下面的js资源 --><!-- <script type="text/javascript" charset="utf-8" src="//aeis.alicdn.com/sd/nch5/index.js?t=2015052012"></script> --><style>.am-form{padding: 10px;}._nc .stage1 .slider{left: 0;right: 0;}</style>
</head>
<body><div class="am-form"><div class="am-form-group"><label for="tel">请输入手机号</label><input type="text" class="" id="tel" placeholder="请输入手机号"></div><div id="__nc" style="height: 70px"><div id="nc"></div></div><div class="am-form-group"><label for="code">请输入验证码</label><input id="code" type="text" placeholder="请输入验证码"></div><button type="button" class="am-btn am-btn-primary">提交</button>
</div><script>var nc_token = ["CF_APP_1", (new Date()).getTime(), Math.random()].join(':');var nc=NoCaptcha.init({renderTo: '#nc',appkey: 'CF_APP_1',scene: 'register',token: nc_token,trans: {"key1": "code200"},elementID: ["usernameID"],is_Opt: 0,language: "cn",timeout: 10000,retryTimes: 5,errorTimes: 5,inline:false,apimap: {
// 'analyze': '//a.com/nocaptcha/analyze.jsonp',
// 'uab_Url': '//aeu.alicdn.com/js/uac/909.js',},bannerHidden:false,initHidden:false,callback: function (data) {window.console && console.log(nc_token)window.console && console.log(data.csessionid)window.console && console.log(data.sig);var tel = $('#tel').val();$.ajax({url: "sendCode",type: "post",data: {tel:tel},dataType: "json",success: function (result) {if (result.code == 0) {alert("验证码已发送!", "green")} else {alert("发送失败,请稍后再试!");nc.reset()}},error: function () {alert("系统繁忙,请稍后再试!", "red")}})},error: function (s) {}});NoCaptcha.setEnabled(true);nc.reset();//请务必确保这里调用一次reset()方法NoCaptcha.upLang('cn', {'LOADING':"加载中...",//加载'SLIDER_LABEL': "请向右滑动验证",//等待滑动'CHECK_Y':"验证通过",//通过'ERROR_TITLE':"非常抱歉,这出错了...",//拦截'CHECK_N':"验证未通过", //准备唤醒二次验证'OVERLAY_INFORM':"经检测你当前操作环境存在风险,请输入验证码",//二次验证'TIPS_TITLE':"验证码错误,请重新输入"//验证码输错时的提示});
</script>
</body>
</html>

后端代码

HttpSession session = req.getSession();// TODO 验证码有效时间session.setMaxInactiveInterval(600);try {Integer num = RandNumber.getNum();// TODO 发送验证码通道Sendsms.Send(num, phone);session.setAttribute(phone, num);return R.ok();} catch (Exception e) {e.printStackTrace();logger.error(e.getMessage());return R.error("fasle");}
import java.io.Exception;import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;public class Sendsms {private static String Url = "https://vip.veesing.com/smsApi/verifyCode";// 发送短信验证码public static void Send(Integer num, String mobile) {try {HttpClient client = new HttpClient();PostMethod method = new PostMethod(Url);client.getParams().setContentCharset("UTF-8");method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8");NameValuePair[] data = { new NameValuePair("appId", "*********"),new NameValuePair("appKey", "**********"), new NameValuePair("templateId", "*******"), new NameValuePair("mobile", "*******"),new NameValuePair("variables", "*******") };method.setRequestBody(data);client.executeMethod(method);String submitResult = method.getResponseBodyAsString();System.out.println(submitResult);} catch (Exception e) {e.printStackTrace();}}}
HttpSession session = req.getSession();String yzm = String.valueOf(session.getAttribute(username));logger.info(yzm);if (yzm == null) {return R.error("验证码错误");}if (yzm != null && !verifycode.equals(yzm)) {return R.error("验证码错误");}

短信验证码demo

package com.veesing.test; import java.io.IOException; import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import com.alibaba.fastjson.JSONObject;
import com.veesing.utils.Config; /** * 短信验证码 * @author MWH * */
public class SmsCodeTest { public static void main(String[] args) { // 获取连接 HttpClient client = new HttpClient(); // 短信验证码API接口地址 PostMethod method = new PostMethod("https://vip.veesing.com/smsApi/verifyCode"); // 设置编码 client.getParams().setContentCharset("UTF-8"); method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=utf-8"); // 手机号码,一次只能提交一个手机号码 String phone = "15080929435"; //模板ID(如没有模板ID请先在平台上新增并提交验证码模板,审核通过即可使用) String templateId = "36"; // 验证码变量(随机数) Integer num = (int)((Math.random()*9+1)*1000); String variables = num.toString(); System.out.println("验证码是:"+variables); // 拼接参数 NameValuePair[] data = {  new NameValuePair("appId", Config.appid),  new NameValuePair("appKey", Config.appkey), new NameValuePair("phone", phone),  new NameValuePair("templateId", templateId),  new NameValuePair("variables", variables) }; method.setRequestBody(data); try { client.executeMethod(method); String result = method.getResponseBodyAsString(); // 返回结果 System.out.println(result); JSONObject jsonObject = JSONObject.parseObject(result); // 返回2000则发送成功(逻辑操作请根据接口文档返回参数自行判断) if (jsonObject.get("returnStatus").equals("2000")) { System.out.println("成功!"); } else { System.out.println("失败!"); } // 释放连接 method.setRequestHeader("Connection", "close");   method.releaseConnection(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
} 

短信验证码接口测试【接入之前必备工作】相关推荐

  1. SMS106 短信验证码接口测试

    SMS106  短信验证码接口测试 一.什么是SMS106: 106短信通道是指仅中国移动.中国联通提供的网关短信平台,实现与客户指定号码进行短信批量发送和自定义发送的目的,即你收到的短信在手机上以1 ...

  2. 怎么一个好的短信验证码接口接入到自己的企业网站和APP程序当中选择

    文章来源:http://www.4006026717.com 短信验证码平台太多也是一种幸福的烦恼,毕竟好东西太多不知道该如何选也是很麻烦的.那么,如何选择一个好用的平台呢?下面小编为大家提供几个参考 ...

  3. 短信验证码接口测试案例

    简单的验证码登录接口实例,用于初步窥探接口自动化测试,短信验证码与语音验证码能够成功,每一步都增加了必要的print信息,在控制台可以进行校验. 代码为实际某应用登录案例,实际情况以接口信息改变相应参 ...

  4. 超详细的阿里云短信验证码服务接入流程(最新版)——包含工具类可直接使用(java)

    一.使用步骤 1.申请阿里云账号并认证 链接地址:https://www.aliyun.com/product/sms 2.创建一个新的AccessKeys 包含AccessKey ID 和Acces ...

  5. 创蓝253短信验证码接口接入常见问题

    1.登录https://zz.253.com/site/login.html 2.获取接口API账号,密码:选择任意产品>激活>企业认证(上传公司营业执照)以及请求地址 demo接入账号( ...

  6. 手机老是收不到短信验证码?我来告诉你为什么!

    有些用户在使用某产品时可能会出现短信验证码收不到的情况,同事之前也遇到过这样的情况,连续发送多次依然收不到短信.那么短信验证码为什么会发送失败.原因有哪些呢.#短信验证码安全 现在短信验证码服务在各种 ...

  7. 短信验证码总是发送失败是什么原因?

    有些用户在使用某产品时可能会出现短信验证码收不到的情况,同事之前也遇到过这样的情况,连续发送多次依然收不到短信.那么短信验证码为什么会发送失败.原因有哪些呢.#短信验证码安全 现在短信验证码服务在各种 ...

  8. 海量数据大课学习笔记(8)-账号微服务注册模块+短信验证码+阿里云OSS开发实战-小滴课堂

    文章目录 前言 第1集 账号微服务注册功能和流程介绍 第2集 第三方短信验证码平台接入申请操作指引 第3集 账号微服务短信验证码发送工具类封装实战 第4集 账号微服务短信验证码发送工具类单元测试 前言 ...

  9. 商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战

    商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战 文章目录 商用短链平台_第8章_ 账号微服务注册模块+短信验证码+阿里云OSS开发实战 第八章 账号微服务注册模块+短信验 ...

  10. 短信验证码发送失败的常见原因有哪些?

    短信验证码现在几乎已成为互联网各行业的标配所在,在账户注册.密码修改.支付确认等方面发挥着重要的作用.目前通过短信验证码接口接入第三方短信验证码平台的短信服务,99%以上的用户基本上都可以在几秒钟之内 ...

最新文章

  1. Hinton 新作!越大的自监督模型,半监督学习需要的标签越少
  2. (一)swoole服务启动流程
  3. ABAP TC 响应双击事件
  4. CGLIB代理到底是个什么东西?这是一篇最全的CGLIB大全
  5. fileitem方法_FileItem的常用方法
  6. 想要接触人工智能吗?先要学会如何阅读论文
  7. 社会资源全整合 视频监控全覆盖
  8. js 判断是否为mac电脑 、还是windows操作系统
  9. Spring实战(第4版)pdf
  10. PHP如何在两个大文件中找出相同的记录?
  11. unit10-Cookie、Session
  12. python之json模块
  13. ebyte Lora 转 4G 透传通讯测试
  14. 报错 UserWarning: No NMS is available. Please upgrade torchvision to 0.3.0+
  15. docker_周阳(一)
  16. 关于网络性能的一些指标
  17. 计算机在服装上的应用研究,图像识别技术在纺织品及服装研究中的应用
  18. SQL中日期与时间类型及函数
  19. 2021年幼儿园教师招聘:中班绘画活动《吹画梅花》
  20. 封装建立-SMD封装

热门文章

  1. 究竟云计算就业前景好不好 零基础如何学云计算
  2. Renascence使用方法
  3. 嵌入式(单片机方向)工程师如何做好定位和职业规划
  4. qt html表格自动增加行,QT中的tablewidget如何插入一行数据
  5. 戴尔t310服务器装系统步骤,dell笔记本重装系统教程
  6. 安卓控制新大陆云平台(三)
  7. Win10问题篇:解决电脑插入耳机没声音。
  8. 2021会员运营痛点分析
  9. python中读取xlsx文件
  10. 让财务流程自动化的5大理由