阿里云短信服务开通(只限于测试,国内短信)
阿里云短信服务开通(只限于测试,国内短信)
前提:
需要有阿里云的密钥--》AccessKey ID 和 AccessKey Secret 是您访问阿里云 API 的密钥,具有该账户完全的权限
第一步:搜索阿里云短信产品
第2步:点击免费开通
第3步:开通国内信息
第4步:申请签名
第5步:申请模板
第6步:参考阿里云接口调用文档,实现对短信服务接口的调用(建议参考接文档)
6-1:引入调用该接口需要的依赖
<!-- 使用阿里云需要引入的依赖-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
</dependency>
6-2 配置文件中需要使用说明的配置
# 对应的签名密钥
aliyun.sms.regionId=cn-hangzhou(自己调用接口时使用的regionId)
aliyun.sms.accessKeyId=阿里云账户的AccessKey ID
aliyun.sms.secret=阿里云账户的AccessKey Secret
6-3 读取该微服务模块中的配置application.properties文件信息,方便调用
/**
* @author xu
* @Description
* 读取该微服务模块中的配置application.properties文件信息
* @date 2023/04/03 - 16:31:45
* @Modified By:
*/
@Component
public class ConstantPropertiesUtils implements InitializingBean {
@Value("${aliyun.sms.regionId}")
private String regionId;
@Value("${aliyun.sms.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.sms.secret}")
private String secret;
public static String REGION_Id;
public static String ACCESS_KEY_ID;
public static String SECRECT;
@Override
public void afterPropertiesSet() throws Exception {
REGION_Id=regionId;
ACCESS_KEY_ID=accessKeyId;
SECRECT=secret;
}
}
6-4 :在程序中使用上述依赖的类,实现对接口的调用,我实现一个使用短信验证的登录操作(只是部分代码)
/**
*
* @Description
* 调用service方法通过整合短信服务进行发送
* @param phone 登录用户的手机号
* @param code 需要发送给用户登录时的验证码
*
*/
@Override
public boolean send(String phone, String code) {
// 判断手机号是否为空
if (StringUtils.isEmpty(phone)) {
return false;
}
// 整合阿里云短信服务
// 设置相关参数
DefaultProfile profile = DefaultProfile.
getProfile(ConstantPropertiesUtils.REGION_Id,
ConstantPropertiesUtils.ACCESS_KEY_ID,
ConstantPropertiesUtils.SECRECT);
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
//手机号
request.putQueryParameter("PhoneNumbers", phone);
//签名名称
request.putQueryParameter("SignName", "你自己申请签名时,签名的名称");
//模板code
request.putQueryParameter("TemplateCode", "你申请的模板对应的模板CODE");
//验证码 使用json格式 {"code":"123456"}
Map<String,Object> param = new HashMap();
param.put("code",code);
request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));
//调用方法进行短信发送
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;
}