引入依赖
maven
<!--阿里云短信服务-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-openapi</artifactId>
<version>0.0.13</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>2.0.1</version>
</dependency>
gradle
// 短信服务
compile 'com.aliyun:tea-openapi:0.0.13'
compile 'com.aliyun:dysmsapi20170525:2.0.1'
阿里云短信文档地址
参数
在配置表中,配置以下参数:
名称 | 配置名 | 配置值 |
---|---|---|
accessKeyId | accessKeyId | LTAI5tG6KbHDK7nVt2X6ifBF |
accessKeySecret | accessKeySecret | wwCjeH5X8Shr9dCGdC8QxooIuM7Etl |
工具类 AliSmsUtil
// This file is auto-generated, don't edit it. Thanks.
package com.hn.common.utils;
import cn.hutool.json.JSONUtil;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.hn.common.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class AliSmsUtil {
/**
* 您在xxx提交的商户资料,已认证通过,请登录app继续操作。祝颂商祺!
* 用户成为我们商家推送短信
*/
public static final String TEMPLATE_AUTH_SUCCESS = "SMS_123456";
/**
* 您的注册验证码为:${code},请妥善保管,请勿告诉他人。
* 用于xxx短信注册使用
*/
public static final String TEMPLATE_REGISTER = "SMS_1234";
/**
* 您的登录验证码为:${code},请妥善保管,勿告诉他人。
*/
public static final String TEMPLATE_LOGIN = "SMS_12345";
/**
* 您的绑定手机号验证码为:${code},请妥善保管,请勿告诉他人。
*/
public static final String TEMPLATE_BIND = "SMS_11111";
/**
* 短信签名
*/
private static final String SIGN_NAME = "xxxx";
/**
* accessKeyId
*/
private static final String ACCESS_KEY_ID = "accessKeyId";
/**
* accessKeySecret
*/
private static final String ACCESS_KEY_SECRET = "accessKeySecret";
/**
* 使用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 Config()
// 您的AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
public static void login(String phone,String code){
send(phone,code,TEMPLATE_LOGIN);
}
/**
* 注册
* @param phone
* @param code
*/
public static void register(String phone,String code){
send(phone,code,TEMPLATE_REGISTER);
}
/**
* 绑定
* @param phone
* @param code
*/
public static void bind(String phone,String code){
send(phone,code,TEMPLATE_BIND);
}
public static void send(String phone,String code,String templateCode) {
com.aliyun.dysmsapi20170525.Client client = null;
try {
client = AliSmsUtil.createClient(ACCESS_KEY_ID,ACCESS_KEY_SECRET);
} catch (Exception e) {
log.error(e.getMessage());
throw new BusinessException("短信发送失败");
}
Map map = new HashMap<>();
map.put("code",code);
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(phone)
.setSignName(SIGN_NAME)
.setTemplateCode(templateCode)
.setTemplateParam(JSONUtil.toJsonStr(map));
// 复制代码运行请自行打印 API 的返回值
SendSmsResponse sendSmsResponse = null;
try {
sendSmsResponse = client.sendSms(sendSmsRequest);
} catch (Exception e) {
log.error(e.getMessage());
throw new BusinessException("发送短信失败");
}
System.out.println(JSONUtil.toJsonStr(sendSmsResponse));
}
}
使用
public static void main(String[] args_) throws Exception {
AliSmsUtil.register("18715081234","123456");
}
申请 AccessKey 和 AccessKeySecret
- 打开控制台 , https://dysms.console.aliyun.com/
- 鼠标放在右上角头像上 点击 AccessKey 管理
- 他会提示您不能使用您的主 Key 要您使用子用户 Key
- 点击开始使用子用户 AccessKey
- 进入之后 选择创建用户 一定要勾选 编程访问 否则无法使用 Java 进行调用!!!
- 创建用户完成之后 , 复制 AccessKey ID 和 AccessKey Secret
- 权限可在用户选项卡中查看 => 继承用户组的权限 也可也单独给该用户添加权限
- 添加权限,选择 AliyunDysmsFullAccess
- 这样就可以了
- 现在已经可以使用该 Key 和 Secert 进行调用阿里云 API 了
注意事项
即使 AccessKey Secret 丢了也不要紧 再次创建一个就可以了!
如果 AccessKey 丢失了 或者泄露 请马上删除 丢失 Key 的用户 以免造成财产丢失或被盗!
尽量不要使用主 AccessKey
参考
https://blog.csdn.net/weixin_43420255/article/details/105914979