背景

在最近的项目需求中, 需要将复用阿里短信能力, 实现用户手机号验证: 如果用户号码验证通过后, 可以让用户上传文件资料并进行打印.
故核心内容就是: 阿里云短信服务接入, 下面我们主要来介绍下阿里云短信服务接入流程

一. 熟悉整个对接流程

  1. 进入阿里云短信服务新手指引页面
    可以看到整个对接流程如下图所示:

  2. 每个过程如下图所示:

二. 具体搭建过程

准备工作

  1. 注册后登录云通信产品试用界面

  2. 进行实名认证,如下图所示


  3. 开通短信服务
    购买免费的短信包, 然后零元购后就可以在短信控制台进行配置

    点击进入 阿里云短信服务控制台. 这里可以修改每分钟, 每小时, 每天发送信息的频率

  4. 获取AccessKey
    在阿里云短信服务控制台右上角点击AccessKey管理

    创建用户组

    配置用户组权限

    在用户组-添加组成员页面新建用户

    新建用户

    新建用户配置(该用户属于子用户, 用于发送短信)

    复制并保存 AccessKey ID和AccessKey Secret, 以便在后续SDK中使用
    (这一步非常重要, 因为AccessKey ID 和 AccessKey Secret只显示一次, 无法找回, 只能重新生成)

添加签名

注意: 如果仅仅测试的话, 可以跳过添加签名添加模板步骤. 直接调用sdk, 并使用无限制的测试签名和模板进行测试

  1. 添加签名设置
  2. 根据用途选择适用场景和签名用途, 然后进行审核

添加模板

  1. 创建模板
    模板就是指短信模板, 具体就是在发送验证短信时, 短信发送内容的模板

  2. 配置短信模板内容后进行审核, 审核通过即可使用

发送短信(SDK)

注意: 这里因为使用sdk进行测试调用, 因此无需等待签名和模板审核成功. 使用下面短信测试专用的签名和模板编码即可
SignName: 阿里云短信测试,
TemplateCode: SMS_154950909

整体流程
进入OpenApi页面 -> 添加参数 -> 发起调用 -> 复制生成的sdk代码 -> 下载jar包->封装并复用代码

  1. 配置测试手机号
    因为使用的是测试模板和签名, 因此需要我们配置用于测试的手机号

    否则则会提示: 只能向已回复授权信息的手机号发送

  2. 在线调用sdk
    这里调用成功后, 就会发送短信.

  3. 查看是否调用成功(成功后复制sdk代码)
    发起调用成功并收到短信后(如下图), 复制上图右侧生成的sdk示例代码到项目中

  4. 添加依赖( 获取sdk的jar包 )
    如果是maven项目. 直接复制下图展示的Maven坐标

注意: 如果是SSM/JavaEE项目(需要手动放入jar), 配置过程如下

  1. 直接将下图包放到指定目录下(博客底部会将jar分享)

  2. Project Structure->Libraries 中, 将lib下面的jar添加到项目中

  3. 选择jar所在目录, 添加后如下图所示

  4. 添加成功后, 对应的sdk代码则不会报红, 项目也可以正常运行

