短信验证码接⼊SpringBoot申请操作指引:
* 短信验证码平台选择考虑点:
-
各个类型短信价格
-
短信到达率、到达时间
-
短信内容变量灵活,⽅便⽀持多场景
-
⽀持多种推⼴内容的短信发放,例如业务推⼴、新产品宣讲、 会员关怀等内容的短信
-
多维度数据统计-查看请求量、发送成功量、失败量、等
*短信平台
-
阿⾥云:https://www.aliyun.com/product/sms(推荐)
-
腾讯云:https://cloud.tencent.com/product/sms(推荐)
-
第三⽅⼚商:https://market.aliyun.com/products/5700000 2/cmapi00046920.html(强烈推荐)(提供测试模板、免审核、测试成本更低)
举例:
*选择申请接入链接
可以看到,这个第三方阿里云市场的短信api非常便宜 ,4元100条,足够学习和日常使用了
购买后,会进入到相应的控制台,如下图:
接着就可以进入到代码部分进行测试了
-
第一种方式:可以用购买页面下面的官方提供的测试代码,很简单,仔细研究一下就看懂了
- 第二种: 自己用ResTemplate去调用短信AP接口
@Component
@Slf4j
public class SmsComponent {
//这里的地址为:调用地址,再加上需要带的参数,可以从短信购买页面的下方找到;
private static final String URL_TEMPLATE="https://zwp.market.alicloudapi.com/sms/sendv2?mobile=%s&content=%s";
@Autowired
private SmsConfig smsConfig;
@Autowired
private RestTemplate restTemplate;
public void send2(String to, String content) {
String url = String.format(URL_TEMPLATE, to, content);
HttpHeaders headers = new HttpHeaders();
//最后在header中的格式(中间是英⽂空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
//AppCode在刚才的短信控制台能找到,写在下面就行了
headers.set("Authorization", "APPCODE " + AppCode);
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
log.info("url={},body={}", url, response.getBody());
if (response.getStatusCode() ==
HttpStatus.OK) {
log.info("发送短信成功,响应信息:{}",
response.getBody());
} else {
log.error("发送短信失败,响应信息:{}",
response.getBody());
}
}
}
- 然后写个测试类调用一下就行了
import com.sun.AccountApplication;
import com.sun.component.SmsComponent;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AccountApplication.class)
@Slf4j
public class SmsTest {
@Autowired
private SmsComponent smsComponent;
@Test
public void testSendSms(){
//smsComponent.send();
smsComponent.send2("135257****","【智能云】您的验证码是568126。如非本人操作,请忽略本短信");
}
}