2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 阿里云短信验证码(发送短信验证码)

阿里云短信验证码(发送短信验证码)

时间:2018-10-30 21:58:39

相关推荐

阿里云短信验证码(发送短信验证码)

注意:在需在阿里云短信服务处申请accessKeyId,accessKeySecret,还有短信名头,短信模板填入下方空处

首先创建一个随机生成二维码的工具类CodeUtils

public class CodeUtils {/*** 生成6位随机数验证码* @return*/public static String getvcode(){StringBuilder vcode = new StringBuilder();for (int i = 0; i < 6; i++) {vcode.append((int)(Math.random() * 9));}return vcode.toString();}}

发送短信验证码工具类SmsUtils

package com.lzy.shiyuan.utils.smsUtils;import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.IAcsClient;import com.aliyuncs.dysmsapi.model.v0525.SendSmsRequest;import com.aliyuncs.dysmsapi.model.v0525.SendSmsResponse;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.http.MethodType;import com.aliyuncs.profile.DefaultProfile;import com.aliyuncs.profile.IClientProfile;/*** 功能描述:* @param:* @return:* @auther: lzy* @date: /3/16 0016 15:00*/public class SmsUtils {/*** 20 * @param args 21*/// 随机验证码private int code;public int getCode() {return code;}public void setCode() {code = (int) ((Math.random() * 9 + 1) * 100000); // 每次调用生成一次六位数的随机数}// 产品名称:云通信短信API产品,开发者无需替换static final String product = "Dysmsapi";// 产品域名,开发者无需替换static final String domain = "";public String codetemp;// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)static final String accessKeyId = "";static final String accessKeySecret = "";public String sendSms(String telphone, Integer statusCode) throws ClientException {// 可自助调整超时时间System.setProperty(".client.defaultConnectTimeout", "10000");System.setProperty(".client.defaultReadTimeout", "10000");// 初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);// 组装请求对象SendSmsRequest request = new SendSmsRequest();// 使用post提交request.setMethod(MethodType.POST);// 待发送的手机号request.setPhoneNumbers(telphone);// 短信签名request.setSignName("");// 短信模板IDif (statusCode == 1) {request.setTemplateCode("");// 注册时获取验证码} else if (statusCode == 2) {request.setTemplateCode("");// 登录时获取验证码} else if (statusCode == 3) {request.setTemplateCode("");// 身份验证} else if (statusCode == 4) {request.setTemplateCode("");// 登录异常} else if (statusCode == 5) {request.setTemplateCode("");// 修改密码} else if (statusCode == 6) {request.setTemplateCode("");// 信息审核验证码}// 验证码SmsUtils sms = new SmsUtils();sms.setCode();codetemp = sms.getCode() + "";System.out.println("code: " + codetemp);/** 可选:模板中的变量替换JSON串, 如模板内容为"亲爱的${name},您的验证码为${code}"时,* 此处的值为{"name":"Tom","code":"1454"} \ 反斜杠为转义字符,使得输出双引号*/request.setTemplateParam("{\"code\":\"" + codetemp + "\"}");// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者// request.setOutId("1454");SendSmsResponse response = acsClient.getAcsResponse(request);if (response.getCode() != null && response.getCode().equals("OK")) {// 请求成功System.out.println("发送成功!");} else {System.out.println("发送失败!");}return codetemp;}}

controller

package com.lzy.shiyuan.controller;import com.aliyuncs.exceptions.ClientException;import com.lzy.shiyuan.utils.smsUtils.SmsUtils;import org.springframework.web.bind.annotation.*;import java.util.HashMap;import java.util.Map;/*** @author lzy* @Date /3/16 0016 14:26* @Version 1.0* @name*/@CrossOrigin( maxAge = 3600 )@RestControllerpublic class SmsController {/*** 功能描述:发送短信验证码* @param: [phone]* @return: java.util.Map<java.lang.String,java.lang.String>* @auther: lzy* @date: /3/16 0016 15:15*/@PostMapping("sendSms")public Map<String,String> sendSms(String phone){Map<String,String> resultMap = new HashMap<>(31);System.out.println("-------------- 发送短信验证码 --------------");System.out.println("===>>> phone:"+phone);if(phone!=null){SmsUtils smsUtils = new SmsUtils();boolean ok = true;String code = null;try {code = smsUtils.sendSms(phone,3);}catch (ClientException e){e.printStackTrace();ok = false;}if(ok){resultMap.put("code","0");resultMap.put("sms",code);resultMap.put("msg","验证码已发送,请稍等");}else{resultMap.put("code","1");resultMap.put("msg","发送失败,请稍后重试");}}else{resultMap.put("code","1");resultMap.put("msg","电话号码不能为空");}return resultMap;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。