SpringBoot实现阿里云短信接口对接的示例代码

前言

公司最近项目需要一个手机验证码的功能,任务确定后,倍感亚历山大,以为和第三方对接的都好麻烦,查阿里的API、网上大神写的博客,各种查之后才发现,简单的一塌糊涂,这里想说个问题,不知道其他的攻城狮们是不是和我一样的心里,刚接触个没做过的任务时,会一脸懵里的着急,无从下手的感觉,后来会了,就觉得简单的一*,在这里我说一下自己的体会,遇到任何难点,先理思路、任务拆分、逐个查资料,其实一套下来,就不会那种一脸懵逼的干着急。。。

所需条件

1、阿里云账户

2、开通云通讯中的短信服务

3、申请短信签名和模板

4、创建access_key和access_secret

5、然后就是代码编写

话不啰嗦,直接开始开发步骤

开发步骤

开通短信服务

创建创建access_key和access_secret

申请短信模板和签名

开发步骤

1、创建AliyunConfig类

package com.preread.user.config;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

import java.util.Random;

/**
 * @Description: 阿里云短信接口配置类
 * @author: yangxf
 * @date: 2019/4/11 15:01
 */
public class AliyunConfig {

  /* 短信API产品名称(短信产品名固定,无需修改) */
  private static final String product = "Dysmsapi";

  /* 短信API产品域名,接口地址固定,无需修改 */
  private static final String domain = "dysmsapi.aliyuncs.com";

  /* 此处需要替换成开发者自己的accessKeyId和accessKeySecret(在阿里云访问控制台寻找) */
  private static final String accessKeyId = "你的accessKeyId"; //TODO: 这里要写成你自己生成的
  private static final String accessKeySecret = "你的accessKeySecret";//TODO: 这里要写成你自己生成的

  /* 短信发送 */
  public static SendSmsResponse sendSms(String phone) 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(phone);
    /* 必填:短信签名-可在短信控制台中找到 */
    request.setSignName("提前看"); //TODO: 这里是你短信签名
    /* 必填:短信模板code-可在短信控制台中找到 */
    request.setTemplateCode("你的模板code"); //TODO: 这里是你的模板code
    /* 可选:模板中的变量替换JSON串,如模板内容为"亲爱的用户,您的验证码为$[code]"时,此处的值为 */
    request.setTemplateParam("{\"code\":\"" + getMsgCode() + "\"}");

    // hint 此处可能会抛出异常,注意catch
    SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
    if(sendSmsResponse.getCode()!= null && sendSmsResponse.getCode().equals("OK")){
      System.out.println("短信发送成功!验证码:" + getMsgCode());
    }else {
      System.out.println("短信发送失败!");
    }
    return sendSmsResponse;
  }

  /**
   * @Function: 生成验证码
   * @author:  yangxf
   * @Date:   2019/4/11 15:30
   */
  private static String getMsgCode() {
    int n = 6;
    StringBuilder code = new StringBuilder();
    Random ran = new Random();
    for (int i = 0; i < n; i++) {
      code.append(Integer.valueOf(ran.nextInt(10)).toString());
    }
    return code.toString();
  }
}

2、controller层调用

/**
 * @Function: 短信验证接口
 * @author: Yangxf
 * @Date: 2019/4/11 15:39
*/
@RequestMapping("/smsverification")
public Object SmsVerification(@Param("phone") String phone) {
  return userViewService.SmsVerification(phone);
}

3、service层代码

/**
 * @Function: 短信验证
 * @author:  Yangxf
 * @Date:   2019/4/11 15:56
 * @param:  phone 手机号
 */
@Override
public Map<String, Object> SmsVerification(String phone) {
  Map<String, Object> map = new HashMap<>();
  try {
    AliyunConfig.sendSms(phone);
    map.put("code", 200);
    map.put("msg", "短信验证发送成功");
    return map;
  } catch (ClientException e) {
    map.put("code", 300);
    map.put("msg", e.getMessage());
    return map;
  }
}

4、集成阿里云SDK

 <!-- 阿里云短信SDK -->
	<dependency>
		<groupId>com.aliyun</groupId>
		<artifactId>aliyun-java-sdk-core</artifactId>
		<version>4.1.0</version>
	</dependency>
	<dependency>
		<groupId>com.aliyun</groupId>
		<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
		<version>1.1.0</version>
	</dependency>
	<dependency>
		<groupId>joda-time</groupId>
		<artifactId>joda-time</artifactId>
	</dependency>
	<dependency>
		<groupId>commons-codec</groupId>
		<artifactId>commons-codec</artifactId>
		<version>1.7</version>
	</dependency>

至此代码阶段OK,可以测试了

效果如下:

