自己动手整合阿里云的短信验证码

我们来调通一下发送验证码到手机,这就是一个第三方服务mall-third-party(短信服务)
阿里云上面有免费使用的发送短信验证码如下,开通即可
https://free.aliyun.com/product/cloudcommunication-free-trial?spm=5176.12901015.0.i12901015.729e525colmSdi
开通完出现如下页面在阿里云控制台中
在这里插入图片描述
注意一点:我们前端点击发送验证码,不可以直接到第三方服务(短信服务)里面,必须先通过我们的微服务,在让微服务发送请求给第三方服务(短信服务),目的:防止我们的阿里云账号密码泄露
操作步骤:根据官网进行
添加链接描述
第一步:引入依赖aliyun-java-sdk-core

<dependency>
     <groupId>com.aliyun</groupId>
     <artifactId>aliyun-java-sdk-core</artifactId>
     <version>4.5.3</version>
     </dependency>

第二步:我们要现在如下的在线测试中进行测试,找到正确的代码,然后放入到mall-third-party中进行单元测试
阿里云短信服务APIDemo
mall-third-party

@Component
public class SmsComponent {

    @Autowired
    SMSConfigProperties smsConfigProperties;
    public void sendSmsCode(String phone, String code) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou",smsConfigProperties.getAccessKeyId() , smsConfigProperties.getAccessSecret());

        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", "cn-hangzhou");
        request.putQueryParameter("PhoneNumbers", phone);
        request.putQueryParameter("SignName", smsConfigProperties.getSignName());
        request.putQueryParameter("TemplateCode", smsConfigProperties.getTemplateCode());
        request.putQueryParameter("TemplateParam", "{\"code\":\""+code+"\"}");
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-configuration-processor</artifactId>
     <optional>true</optional>

     </dependency>
@ConfigurationProperties(prefix = "mall.auth.sms")
@Data
@Component
public class SMSConfigProperties {

    private String accessKeyId;
    private String accessSecret;
    private String SignName;
    private String TemplateCode;
}

mall.auth.sms.access-secret=access-secret(阿里云账户的secret)
mall.auth.sms.access-key-id=access-key-id(阿里云账户的key-id)
mall.auth.sms.sign-name=阿俊商城
mall.auth.sms.template-code=SMS_205455193

第三步进行测试:如果我们调试结果有错可以使用阿里云 OpenAPI 使用诊断 内
阿里云 OpenAPI 使用诊断

@Autowired
	SmsComponent smsComponent;
	@Test
	void contextLoads() {
		smsComponent.sendSmsCode("自己的电话号码","1111");
	}
{"Message":"OK","RequestId":"0627E6D4-6F5A-49F4-8FA6-EDEF581DE2A9","BizId":"507116005111507742^0","Code":"OK"}

并且你的手机号码中会有你对应的短信验证码,我的就是1111

注意如果报如下错误

{"Message":"没有访问权限","RequestId":"B5CC6453-DFEB-44F5-BE3A-780408553C85","Code":"isp.RAM_PERMISSION_DENY"}
AliyunDysmsFullAccess(管理权限)

我们要进行如下配置,打开对应的用户的访问权限AliyunDysmsFullAccess
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值