Java调用短信API发送短信验证码

355 阅读3分钟

验证码是设计注册登录的必备项,我们开发者总会接触到短信验证码平台。正好我最近在做公司的用户管理系统,需要实现手机号注册,今天就和大家分享一下怎么用java实现调用短信API发送短信验证码。

一.选择短信验证码平台

我用的Unisms合一短信(公司在十几家平台里筛选出来的,我觉得还挺不错的),各平台接口调用都差不多,所以大家用其他平台也是一样的。

 介绍:UniSMS (合一短信) 是全球首个聚合短信服务平台,第一次实现对上游短信服务商及云通讯平台
 的全链路整合:信息整合、通道整合、服务整合、技术整合及数据整合。

链接:unisms.apistd.com/

二.准备基本工作

首先要进入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接入了,大家可以根据自己登录注册的需求去实现相关等功能。