文档章节

微信小程序 - 使用阿里云发送短信

糊说八道
 糊说八道
发布于 2018/05/05 18:56
字数 1139
阅读 249
收藏 1

开发中使用微信小程序发送短信验证码,总结下使用的流程。

这个是首次接入完整的流程图,按照流程来基本可以实现接入。

短信流程图

介绍下签名和模板:

刚开始看这几个字时候会想这是啥东西?要仔细看官网介绍,就是在短信内容里附加个性化签名,再发送给被叫手机客户 ,例如短信内容这个xx科技就是你设置个性化签名。那么后面的内容就是你创建的短信内容模板,可以创建多个签名和模板,看自己选择用哪一个都写,可以根据你写代码入参时候确定使用。

其它:

前面几很简单,注意创建短信签名时候,注意填写签名名称按照规定来,不能随意填写审核可能不通过。其他的按照接入指引来很简单,自行脑补。

报错:

自己测试的时候会遇到,原因自己反复用自己手机号发短信#-_-导致

报错is-business-limit-control-message

该错误码是指触发短信默认流控限制;

短信验证码 :使用同一个签名,对同一个手机号码发送短信验证码,支持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功能了,是不是很简单,赶快试下吧。

 

水平有限,若有问题请留言交流。

互相学习,共同进步 :) 转载请注明出处谢谢。

 

© 著作权归作者所有

糊说八道
粉丝 8
博文 100
码字总数 46908
作品 0
其它
程序员
私信 提问
走路带疯/wx_yq_mall

微信小程序商城【wxyqmall】 微信小程序商城,微信小程序微店,长期维护版本,欢迎大家踊跃提交贡献代码; 参与开发 更多项目请关注 https://gitee.com/TengWeiYun。 小程序开发 [微信:hq5...

走路带疯
2018/08/31
0
0
JPress v1.0.5 优化发布,修复细节问题

JPress 一个类似 WordPress 的产品,使用Java开发。 特点 模板 模板安装 模板卸载 在线编辑(删除模板、修改模板、上传模板) 完善的开发文档 极致的开发体验 用户 独立登录和注册入口 独立的...

理工男海哥
02/01
235
0
JPress v1.0.1 发布,修复细节问题,提高用户体验

JPress 一个类似 WordPress 的产品,使用Java开发。 特点 模板 模板安装 模板卸载 在线编辑(删除模板、修改模板、上传模板) 完善的开发文档 极致的开发体验 用户 独立登录和注册入口 独立的...

理工男海哥
2018/12/21
767
2
JPress v1.0.4 发布,修复 XSS 安全问题,建议升级

JPress 一个类似 WordPress 的产品,使用Java开发。 特点 模板 模板安装 模板卸载 在线编辑(删除模板、修改模板、上传模板) 完善的开发文档 极致的开发体验 用户 独立登录和注册入口 独立的...

理工男海哥
01/21
939
0
JPress 1.0 正式版发布,历时2年,感谢大家

JPress 一个类似 WordPress 的产品,使用Java开发。 特点 模板 模板安装 模板卸载 在线编辑(删除模板、修改模板、上传模板) 完善的开发文档 极致的开发体验 用户 独立登录和注册入口 独立的...

理工男海哥
2018/12/13
1K
27

没有更多内容

加载失败,请刷新页面

加载更多

面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
9分钟前
8
0
读书笔记:深入理解ES6 (八)

第八章 迭代器(Iterator)与生成器(Generator) 第1节 循环语句的问题   在循环、多重循环中,通过变量来跟踪数组索引的行为容易导致程序出错。迭代器的出现旨在消除这种复杂性,并减少循...

张森ZS
10分钟前
8
0
Elasticsearch 实战(一) - 简介

官腔 Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 基本等于没说,咱们慢慢看 1 概述 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜...

JavaEdge
14分钟前
4
0
【jQuery基础学习】11 jQuery性能简单优化

本文转载于:专业的前端网站➦【jQuery基础学习】11 jQuery性能简单优化 关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的。如果这样不能直接找到,也可以用find方法继...

前端老手
23分钟前
7
0
重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源

导读:2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Open Application Model (OAM...

阿里云官方博客
26分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部