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