验证码是设计注册登录的必备项,我们开发者总会接触到短信验证码平台。正好我最近在做公司的用户管理系统,需要实现手机号注册,今天就和大家分享一下怎么用java实现调用短信API发送短信验证码。
一.选择短信验证码平台
我用的Unisms合一短信(公司在十几家平台里筛选出来的,我觉得还挺不错的),各平台接口调用都差不多,所以大家用其他平台也是一样的。
介绍:UniSMS (合一短信) 是全球首个聚合短信服务平台,第一次实现对上游短信服务商及云通讯平台
的全链路整合:信息整合、通道整合、服务整合、技术整合及数据整合。
二.准备基本工作
首先要进入unisms网站做好前面基本工作
1.实名认证
按照短信平台步骤进行实名认证,短信平台都是需要实名认证才能使用。
2.创建签名
签名注意事项: 签名支持以组织机构名、网站名、应用软件名、公众号/小程序名、电商店铺名、商标名或其对应简称命名。支持使用当前账号实名认证主体所持有的资质或公开信息,同时也支持来自非当前账号实名认证的第三方主体授权委托。
3.创建验证码短信模板
大多数短信平台可自定义短信模板编码,以此来增加模板标识的可读性
4.获取验证码平台给的AccessKey ID和AccessKey Secret
三.服务端接口的实现
这个时候我们可以去看一下各个短信平台的接口文档,都会有详细的说明。
Unisms Java SDK 使用 Maven 托管,可从公共 Maven 仓库 中获得。
在项目中使用以下代码添加 Maven 依赖:
或使用 Gradle:
implementation "com.apistd.uni:uni-sdk:0.0.4"
unisms采用短信发送的形式是自己设置短信模板,服务端生成随机验证码,平台负责给用户发送短信验证码短信。验证码的正确性需要服务端自己验证。
测试代码
import com.apistd.uni.Uni;
import com.apistd.uni.UniException;
import com.apistd.uni.UniResponse;
import com.apistd.uni.sms.UniSMS;
import com.apistd.uni.sms.UniMessage;
import java.util.HashMap;
import java.util.Map;
public class Example {
public static String ACCESS_KEY_ID = "your access key id";
private static String ACCESS_KEY_SECRET = "your access key secret";
public static void main(String[] args) {
// 初始化 Uni.init(ACCESS_KEY_ID, ACCESS_KEY_SECRET);
// 若使用简易验签模式仅传入第一个参数即可
// 设置自定义参数 (变量短信)
Map<String, String> templateData = new HashMap<String, String>();
templateData.put("code", "6666");
// 构建信息
UniMessage message = UniSMS.buildMessage()
.setTo("your phone number")
.setSignature("UniSMS")
.setTemplateId("login_tmpl")
.setTemplateData(templateData);
// 发送短信
try {
UniResponse res = message.send();
System.out.println(res);
} catch (UniException e) {
System.out.println("Error: " + e);
System.out.println("RequestId: " + e.requestId);
}
}
}
给大家一个生成随机数字的utils
public class RandomUtil {
private static final Random random = new Random();
private static final DecimalFormat fourdf = new DecimalFormat("0000");
private static final DecimalFormat sixdf = new DecimalFormat("000000");
//生成4位随机数
public static String getFourRandom() {
return fourdf.format(random.nextInt(10000));
}
//生成6位随机数
public static String getSixRandom() {
return sixdf.format(random.nextInt(1000000));
}
}
到这里基本上就实现短信api接入了,大家可以根据自己登录注册的需求去实现相关等功能。