package com.sandu.common.sms.impl;
|
|
import cn.hutool.json.JSONUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.aliyuncs.CommonRequest;
|
import com.aliyuncs.CommonResponse;
|
import com.aliyuncs.DefaultAcsClient;
|
import com.aliyuncs.IAcsClient;
|
import com.aliyuncs.exceptions.ClientException;
|
import com.aliyuncs.http.MethodType;
|
import com.aliyuncs.profile.DefaultProfile;
|
import com.sandu.common.execption.BusinessException;
|
import com.sandu.common.sms.AliyunSmsResult;
|
import com.sandu.common.sms.ISmsSender;
|
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.LogFactory;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* 阿里云短信服务
|
*
|
* @author chenjiantian
|
*/
|
public class AliyunSmsSender implements ISmsSender {
|
|
private final String accessKeyId;
|
private final String accessKeySecret;
|
private final String templateId;
|
private final String sign;
|
|
public AliyunSmsSender(String accessKeyId, String accessKeySecret, String templateId, String sign) {
|
this.accessKeyId = accessKeyId;
|
this.accessKeySecret = accessKeySecret;
|
this.templateId = templateId;
|
this.sign = sign;
|
}
|
|
@Override
|
public AliyunSmsResult sendWithTemplate(String phone, String[] params) {
|
|
|
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
|
IAcsClient client = new DefaultAcsClient(profile);
|
|
CommonRequest request = new CommonRequest();
|
// request.setSysMethod(MethodType.POST);
|
// request.setSysDomain("dysmsapi.ap-southeast-1.aliyuncs.com");
|
// request.setSysVersion("2018-05-01");
|
// request.setSysAction("SendMessageWithTemplate");
|
|
request.setSysMethod(MethodType.POST);
|
//短信服务的服务接入地址
|
request.setSysDomain("dysmsapi.aliyuncs.com");
|
//API的版本号
|
request.setSysVersion("2017-05-25");
|
//API的名称
|
request.setSysAction("SendSms");
|
//接收短信的手机号码
|
request.putQueryParameter("PhoneNumbers", phone);
|
//短信签名名称
|
request.putQueryParameter("SignName", sign);
|
//短信模板ID
|
request.putQueryParameter("TemplateCode", templateId);
|
|
String templateParam = "{}";
|
if (params.length == 1) {
|
Map<String, String> data = new HashMap<>();
|
data.put("code", params[0]);
|
templateParam = JSON.toJSONString(data);
|
} else if (params.length > 1) {
|
Map<String, String> data = new HashMap<>();
|
data.put("code", params[0]);
|
for (int i = 1; i < params.length; i++) {
|
data.put("code" + i, params[i]);
|
}
|
templateParam = JSON.toJSONString(data);
|
}
|
request.putQueryParameter("TemplateParam", templateParam);
|
|
try {
|
CommonResponse response = client.getCommonResponse(request);
|
return JSONUtil.toBean(response.getData(), AliyunSmsResult.class);
|
} catch (ClientException e) {
|
e.printStackTrace();
|
throw new BusinessException("短信发送失败," + e.getErrMsg());
|
}
|
}
|
}
|