阿里云sms短信服务工具类
package com.pwd.sms;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.parse.json.mapper.JsonMapper;
import com.sms.response.ResultInfo;
import com.spring.utils.Global;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
public class SmsUtil {
private static final DefaultProfile profile = DefaultProfile.getProfile( Global.getConfig("aliyun.sms.regionId"), Global.getConfig("aliyun.sms.accessKeyId"), Global.getConfig("aliyun.sms.secret"));
private static final IAcsClient client = new DefaultAcsClient(profile);
private static final String ALIYUN_DOMAIN = "dysmsapi.aliyuncs.com";
private static final String ALIYUN_Version = "2017-05-25";
private static final String ALIYUN_SENDSMS = "SendSms";
private static final String ALIYUN_SENDBATCHSMS = "SendBatchSms";
/**
*
* @param mobile 手机号
* @param templateCode 模板code
* @param templateParam 参数 {"code":"786523"}
* @param signName 签名
* @return
*/
public static ResultInfo sendSms(String mobile, String templateCode, String templateParam, String signName) {
/* if (logger.isDebugEnabled()) {
logger.debug("sendSms(String=" + mobile + ", String=" + templateCode + ",String= "+templateParam+",String="+signName+") - 开始");
}*/
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
ResultInfo resultInfo = new ResultInfo();
resultInfo.setResult("0");
request.setMethod(MethodType.POST);
request.setDomain(ALIYUN_DOMAIN);
request.setVersion(ALIYUN_Version);
request.setAction(ALIYUN_SENDSMS);
request.putQueryParameter("RegionId", Global.getConfig("aliyun.sms.regionId"));
request.putQueryParameter("PhoneNumbers", mobile);
request.putQueryParameter("TemplateCode", templateCode);
request.putQueryParameter("TemplateParam", templateParam);
request.putQueryParameter("SignName", signName);
try {
CommonResponse response = client.getCommonResponse(request);
Map<String,Object> map = JsonMapper.getInstance().fromJson(response.getData(), Map.class);
if (map==null) {
resultInfo.setResult("调用接口返回接口异常:结果为空");
/* if (logger.isDebugEnabled()) {
logger.debug("sendSms(String=" + mobile + ", String=" + templateCode + ",String= "+templateParam+",String="+signName+") - 结束 - 返回值:"+resultInfo);
}*/
return resultInfo;
}
resultInfo.setResult(map.get("Message")!=null&& StringUtils.equals("OK",map.get("Message").toString())?"0":"1");
resultInfo.setMessage(map.get("Message")!=null?map.get("Message").toString():"");
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
/* if (logger.isDebugEnabled()) {
logger.debug("sendSms(String=" + mobile + ", String=" + templateCode + ",String= "+templateParam+",String="+signName+") - 结束 - 返回值:"+resultInfo);
}*/
return resultInfo;
}
/**
*
* @param phoneNumberJson 手机号 ["手机号1","手机号2"]
* @param templateCode 模板code
* @param templateParamJson 参数 [{"name":"TemplateParamJson",{"name":"TemplateParamJson"}]
* @param signNameJson 签名 ["签名1","签名2"]
* @return
*/
public static ResultInfo sendBatchSms(String phoneNumberJson, String templateCode, String templateParamJson, String signNameJson) {
/* if (logger.isDebugEnabled()) {
logger.debug("sendBatchSms(String=" + phoneNumberJson + ", String=" + templateCode + ",String= "+templateParamJson+",String="+signNameJson+") - 开始");
}*/
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
ResultInfo resultInfo = new ResultInfo();
resultInfo.setResult("0");
request.setMethod(MethodType.POST);
request.setDomain(ALIYUN_DOMAIN);
request.setVersion(ALIYUN_Version);
request.setAction(ALIYUN_SENDBATCHSMS);
request.putQueryParameter("RegionId", Global.getConfig("aliyun.sms.regionId"));
request.putQueryParameter("PhoneNumberJson", phoneNumberJson);
request.putQueryParameter("TemplateCode", templateCode);
request.putQueryParameter("TemplateParamJson", templateParamJson);
request.putQueryParameter("SignNameJson", signNameJson);
try {
CommonResponse response = client.getCommonResponse(request);
Map<String,Object> map = JsonMapper.getInstance().fromJson(response.getData(), Map.class);
if (map==null) {
resultInfo.setResult("调用接口返回接口异常:结果为空");
/* if (logger.isDebugEnabled()) {
logger.debug("sendBatchSms(String=" + phoneNumberJson + ", String=" + templateCode + ",String= "+templateParamJson+",String="+signNameJson+") - 结束 - 返回值:"+resultInfo);
}*/
return resultInfo;
}
resultInfo.setResult(map.get("Message")!=null&& StringUtils.equals("OK",map.get("Message").toString())?"0":"1");
resultInfo.setMessage(map.get("Message")!=null?map.get("Message").toString():"");
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
/* if (logger.isDebugEnabled()) {
logger.debug("sendBatchSms(String=" + phoneNumberJson + ", String=" + templateCode + ",String= "+templateParamJson+",String="+signNameJson+") - 结束 - 返回值:"+resultInfo);
}*/
return resultInfo;
}
public static void main(String[] args) {
String mobile = "";
String templateCode = "";
String templateParam = "{\"code\":\"786523\"}";
String signName = "四川";
sendSms(mobile, templateCode, templateParam, signName);
}
}
获取配置的方法
/**
* 获取配置
*/
public static String getConfig(String key) {
String value=SpringContextHolder.getApplicationContext().getEnvironment().getProperty(key);
if(StringUtils.isBlank(value)){
value=SpringContextHolder.getBean(Property.class).getValueByKey(key);
}
return value;
}