到此这篇关于SpringBoot实现阿里云短信接口对接的示例代码的文章就介绍到这了,更多相关SpringBoot 阿里云短信接口对接内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springboot实现阿里云通信短信服务有关短信验证码的发送功能

    前言 短信验证码是通过发送验证码到手机的一种有效的验证码系统.主要用于验证用户手机的合法性及敏感操作的身份验证. 现在市面上的短信服务平台有很多.大家在选择的时候未免会有些不好抉择.本人建议选择短信服务商应遵循以下几点: 服务商知名度高,业务流量大.(这样的平台可信度高) 服务稳定,不能经常宕机.(保证自身业务的流畅运行) 文档全面详细.(没文档怎么玩?) 最近的一个项目中,注册和修改密码时需要用到短信验证码校验手机号的功能.本人也是对比几家后,直接选择阿里云通信的短信服务.(本身项目服务器也是

  • SpringBoot实现阿里云短信接口对接的示例代码

    前言 公司最近项目需要一个手机验证码的功能,任务确定后,倍感亚历山大,以为和第三方对接的都好麻烦,查阿里的API.网上大神写的博客,各种查之后才发现,简单的一塌糊涂,这里想说个问题,不知道其他的攻城狮们是不是和我一样的心里,刚接触个没做过的任务时,会一脸懵里的着急,无从下手的感觉,后来会了,就觉得简单的一*,在这里我说一下自己的体会,遇到任何难点,先理思路.任务拆分.逐个查资料,其实一套下来,就不会那种一脸懵逼的干着急... 所需条件 1.阿里云账户 2.开通云通讯中的短信服务 3.申请短信签名

  • 关于springboot集成阿里云短信的问题

    目录 1.获取签名与模板 2.编写模板与签名的枚举类 3.配置类 4.测试类 ​ 1.获取签名与模板 进入阿里云平台,进入短信服务模块,在以下位置添加签名和模板(格式一定按照要求填写 审批的比较严格) 2.编写模板与签名的枚举类 在上文获取模板与签名成功后,并作为常量放在枚举类中. public enum DySmsEnum { /** * 本类此处需要修改(短信模板编码,签名,参数) */ LOGIN_TEMPLATE_CODE("SMS_187570276", "自定义软

  • SpringBoot整合阿里云短信服务的方法

    目录 一.新建短信微服务 1.在service模块下创建子模块service-msm 3.配置application.properties 4.创建启动类 二.阿里云短信服务 三.编写发送短信接口 1.在service-msm的pom中引入依赖 2.编写controller,根据手机号发送短信 3.编写service 一.新建短信微服务 1.在service模块下创建子模块service-msm 2.创建controller和service代码 3.配置application.propertie

  • SpringBoot实现阿里云短信发送的示例代码

    阿里云accessID和secret请自行进入阿里云申请 sms.template.code 请进入阿里云,进行短信服务进行魔板添加 开源代码地址在文章末尾 话不多说,直接上代码: application.properties: server.port=8002 #server.servlet.context-path=/ spring.datasource.url=jdbc:mysql://localhost:3306/ssm_message?useUnicode=true&character

  • php与阿里云短信接口接入操作案例分析

    本文实例讲述了php与阿里云短信接口接入操作.分享给大家供大家参考,具体如下: 使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证+官方审核多次,尤其审核需要保持耐心. 1. accessKeyId  相当于你的个人账户密钥: 2. accessKeySecret 与上是成对的: 3. SignName  个人签名,在发出去的短信中,这个签名会显示在开头,类似 [签名]亲爱的用户...... 这种格式,SignName需要通过提交审核: 4.TemplateCode  模板

  • Java实现阿里云短信接口的示例

    阿里云短信服务接口 阿里云短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力. 支持向国内和国际快速发送验证码.短信通知和推广短信,服务范围覆盖全球200多个国家和地区.国内短信支持三网合一专属通道,与工信部携号转网平台实时互联.电信级运维保障,实时监控自动切换,到达率高达99%.完美支撑双11期间20亿短信发送,6亿用户触达. 快速开发 ①开启短信服务 1)登陆阿里云服务平台 2)选择控制台 3)点击左上角下拉按钮选择短信服务 4)开通短信服务 ②实名

  • laravel框架使用阿里云短信发送消息操作示例

    本文实例讲述了laravel框架使用阿里云短信发送消息操作.分享给大家供大家参考,具体如下: 最新需要用到发送短信的功能,所以就在网上搜索一些写好的扩展. 扩展地址: https://github.com/MissMyCat/aliyun-sms 通过composer安装: composer require mrgoon/aliyun-sms dev-master 在 config/app.php 中 providers 加入: Mrgoon\AliSms\ServiceProvider::cl

  • 实战分布式医疗挂号系统登录接口整合阿里云短信详情

    目录 步骤1:搭建service-user用户模块 1.启动类&配置网关 步骤2:整合JWT 步骤3: 搭建service-msm短信模块(整合阿里云短信) 1.启动类&配置网关 4.三层调用 步骤4:登录页面前端 1.封装api请求 2.添加登录组件 3.登录全局事件 附加:用户认证与网关整合 1.在服务网关添加fillter 2.调整前端代码 本篇文章完成的需求: 1,登录采取弹出层的形式. 2,登录方式: (1)手机号码+手机验证码 (2)微信扫描(后文完成) 3,无注册界面,第一次

  • springboot整合阿里云oss上传的方法示例

    OSS申请和配置 1. 注册登录 输入网址:https://www.aliyun.com/product/oss 如果没有账号点击免费注册,然后登录. 2.开通以及配置 点击立即开通 进入管理控制台 第一次使用会出现引导,按引导点击"我知道了",然后点击创建Bucket. 如果没有存储包或流量包点击购买. 点击确定,返回主页面,出现该页面,点击我知道了 将EndPoint记录下来,方便后期添加到我们项目的配置文件中 创建 AccessKeyID 和 AccessKeySecret 点击

  • Redis实现短信验证码登录的示例代码

    目录 效果图 pom.xml applicatoin.yml Redis配置类 controller serviceImpl mapper 效果图 发送验证码 输入手机号.密码以及验证码完成登录操作 pom.xml 核心依赖 <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version&g

随机推荐