开发中使用微信小程序发送短信验证码,总结下使用的流程。java
这个是首次接入完整的流程图,按照流程来基本能够实现接入。小程序
介绍下签名和模板:微信小程序
刚开始看这几个字时候会想这是啥东西?要仔细看官网介绍,就是在短信内容里附加个性化签名,再发送给被叫手机客户 ,例如短信内容这个xx科技就是你设置个性化签名。那么后面的内容就是你建立的短信内容模板,能够建立多个签名和模板,看本身选择用哪个都写,能够根据你写代码入参时候肯定使用。api
其它:微信
前面几很简单,注意建立短信签名时候,注意填写签名名称按照规定来,不能随意填写审核可能不经过。其余的按照接入指引来很简单,自行脑补。dom
报错:ide
本身测试的时候会遇到,缘由本身反复用本身手机号发短信#-_-致使函数
该错误码是指触发短信默认流控限制;学习
短信验证码 :使用同一个签名,对同一个手机号码发送短信验证码,支持1条/分钟,5条/小时,10条/天。一个手机号码经过阿里云短信服务平台只能收到40条/天。(如您是在发送验证码时提示业务限流,建议根据以上业务调整接口调用时间)测试
短信通知: 使用同一个签名和同一个短信模板ID,对同一个手机号码发送短信通知,支持50条/日(如您是在发短信通知时提示业务限流,建议根据以上业务调整接口调用时间)
按照以上的限制来发送,即不会出现触发流控的状况。
下面举个栗子Demo(以我作的验证码为例)
public class SmsDemo { //产品名称:云通讯短信API产品,开发者无需替换 static final String product = "Dysmsapi"; //产品域名,开发者无需替换 static final String domain = "dysmsapi.aliyuncs.com"; //此处须要替换成开发者本身的AK(在阿里云访问控制台寻找) static final String accessKeyId = "yourAccessKeyId"; static final String accessKeySecret = "yourAccessKeySecret"; public static SendSmsResponse sendSms() throws ClientException { //可自助调整超时时间 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.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(); //必填:待发送手机号 request.setPhoneNumbers("15000000000");//号码不固定根据业务来 //必填:短信签名-可在短信控制台中找到 request.setSignName("云通讯"); //必填:短信模板-可在短信控制台中找到 request.setTemplateCode("SMS_1000000"); //可选(根据需求肯定,我作的发验证码因此要写):模板中的变量替换JSON串, //如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 String codeId=RandomStringUtils.randomNumeric(6);//生成6位随机数 request.setTemplateParam("{\"code\":\"" + codeId + "\"}"); //hint 此处可能会抛出异常,注意catch SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); return sendSmsResponse; }
别忘了加上项目依赖的jar包
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.2.8</version> 注:如提示报错,先升级基础包版,没法解决可联系技术支持 </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.1.0</version> </dependency>
若是对本身的验证码表示不满,还能够试试这几个,或者本身找下其余方法也行。
//产生6位长度的随机字符串 RandomStringUtils.random(6); //使用指定的字符生成6位长度的随机字符串 RandomStringUtils.random(6, new char[]{'a','b','c','d','e','f'}); //生成指定长度的字母和数字的随机组合字符串 RandomStringUtils.randomAlphanumeric(6); //生成随机数字字符串 RandomStringUtils.randomNumeric(6);
下面执行main函数便可体验短信产品API功能了,是否是很简单,赶快试下吧。
水平有限,如有问题请留言交流。
互相学习,共同进步 :) 转载请注明出处谢谢。