JAVA对接发送SMS短信服务
短信服务申请
网页进入阿里云页面,搜索“短信”,进入以下页面进行购买即可。
再购买完成后进入“控制台”查看具体购买的信息,有以下信息代表购买成功了。
JAVA对接
在购买的短信对接服务中有API的调用,根据具体的API调用即可。
代码编写
配置类 SmsComponent
package com.tomalen.gulimall.thirty.component;
import com.tomalen.gulimall.thirty.util.HttpUtils;
import lombok.Data;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Data
@Component
@ConfigurationProperties(prefix = "spring.cloud.alicloud.sms")
public class SmsComponent {
private String host;
private String path;
private String templateId;
private String value;
private String appCode;
public String sendSmsCode(String phone, String code) {
String method = "POST";
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + appCode);
Map<String, String> querys = new HashMap<String, String>();
querys.put("mobile", phone);
querys.put("templateId", templateId);
querys.put("value", code);
Map<String, String> bodys = new HashMap<String, String>();
try {
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
System.out.println(response.toString());
String smsResponse = EntityUtils.toString(response.getEntity());
return smsResponse;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
nacos配置中心–对应上面读取的参数
spring:
application:
name: gulimall-third-party
cloud:
nacos:
server-addr: 127.0.0.1:8848
alicloud:
access-key: xxxx
secret-key: xxxx
oss:
endpoint: oss-cn-beijing.aliyuncs.com
bucket: gulimall-zhongweihong
sms:
host: https://jumsendsms.market.alicloudapi.com
path: /sms/send-upgrade
templateId: M72CB42894
value: 1
appCode: 自己的appendId
server:
port: 30000
调用
- Feign远程调用第三方发送信息服务
package com.tomalen.gulimall.product.feign;
import com.tomalen.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient("gulimall-third-party")
public interface ThirdFeignService {
@GetMapping("/sms/sendSmsCode")
R sendSmsCode(@RequestParam("phone") String phone, @RequestParam("code") String code);
}
- 调用
@GetMapping("/sendSmsCode")
public R sendSmsCode(@RequestParam("phone") String phone, @RequestParam("code") String code) {
R result = thirdFeignService.sendSmsCode(phone, code);
return R.ok(result);
}
Vue前端测试代码
<el-button
v-if="isAuth('product:brand:delete')"
type="warning"
@click="sendSmsCode()"
>发送短信</el-button
>
sendSmsCode() {
const phone = "你的手机号";
const code = "66666";
this.$http({
url: this.$http.adornUrl("/product/attrgroup/sendSmsCode"),
methods: "get",
params: this.$http.adornParams({
phone: phone,
code: code
}),
}).then(({ data }) => {
if (data && data.code === 0) {
this.$message({
message: '发送短信成功',
type: 'success'
});
} else {
this.$message.error('发送短信失败');
}
});
效果
结语
调用第三方接口千篇一律,只要了解到调用API就可以实现相应的功能,所以要熟练应用官方提供的各种API文档。