阿里云短信服务接入和购买流程

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
国际/港澳台短信套餐包,全球plus 100条 6个月
简介: 很多用户不知道怎么接入短信,那么接下来就有小编跟大家讲解一下吧

一,准备工作

1.首先点击注册阿里云账号

图片.png


然后接下来讲解一下怎么接入短信吧

2.购买阿里云短信

点击:阿里云短信

一般测试开发用,选择:5000条即可

图片.png

二、接入阿里云短信

图片.png

1. 登录阿里云,点击头像看到获取AccessKey

图片.png

2. 使用子账号可以自己设置:

图片.png

图片.png

3. 创建用户组

图片.png

4. 配置用户组权限(sms)

图片.png

图片.png

5. 创建用户


图片.png

创建了用户将用户添加到用户组

6. 得到用户的AccessKey(id,密码)

一定要把这个账号保存下来!!!!之后各种微服务都要用到这个账号!!!!

图片.png

二、开通阿里云短信服务

1、阿里云搜索短信服务,进入短信服务控制台,开通短信服务

图片.png

短信发送频率:

图片.png

2、找到帮助文档

图片.png

三、添加短信模板

短信的具体内容

等待审核通过(需要正当理由)

图片.png

四、添加签名(也就是短信开头那个)

图片.png

五、编写测试代码

此时已经拿到授权码,短信服务,短信模板,短信签名

控制台的快速学习中有默认的demo:

图片.png

图片.png

安装使用SDK

Java SDK 文档

六、编写可复用的微服务接口,实现验证码的发送

1. 新建一个springboot的项目,导入依赖

      com.aliyun

      aliyun-java-sdk-core

      4.0.3

      com.alibaba

      fastjson

      1.2.75

      org.springframework.boot

      spring-boot-starter-data-redis

 

2. 测试短信服务

   // 连接阿里云,有三个参数

   // 1.地区  一般不变   2.accsessKey账号替换   3.账号的密码!  自己去阿里云找自己的账号密码

   DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");

   //构建一个客户端

   IAcsClient client = new DefaultAcsClient(profile);

      //构建一个请求!

   CommonRequest request = new CommonRequest();

   request.setMethod(MethodType.POST);

   request.setDomain("dysmsapi.aliyuncs.com");  //不要动

   request.setVersion("2017-05-25");    //不要动

   request.setAction("sendSms");   //自定义

   //自定义的参数(手机号,验证码,签名,模板)

   //  request.putQueryParameter("RegionId","cn-hangzhou");  

   request.putQueryParameter("phoneNumbers", "手机号");   //这里的手机号是接受短信的对象

   request.putQueryParameter("signName", "阿里云对应的签名名称写在这里");

   request.putQueryParameter("TemplateCode", "阿里云模板对应的Code写在这里");

   //构建一个短信验证码

   HashMap map = new HashMap<>();

   map.put("code", 2233);

   request.putQueryParameter("TemplateParam", JSON.toJSONString(map));

   try {

       CommonResponse response = client.getCommonResponse(request);   //发送

       System.out.println(response.getData());  //响应

   } catch (ServerException e) {

       e.printStackTrace();

   } catch (ClientException e) {

       e.printStackTrace();

   }

3. 真实业务

1. 创建业务文件夹

图片.png

2. 创建接口SendSms

public interface SendSms {

   //要传进来一个手机号,模板号,还有随机生成的验证码

   public boolean send(String phoneNum, String templateCode, Map code);

}

3. 封装SendSms的实现类

@Service

public class SendSmsImpl implements SendSms {

   @Override

   public boolean send(String phoneNum, String templateCode, Map code) {

       // 连接阿里云,有三个参数

       // 1.地区  一般不变   2.accsessKey账号替换   3.账号的密码!  自己去阿里云找自己的账号密码

       DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "密码");

       //构建一个客户端

       IAcsClient client = new DefaultAcsClient(profile);

       //构建一个请求!

       CommonRequest request = new CommonRequest();

       request.setMethod(MethodType.POST);

       request.setDomain("dysmsapi.aliyuncs.com");  //不要动

       request.setVersion("2017-05-25");    //不要动

       request.setAction("sendSms");   //自定义

       //自定义的参数(手机号,验证码,签名,模板)

      //  request.putQueryParameter("RegionId","cn-hangzhou");

       request.putQueryParameter("phoneNumbers", phoneNum);   //这里的手机号是接受短信的对        象

       request.putQueryParameter("signName", "阿里云对应的签名名称写在这里");

