我们在登录一些大型网站的时候,总是会有一些短信验证,例如淘宝、支付宝、京东等网站,那么短信验证码发送的功能是怎么实现的呢?在这里我将带领大家探讨一下。
这次我选用容联云通讯的短信发送平台,注册会送话费,所以足够我们做测试用。
我们注册配置好测试账号,大概就是这个界面,具体怎么注册、配置测试账号、这里我们主要讲代码配置,注册好了大概就是下图这个样子:

容联云通讯官网:https://www.yuntongxun.com/
免费测试指南:https://doc.yuntongxun.com/p/5a531a353b8496dd00dcdfe2
1、前提条件
安装Java环境。云通讯 Java SMS SDK要求使用JDK1.7或更高版本
已经注册云通讯账号且已获取token,并已开通应用
2、导入maven依赖
<dependency> <groupId>com.cloopen</groupId> <artifactId>java-sms-sdk</artifactId> <version>1.0.1</version> </dependency>
3、编写发送短信测试方法
package com.allen.utils;
import com.cloopen.rest.sdk.BodyType;
import com.cloopen.rest.sdk.CCPRestSmsSDK;
import org.junit.Test;
import java.util.HashMap;
import java.util.Set;
public class SDKTestSendTemplateSMSTest {
@Test
public void SMSTest(){
//生产环境请求地址:app.cloopen.com
String serverIp = "app.cloopen.com";
//请求端口
String serverPort = "8883";
//主账号,登陆云通讯网站后,可在控制台首页看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN
String accountSId = "8aaf07*********************2b61eea";
String accountToken = "07c565***********************b70110";
//请使用管理控制台中已创建应用的APPID
String appId = "8aaf*************************c1ef0";
CCPRestSmsSDK sdk = new CCPRestSmsSDK();
sdk.init(serverIp, serverPort);
sdk.setAccount(accountSId, accountToken);
sdk.setAppId(appId);
sdk.setBodyType(BodyType.Type_JSON);
//发送短信至手机号
String to = "152******080";
//短信模板
String templateId= "1";
//这里模拟一下验证码123456,10分钟内到期
String[] datas = {"123456","10"};
HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas);
if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
Set<String> keySet = data.keySet();
for(String key:keySet){
Object object = data.get(key);
System.out.println(key +" = "+object);
}
}else{
//异常返回输出错误码和错误信息
System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
}
}
}4、启动测试

手机收到验证码,完成!
