200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 调用阿里云短信服务平台API实现ERP系统短信发送功能

调用阿里云短信服务平台API实现ERP系统短信发送功能

时间:2021-10-05 10:57:40

相关推荐

调用阿里云短信服务平台API实现ERP系统短信发送功能

调用阿里云短信服务平台API实现ERP系统短信发送功能

1,发送短信工具类 SendSMSUtil

package sms;import java.util.List;/*** 应用策略模式,方便以后扩展短信发送功能* @title SendSMSUtil* @description 阿里云短信发送util* @author RenYY*/public class SendSMSUtil {/*** @description 短信发送接口* @param sendSMS* @return* @author RenYY* @date 12月29日*/public static boolean sendSMS(ISendSMS sendSMS){return sendSMS.sendSMS();}}

2,发送短信接口 ISendSMS

package sms;import java.util.List;/*** @title ISendSMS* @description 阿里云短信服务平台 发送短信接口* @author RenYY*/public interface ISendSMS {public boolean sendSMS();}

3,发送短信实现类 SendSMS

package sms;import java.io.IOException;import java.io.InputStream;import java.util.Map;import java.util.Properties;import org.apache.log4j.Logger;import com.alibaba.fastjson.JSON;import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.IAcsClient;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.profile.DefaultProfile;import com.aliyuncs.profile.IClientProfile;import com.aliyuncs.sms.model.v0927.SingleSendSmsRequest;import com.aliyuncs.sms.model.v0927.SingleSendSmsResponse;import com.pxjy.puxin.kernel.utils.LoadProperties;/*** @title SendSMS* @description 短信发送实现类,完成短信发送动作* @author RenYY*/public class SendSMS implements ISendSMS {private final static Logger log = Logger.getLogger(SendSMS.class);private static String aliyun_sms_region_id = ""; //阿里云regionIdprivate static String aliyun_sms_access_key_id = ""; //阿里云 accessKeyIdprivate static String aliyun_sms_access_key_secret = ""; //阿里云 accessKeySecretprivate static String aliyun_sms_end_point_name = ""; //阿里云end_point_nameprivate static String aliyun_sms_product = ""; //阿里云产品private static String aliyun_sms_domain = ""; //阿里云调用短信服务平台接口域名private String signName; //阿里云短信签名private String templateCode; //阿里云短信模板Codeprivate String paramString; //阿里云短信模板参数字符串private String recNum; //发送短信手机号static{aliyun_sms_region_id = LoadProperties.readValue("aliyun_sms_region_id");aliyun_sms_access_key_id = LoadProperties.readValue("aliyun_sms_access_key_id");aliyun_sms_access_key_secret = LoadProperties.readValue("aliyun_sms_access_key_secret");aliyun_sms_end_point_name = LoadProperties.readValue("aliyun_sms_end_point_name");aliyun_sms_product = LoadProperties.readValue("aliyun_sms_product");aliyun_sms_domain = LoadProperties.readValue("aliyun_sms_domain");}/*** @description 方法描述* @param signName 如果signName为null或者空串,则取集团短信签名; 否则取signName值* @param templateId 1:验证短信模板, 2:通知短信模板, 3:推广短信模板* @param paramMap 短信模板中参数名为key,参数值为value* @param phoneNum 手机号数组,例:{"18888888888","19999999999"}* @author RenYY* @date 12月29日*/public SendSMS(String signName, int templateId,Map<String, String> paramMap, String[] phoneNum) {super();//短信签名: 如果signName为null或者空串,则取集团短信签名; 否则去signName值this.signName = (null == signName || "".equals(signName)) ? DictSMS.SIGN_NAME_PUXIN : signName;//短信模板switch (templateId) {case 1: this.templateCode = DictSMS.TEMPLATE_CODE_OF_VALIDATE; break;//验证短信模板case 2: this.templateCode = DictSMS.TEMPLATE_CODE_OF_INFORM; break;//通知短信模板case 3: this.templateCode = DictSMS.TEMPLATE_CODE_OF_PROMOTION; break;//推广短信模板default:this.templateCode = DictSMS.TEMPLATE_CODE_OF_PROMOTION; break;//以上三种均不匹配时,默认为 推广短信模板}//模板参数this.paramString = JSON.toJSONString(paramMap);//构造手机号字符串,多个手机号之间逗号分隔StringBuffer recNumSB = new StringBuffer();for(int i = 0; i < phoneNum.length; i++){if(i == phoneNum.length -1){recNumSB.append(phoneNum[i]);}else{recNumSB.append(phoneNum[i] + ",");}}this.recNum = recNumSB.toString();}/*** @description 发送短信* @return 发送成功返回 true,否则返回 false* @author RenYY * @date 12月29日*/@Overridepublic boolean sendSMS() {boolean isSendSuccess = false;try {IClientProfile profile = DefaultProfile.getProfile(aliyun_sms_region_id, aliyun_sms_access_key_id, aliyun_sms_access_key_secret);DefaultProfile.addEndpoint(aliyun_sms_end_point_name, aliyun_sms_region_id, aliyun_sms_product,aliyun_sms_domain);IAcsClient client = new DefaultAcsClient(profile);SingleSendSmsRequest request = new SingleSendSmsRequest();request.setSignName(signName);request.setTemplateCode(templateCode);request.setParamString(paramString);request.setRecNum(recNum);SingleSendSmsResponse response = client.getAcsResponse(request);//短信发送isSendSuccess = true;} catch (Exception e) {e.printStackTrace();log.error("*aliyun_sms_begin*");log.error(e.getMessage());log.error("*aliyun_sms_end*");}finally{return isSendSuccess;}}}

4,短信签名及短信模板CODE字典类

package com.pxjy.puxin.kernel.sms;public class DictSMS {public final static String SIGN_NAME_PUXIN = "SIGN_NAME_PUXIN"; //集团短信签名public final static String TEMPLATE_CODE_OF_VALIDATE = "TEMPLATE_CODE_OF_VALIDATE"; //验证短信模板CODEpublic final static String TEMPLATE_CODE_OF_INFORM = "TEMPLATE_CODE_OF_INFORM"; //通知短信模板CODEpublic final static String TEMPLATE_CODE_OF_PROMOTION = "TEMPLATE_CODE_OF_PROMOTION"; //推广短信模板CODE}

5,项目属性文档读取工具类

package utils;import java.io.IOException;import java.io.InputStream;import java.util.Properties;/*** 配置文件读取类* @title LoadProperties* @description 描述* @author RenYY*/public class LoadProperties {/*** 通过key值获取配置文件中value值* @description 方法描述* @param key 配置文件中key值* @return* @author xuzihu* @date 9月9日*/public static String readValue(String key) {String fileName = "/application.properties";Properties props = new Properties();InputStream in = null;String value = "";try {in = LoadProperties.class.getResourceAsStream(fileName);props.load(in);value = props.getProperty(key);return value;} catch (Exception e) {e.printStackTrace();} finally {try {in.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return value;}}

6,项目属性配置文档 application.properties

#### 阿里云短信服务平台 begin add by RenYY,1227 ####aliyun_sms_region_id=cn-hangzhoualiyun_sms_access_key_id=aliyunsmsaccesskeyidaliyun_sms_access_key_secret=aliyunsmsaccesskeysecretaliyun_sms_end_point_name=cn-hangzhoualiyun_sms_product=Smsaliyun_sms_domain=#### 阿里云短信服务平台end add by RenYY,1227 ####

7,引入阿里云依赖jar包

添加maven库

<repositories><repository><id>sonatype-nexus-staging</id><name>Sonatype Nexus Staging</name><url>/service/local/staging/deploy/maven2/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>

添加依赖jar包

<dependencies><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>2.4.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-sms</artifactId><version>3.0.0-rc1</version></dependency><dependencies>

8,接口调用中抛出异常信息: java.lang.RuntimeException: Unsupported algorithm: HmacSHA1

解决方案为:修改项目依赖 JDK 版本为 1.6或1.7,至于为什么目前不支持1.8有点迷惑

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。