       request.putQueryParameter("TemplateCode", templateCode);

       request.putQueryParameter("TemplateParam", JSON.toJSONString(code));

       try {

           CommonResponse response = client.getCommonResponse(request);   //发送

           System.out.println(response.getData());  //响应

           return response.getHttpResponse().isSuccess();

       } catch (ServerException e) {

           e.printStackTrace();

       } catch (ClientException e) {

           e.printStackTrace();

       }

       return false;

   }

}

4. 接口:模拟真实测试:springboot集成redis

在application.properties配置redis后,打开本地redis的服务

srever.port=9000

spring.redis.host=127.0.0.1

spring.redis.port=6379

接口:

package com.sms.controller;

import com.sms.service.SendSms;

import io.netty.util.internal.StringUtil;

import org.apache.catalina.security.SecurityUtil;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.util.StringUtils;

import org.springframework.web.bind.annotation.CrossOrigin;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RestController;

import javax.swing.text.html.HTMLDocument;

import java.util.HashMap;

import java.util.UUID;

import java.util.concurrent.TimeUnit;


/**

* @author 蒋二妹

* @DATE 2021/9/1 - 22:06

*/

@RestController

@CrossOrigin     //跨域支持

public class SmsApiController {

   @Autowired

   private SendSms sendSms;

 @Autowired

   private RedisTemplate redisTemplate;

   @GetMapping("/send/{phone}")

   public String code(@PathVariable("phone") String phone){

       //调用发送方法(模拟真实测试:springboot集成redis)

       //通过手机号获取redis中是否存储过验证码,如果还有则没有过期,没有就重新生成存储进redis

       String code = redisTemplate.opsForValue().get(phone);

       if (StringUtils.isEmpty(code)) {

           return phone + ":" + code + "已存在,还没有过期";

       }

       //重新生成验证码并存储到redis

       code = UUID.randomUUID().toString().substring(0, 4);

       HashMap param = new HashMap<>();

       param.put("code", code);

       boolean isSend = sendSms.send(phone, "需要使用的模板code", param);

       if (isSend) {

           redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.SECONDS);

           return phone + ":" + code + "发送成功!";

       }else {

           return "发送失败!";

       }

   }

}

4. 启动启动类测试即可

localhost:9000/13511299999 回车查看返回字符串,此时手机也收到了一条短信验证码


相关文章
|
16天前
|
API
阿里云短信服务文档与实际API不符
阿里云短信服务文档与实际API不符
|
2月前
|
数据采集 监控 安全
阿里云短信服务+图形认证,有效降低验证码盗刷概率
阿里云短信服务+图形认证服务,有效降低验证码盗刷概率。
196 3
阿里云短信服务+图形认证,有效降低验证码盗刷概率
|
2月前
|
存储 NoSQL Java
|
3月前
|
数据采集 存储 监控
99%成功率背后:阿里云短信服务有何优势?
为什么短信会发送失败,如何提高短信发送成功率,本文将为您介绍短信发送成功率和阿里云短信服务如何保障企业短信稳定送达等相关知识。
155 1
99%成功率背后:阿里云短信服务有何优势?
|
3月前
|
存储 安全 网络安全
|
4月前
|
开发框架 前端开发 JavaScript
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
|
3月前
|
小程序
阿里云短信签名申请流程,有图,短信接入新手教程
阿里云短信签名是短信中的标识信息,如【阿里云】,用于表明发送方身份。申请流程简便:登录阿里云短信服务控制台,选择签名管理并添加签名,填写相关信息。审核通常2小时内完成。个人用户每日限申请一个通用签名,企业用户数量不限。已通过审核的签名不可更改名称,仅能调整其他信息并重新提交审核。更多详情及FAQ
|
3月前
|
小程序
阿里云短信签名申请流程,手动整理(附短信签名问题解答)
阿里云短信签名是短信中的标识信息,如【阿里云】,用于表明发送方身份。申请流程简便:登录阿里云短信服务控制台,选择国内消息下的签名管理并添加签名,按指引填写表单。审核通常2小时内完成。个人用户每日限申请一个通用签名,企业用户数量不限。签名审核需确保业务主体一致,已通过审核的签名不可改名,仅能调整其它信息并重新审核。特定情况下需上传授权委托书,且签名需关联已备案网站。
266 1
|
6月前
|
云安全 安全 API
阿里云——OpenAPI使用——短信服务
阿里云——OpenAPI使用——短信服务
288 0
|
5月前
|
存储 小程序 前端开发
【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
420 0