Java调用容联云通讯短信验证码API接口示例

1.注册账号
https://www.yuntongxun.com/doc.html
注册后点击控制台可以看到你的信息
Java调用容联云通讯短信验证码API接口示例_第1张图片
2.添加测试号码
Java调用容联云通讯短信验证码API接口示例_第2张图片
3.打开文档>Rest API>短信
下载Java Demo示例 下载地址

解压后将sdk(SDC/src/com/cloopen/rest)作为工具类复制到项目中
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019112119474262.png)
将lib中的httpclient.jar添加到项目lib中,或使用Maven私服依赖

Java调用容联云通讯短信验证码API接口示例_第3张图片
4.调用

复制文档中的接口调用示例,作为Service层的send方法发送验证码
@Service
public class SMsServiceImpl implements SMsService {
    @Autowired
    private RedisAPI redisAPI;
    @Override
    public boolean send(String phone) {//传入用户手机号
		//生成4位数随机验证码
        int number = new Random().nextInt((9999 - 1111 + 1) + 1111);
        String yzm = String.valueOf(number);
        CCPRestSDK restAPI = new CCPRestSDK();
        restAPI.init("app.cloopen.com", "8883");// 初始化服务器地址和端口,格式如下,服务器地址不需要写https://
        restAPI.setAccount(ACCOUNT_SID, AUTH_TOKEN);// 初始化主帐号和主帐号TOKEN
        restAPI.setAppId(APP_ID);// 初始化应用ID
        HashMap<String, Object> result = restAPI.sendTemplateSMS(phone, "1", new String[]{yzm,"2"});//参数1:用户手机号,参数2:使用的模板号,参数3:设置验证码和过期时间提示

        System.out.println("SDKTestSendTemplateSMS result=" + result);

        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);
            }
            //发送成功后将验证码存入Redis,设置2分钟的过期时间
            String key = "code:" + phone;
            redisAPI.set(key,2*60,yzm);
            return true;
        }else{
            //异常返回输出错误码和错误信息
            System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
            return false;
        }
    }
	 可参考demo中的接口调用文件:
	 demo\src\com\cloopen\rest\demoSDKTestSendTemplateSMS.Java。
Controller方法
 @RequestMapping("send")//发送验证码的请求
    public Dto send(String phone){
        if (sMsService.send(phone)) {//调用发送方法并存入Redis
            return DtoUtil.returnSuccess("验证码发送成功");
        }
        return DtoUtil.returnFail("发送异常","404");
    }
	//验证用户提交的验证码
    @RequestMapping(value = "validatephone/{user}/{code}",method = RequestMethod.PUT)
    public Dto register(@PathVariable String phone,
                        @PathVariable String code){
        String redisCode = sMsService.getCode(phone);//取出缓存中的验证码
        if (!"".equals(redisCode)) {
            if (redisCode.equals(code)) {//对比
                return DtoUtil.returnSuccess("验证成功!");
            } else {
                return DtoUtil.returnFail("验证码有误!", "401");
            }
        } else {
            return DtoUtil.returnFail("验证码有误!", "401");
        }

    }

学习中的记录,如果有不准确的地方望谅解,并指出谢谢

你可能感兴趣的:(Java)