【Java阿里云短信服务API接入】——实现通知短信模版应用(企业版)

写前提

在最近公司的项目需求中, 需要通过阿里云短信功能, 实现在某系统中用户操作后会对应发送到对应人员手机号进行通知。

其实企业版和个人版接入相差不大,但我用的是公司账号去配置与开发的,所以接上来我代入的操作和代码都是企业版的配置与开发
本篇核心内容就是: 阿里云短信服务API接入, 下面我们主要来介绍下阿里云短信服务接入与调用成功的全过程。

一、阿里云短信服务平台操作要点


1、大致流程(了解)

操作流程:

主要进程:

2、注册、登录与实名认证

直接登录企业账号或者注册就OK的了,这个步骤很轻松~

这个拿到公司对应证件填写即可,这里就不详细展开说。

3、AccessKey权限(个人自主选择获取AccessKey

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

(1)直接用管理员的AccessKey

  • 直接点击AccessKey管理进入到密钥界面
  • 每次创建都会有新的AccessKey ID与AccessKey Secret(忘记了旧的也可以再新建,但最好备份一下,好像有限次数)

(2)创建新用户授权获取对应的AccessKey(建议采用这种方法获取,安全性高

  • 点击访问控制里面用户——创建用户

  • 点击授权,新增授权,选中要授权用户和对应短信的权限
  • 若是多人调用该API可以整理个用户群把对应权限等一同授予多个用户

4、购买短信包

看企业需求购买即可

5、短信服务控制台主要配置

  • 完成对应步骤操作,主要完成前三条

(1)新增资质——填写对应信息等审核

(2)添加签名——填写对应信息等审核

(3)添加模板——填写对应信息等审核

PS:我这里被退回了几次,这里要注意添加应用场景时候要注意这个场景内容若是用网址一定是域名是备案通过的,如果不是该账号公司备案的域名则需要出示第三方合作证明签字等。

这个模板CODE后续会用到

(4)消息设置——主要设置短信发送频率

(5)发送测试——Api发送测试

在线调试——发送短信(SDK)

注意: 这里因为使用sdk进行测试调用, 因此无需等待签名和模板审核成功。使用下面短信测试专用的签名和模板编码也可,或者用企业已通过审核的签名与模板code。
SignName: 阿里云短信测试,
TemplateCode: SMS_154950909

填写好电话号码、短信签名名称、短信模板Code、短信模板变量对应的实际值(这些都是可以自定义的)点击调试,同时也可以查看对应相关官方代码。

添加依赖——获取sdk的jar包
如果是maven项目,直接复制下图展示的Maven坐标
在这里插入图片描述

如果是SSM/JavaEE项目(需要手动放入jar)。

二、SDK代码

可参考:进入OpenApi页面 -> 添加参数 -> 发起调用 -> 复制生成的sdk代码 -> 封装并复用代码

1、配置文件

找到application.yml,将内容复制进去即可,自定义更改。

# 阿里云key
aliyun:
  sms:
    accessKeyId: 你的accessKeyId
    accessKeySecret: 你的accessKeySecret
    endpoint: dysmsapi.aliyuncs.com
    signName: 你的签名

2、封装SDK

电话号码、模版code、模板参数均为传入的参数值

package com.platform.common.utils;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author mijiupro
 */
@Component
@ConfigurationProperties(prefix = "aliyun.sms")
public class SmsUtil {

    @Value("${aliyun.sms.accessKeyId}")
    private String accessKeyId;// 访问密钥id

    @Value("${aliyun.sms.accessKeySecret}")
    private String accessKeySecret;// 访问密钥secret

    @Value("${aliyun.sms.endpoint}")
    private String endpoint;// 短信 API 的访问域名

    @Value("${aliyun.sms.signName}")
    private String signName;// 短信签名

    // 发送短信
    public Boolean sendSms(String phone, String templateCode, String templateParam) {
        // 创建阿里云客户端
        Config config = new Config()
                .setAccessKeyId(accessKeyId)// 配置访问密钥 ID
                .setAccessKeySecret(accessKeySecret);// 配置密钥
        config.endpoint = endpoint;// 配置访问端点
        Client client;
        try {
            client = new Client(config);
        } catch (Exception e) {
            System.out.println("阿里云短信服务初始化失败" + e);
            return false;
        }
        // 构建发送请求
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setSignName(signName) // 设置签名
                .setTemplateCode(templateCode) // 设置模板
                .setPhoneNumbers(phone) // 设置手机号为参数传入的值
                .setTemplateParam(templateParam); // 设置模板为参数传入的值
//              .setTemplateParam("{\"code\":\"" + code + "\"}"); // 设置模板参数为传入的验证码

        RuntimeOptions runtime = new RuntimeOptions();// 运行时选择,可以设置不同的属性来配置运行时环境的参数。
        try {
            // 复制代码运行请自行打印 API 的返回值
            SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
            if (!"OK".equals(sendSmsResponse.getBody().getCode())) {
                System.out.println("短信发送失败:{}"+ sendSmsResponse.getBody().getMessage());
                return false;
            }
            System.out.println("短信发送成功");
            return true;

        } catch (Exception error) {
            System.out.println("短信发送失败:{}" + error.getMessage());
            return false;
        }
    }
}

3、新建短信发送业务

/**
     *  获取短信通知
     * @param phone
*/
    int sendMessage(String phone, String templateCode, String templateParam) throws Exception;

4、创建短信发送实现类 

  @Override
    public int sendMessage(String phone, String templateCode, String templateParam) throws Exception {
        //通过阿里sms发送短信
        Boolean verifyCode = smsUtil.sendSms(phone, templateCode, templateParam);
        if (!smsUtil.sendSms(phone, templateCode, templateParam)) {
            throw new RuntimeException("发送短信失败!");
        }
        return 1;
    }

 5、应用到对应操作业务

//模板参数(工单号与地址信息)
		String templateParam="{\"orderNumber\":\"" + ngdRepairForm1.getOrderNumber() + "\",\"areaDetail\":\"" + ngdRepairForm1.getAreaDetail() + "\"}";
		//待受理短信通知
		try {
			userRpc.sendMessage(phonenumber,"SMS_472025277",templateParam);
		} catch (Exception e) {
			e.printStackTrace();
		}

三、调用后相关查看

 1、API错误码查看

官网查看更多详情错误码

  2、发送成功后, 可以在短信服务控制台查看发送详情

这里左侧栏对应目录可以查看对应不同发送情况

  3、接收到短信通知

最后,要是需要验证码短信发送步骤的伙伴,请参考该博主的分享链接

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值