三. 封装sdk方法

  1. 将上一步的sdk方法进行封装
    这里主要有三个方法: 第一个用于使用AK&SK初始化账号Client, 第二个用于生成6位验证码. 第三个用于获取发送短信结果

    import com.aliyun.dysmsapi20170525.Client;
    import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
    import com.aliyun.tea.TeaException;
    import com.aliyun.teaopenapi.models.Config;
    import org.springframework.stereotype.Component;/*** info:** @Author caoHaiYang* @Date 2022/8/29 11:47*/
    @Component
    public class SendSms {public static final String accessKeyId = "你的accessKeyId ";public static final String accessKeySecret = "你的accessKeySecret ";public static final String templateCode = "SMS_154950909";public static final String signName = "阿里云短信测试";/*** 使用AK&SK初始化账号Client* @param accessKeyId* @param accessKeySecret* @return Client* @throws Exception*/public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {Config config = new com.aliyun.teaopenapi.models.Config()// 您的 AccessKey ID.setAccessKeyId(accessKeyId)// 您的 AccessKey Secret.setAccessKeySecret(accessKeySecret);// 访问的域名config.endpoint = "dysmsapi.aliyuncs.com";return new com.aliyun.dysmsapi20170525.Client(config);}/*** 获取6位验证码* @return*/public  String getVerifyCode() {Long codeL = System.nanoTime();String codeStr = Long.toString(codeL);String verifyCode = codeStr.substring(codeStr.length() - 6);System.out.println("生成的6位验证码为:" + verifyCode);return verifyCode;}/*** 发送短信* @param phoneNumber   手机号* @throws Exception* @return   短信验证码(如果为null说明出现错误)*/public String sendMessage(String phoneNumber) throws Exception {//随机生成6位验证码String verifyCode = this.getVerifyCode();Client client = SendSms.createClient(accessKeyId, accessKeySecret);com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest().setPhoneNumbers(phoneNumber).setSignName(signName).setTemplateCode(templateCode).setTemplateParam("{\"code\":\""+verifyCode+"\"}");com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();try {// 复制代码运行请自行打印 API 的返回值SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);System.out.println(sendSmsResponse.getBody().getMessage());return verifyCode;} catch (TeaException error) {// 如有需要,请打印 errorcom.aliyun.teautil.Common.assertAsString(error.message);} catch (Exception _error) {TeaException error = new TeaException(_error.getMessage(), _error);// 如有需要,请打印 errorcom.aliyun.teautil.Common.assertAsString(error.message);}return null;}}
  2. 新建短信发送业务

    /*** 发送短信业务* @Author caoHaiYang* @Date 2022/8/29 13:47*/
    public interface SendMessageService {/*** 短信发送接口* @param phoneNumber* @return*/int sendMessage(String phoneNumber) throws Exception;/*** 验证短信码* @param phoneNumber* @param verifyCode* @return*/int verifyMessageCode(String phoneNumber, String verifyCode);
    }
    
  3. 创建业务实现类

    这里的逻辑就是:
    发送短信接口传入手机号之后, 调用 sendSms.sendMessage 返回验证码, 然后将手机号作为key验证码作为value放入redis中并设置过期时间. 而在验证短信码接口调用时: 根据传入的手机号去redis中查验证码, 将查询到的验证码和接口传入的验证码进行比对. 成功返回1, 不成功返回0

    import com.ring.config.Constants;
    import com.ring.config.JedisPoolUtil;
    import com.ring.model.BannerBean;
    import com.ring.service.SendMessageService;
    import com.ring.sms.SendSms;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.stereotype.Service;
    import redis.clients.jedis.Jedis;import javax.annotation.Resource;/*** info:** @Author caoHaiYang* @Date 2022/8/29 16:07*/
    @Service
    public class SendMessageServiceImpl implements SendMessageService {@Resourceprivate SendSms sendSms;@Overridepublic int sendMessage(String phoneNumber) throws Exception {//通过阿里sms发送短信String verifyCode = sendSms.sendMessage(phoneNumber);if (StringUtils.isEmpty(verifyCode)) {return 0;}//将短信保存到redis中Jedis jedis = null;try {jedis = JedisPoolUtil.getJedis();jedis.auth(Constants.REDIS_PASSWORD);jedis.select(Constants.REDIS_DB);jedis.setex(phoneNumber, 600, verifyCode);return 1;} catch (Exception e) {e.printStackTrace();}return -1;}@Overridepublic int verifyMessageCode(String phoneNumber, String verifyCode) {Jedis jedis = null;try {jedis = JedisPoolUtil.getJedis();jedis.auth(Constants.REDIS_PASSWORD);jedis.select(Constants.REDIS_DB);String currentVerifyCode = jedis.get(phoneNumber);if (verifyCode.equals(currentVerifyCode)) {return 1;}} catch (Exception e) {e.printStackTrace();}return 0;}
    }
    
  4. 生成代码操作
    在测试完短信验证码后, 我们可以根据以下流程流程编写其他接口代码
    进入OpenApi页面 -> 添加参数 -> 发起调用 -> 复制生成的sdk代码 -> 封装并复用代码

  5. 当前阿里云短信服务可以提供的接口如下图所示

查询发送详情

发送成功后, 可以在短信服务控制台查看发送详情
查看指定时段短信发送量

查看短信具体发送内容
https://pan.baidu.com/s/1a3FeYANNIEo8ZvO5tIPeJg?pwd=pces


链接:https://pan.baidu.com/s/1a3FeYANNIEo8ZvO5tIPeJg
关注后进入私聊, 回复括号内关键字[ 短信服务 ] 获取阿里云短信服务jar包提取码

阿里云短信服务接入流程相关推荐

  1. python 阿里云短信服务接入流程

    阿里云短信服务接入流程 最近公司项目中的业务需求包括使用阿里云发送短信,所以写一篇博客和大家分享一下python使用sdk对接阿里云短息api的流程. 阿里云官方文档 链接 左侧导航栏中有很多部分,着 ...

  2. PHP 对接阿里云短信服务完整流程

    本文目录 一.开通阿里云短信服务 二.获取阿里云访问密钥 (一)打开 AccessKey 管理 (二)创建 AccessKey 密钥 三.创建短信签名和短信模板 四.下载 PHP SDK(仅支持5.5 ...

  3. ThinkPHP5.1接入阿里云短信服务(原大鱼最新版)指导

    ♘背景 随着科技发展的推动,曾经充满温馨问候与回忆的短信业务,如今绝大多数局限于 验证码发送.诈骗/骚扰信息.业务推送 的使用 而作为一名IT搬砖的码农,对于第三方服务的接入也是必须掌握的技能,此处介 ...

  4. 如何接入阿里云短信服务 (完整指南)

    目录 一.注册并实名认证 二.开通短信服务 三.获取AccessKey 四.设置短信内容 五.配置短信接口 六.发送短信 七.常见问题FAQ 一.注册并实名认证 使用阿里云短信服务,用户需要先在阿里云 ...

  5. NET接入阿里云短信服务

    Net Core+阿里云实现短信验证码 开通阿里云短信服务 首先要开通阿里云短信服务,这个不多赘述,看图 开通之后,来到管理控制台 点击国内消息-->签名管理-->添加签名 同样的步骤,模 ...

  6. 阿里云短信服务bug

    接入阿里云短信服务,在springboot中写测试方法,执行到 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou ...

  7. vue+springboot+阿里云短信服务(集成redis实现验证码登录业务)

    阿里云短信服务-介绍 阿里云短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力.调用API或用群发助手,即可发送验证码.通知类和营销类短信:国内验 ...

  8. 单点登录常见解决方式和阿里云短信服务

    1 单点登录(SSO) 三种常见方式: 1.1 第一种:session广播机制实现(已淘汰) 概念:就是session复制,一个模块登录后,该模块session存放用户登录信息,再把该session复 ...

  9. 阿里云短信服务——短信发送验证码

    引言 短信服务现在在很多地方都用的到,我们最多接触到的可能就是验证码的发送了:现在很多大厂都提供由短信服务对应的api,直接调用就可以轻松实现短信发送:下面我以阿里云为例,演示一下如何短信发送验证码: ...

最新文章

  1. Ubuntu定时任务crontab命令介绍
  2. android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu[转]
  3. Py之mpld3:mpld3的简介、安装、使用方法之详细攻略
  4. 在Spring MVC中使用注解的方式校验RequestParams
  5. Linux内核调试技术——kprobe使用与实现
  6. Oracle RAC学习笔记:基本概念及入门
  7. python for循环文件每一行_python – 在使用for循环读取文件时跳过一行
  8. 使用常识 | 如何在word中添加勾选框
  9. 数据传输优化篇之:scp 或 rsync+ssh 参数优化
  10. python的框架django_Python框架Django高级内容,python
  11. CMDB数据库设计-四种方案任你选
  12. nodejs实现redis ORM
  13. 滴滴java开发面试题_最新Java面试题汇总,看完这些面试文章足够了
  14. [NOIP2017 普及组] 图书管理员
  15. java技术简介英文_JAVA技术人员英文简历模板
  16. react CSS实现箭头图标
  17. tensorflow:Not creating XLA devices, tf_xla_enable_xla_devices not set
  18. 运维自我提升:怎样做好企业 IT 运维工作
  19. 剑网三游戏延迟太高卡顿进不去怎么处理?
  20. 20230206 作业

热门文章

  1. 微信公众平台多客服系统怎么使用?
  2. 【SolidWorks插件】 凯元工具(KYTool)
  3. 15款图片批量处理软件下载
  4. Mini Fabric (一)Windows上安装教程
  5. 操作系统知识——银行家算法
  6. 题目:编写函数fin,其功能是计算:(ln(1)+ln(2)+1n(3).....+ln(m))平方根值,s作为函数值返回。
  7. 云南省行政村谷歌图层_如何根据行政边界(省市区县乡镇)下载地图
  8. 推荐 windows xp sp3 OEM+VOL 28合1
  9. 天猫精灵 python_(一 ) 天猫精灵接入Home Assistant-服务器搭建
  10. 【技术贴】asms文件,安装windows xp原版时,需要“asms”文件,H:\I386\asm