阿里云短信服务开通(只限于测试,国内短信)

阿里云短信服务开通(只限于测试,国内短信)

前提:

需要有阿里云的密钥--》AccessKey ID 和 AccessKey Secret 是您访问阿里云 API 的密钥,具有该账户完全的权限

第一步:搜索阿里云短信产品

image-20230406090403820

第2步:点击免费开通

image-20230406090546959

第3步:开通国内信息image-20230406090758163

第4步:申请签名

image-20230406090953272

image-20230406091141199

第5步:申请模板

image-20230406091312059

image-20230406091413033

第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;
    }
posted @ 2023-04-06 09:34  远道而重任  阅读(90)  评论(0编辑  收藏  举报