200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java实现阿里云云通信短信通知发送

java实现阿里云云通信短信通知发送

时间:2022-12-03 21:50:42

相关推荐

java实现阿里云云通信短信通知发送

在之前博客中介绍了阿里云短信通知,但是自从7月后阿里大于搬家规划给阿里云云通信,故短信通知接口改变,新注册的短信通知模板用阿里大于不再使用,必须调用阿里云云通信接口才可以。以下介绍下阿里云云通信实现短信通知发送。

准备工作:

环境:eclipse4.5-x64,jdk1.7,maven3

maven环境添加短信通知依赖:

<!-- 新版本阿里云云通信短信通知接口 --><dependency><groupId>com.yirui</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.3.1</version></dependency><dependency><groupId>com.yirui</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.0.0</version></dependency>

短信通知工具类:SmsUtil.java

package com.qianjiang.util.sms;import com.alibaba.fastjson.JSONObject;import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.IAcsClient;import com.aliyuncs.dysmsapi.model.v0525.SendSmsRequest;import com.aliyuncs.dysmsapi.model.v0525.SendSmsResponse;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.http.MethodType;import com.aliyuncs.profile.DefaultProfile;import com.aliyuncs.profile.IClientProfile;import com.taobao.api.DefaultTaobaoClient;import com.taobao.api.TaobaoClient;import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse; /*** @class:SmsUtil* @descript:该案例是阿里云发送短信通知:* 注意从6月30后阿里大于升级成功阿里云-云通信故短信通知接口变更* 旧版本:阿里大于* 工程依赖jar包:alipay-sdk-java-0607114101.jar* 参考API:/docs/api.htm?apiId=25450* 新版本:阿里云云通信* 工程依赖jar包:aliyun-java-sdk-core.jar,aliyun-java-sdk-dysmsapi.jar* 参考API:/document_detail/55284.html?spm=5176.doc59210.FKg* Demo工程编码采用UTF-8* @date:3月7日 下午2:47:38* @author sang*/public class SmsUtil {/*** 新版本:阿里云云通信发送短信通知* @param smsAppKey TOP分配给应用的AppKey,即创建的签名* @param smsSerect 短信签名AppKey对应的secret值* @param smsSign 短信签名,传入的短信签名必须是在阿里大于“管理中心-短信签名管理”中的可用签名* @param smsModelId 短信模板ID,传入的模板必须是在阿里大于“管理中心-短信模板管理”中的可用模板。示例:SMS_585014* @param smsModelType oss模板类型1表示验证码类2表示通知类型* @param modelParam 模板内容里面的变量* @param phone 用户手机号码* @return boolean true成功false失败 */public static boolean sendSms(String smsAppKey,String smsSerect,String smsSign,String smsModelId,JSONObject modelParam,String smsModelType,String phone){//验证发送失败boolean result=false;try {//设置超时时间,可自行调整System.setProperty(".client.defaultConnectTimeout", "10000");System.setProperty(".client.defaultReadTimeout", "10000");//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", smsAppKey, smsSerect);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", SMSConstants.PRODUCT, SMSConstants.DOMAIN);IAcsClient acsClient = new DefaultAcsClient(profile);//组装请求对象SendSmsRequest request = new SendSmsRequest();//使用post提交request.setMethod(MethodType.POST);//待发送手机号:支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式request.setPhoneNumbers(phone);//短信签名request.setSignName(smsSign);//短信模板IDrequest.setTemplateCode(smsModelId);//短信通知参数json格式SmsParam smsParamVo = new SmsParam();//设置短信通知模板里面的变量值if("1".equals(smsModelType)){//短信验证码中的变量${number}smsParamVo.setNumber(modelParam.getString("code"));}else if("2".equals(smsModelType)){//短信通知中订单号变量${ordernumber}smsParamVo.setOrdernumber(modelParam.getString("code"));}else if("21".equals(smsModelType)){smsParamVo.setDisname(modelParam.getString("disname"));smsParamVo.setGoodsinfoname(modelParam.getString("goodsinfoname"));smsParamVo.setOfollowprice(modelParam.getString("ofollowprice"));smsParamVo.setNfollowprice(modelParam.getString("nfollowprice"));}else if("211".equals(smsModelType)){smsParamVo.setBsetname(modelParam.getString("bsetname"));smsParamVo.setGoodsinfoname(modelParam.getString("goodsinfoname"));}else if("212".equals(smsModelType)){smsParamVo.setGoodsinfoname(modelParam.getString("goodsinfoname"));}else if("213".equals(smsModelType)){}String smsParam = JSONObject.toJSONString(smsParamVo);System.out.println("新版本短信通知参数smsParam:"+smsParam);//模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.setTemplateParam(smsParam);//调用阿里云云通信短信接口SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);System.out.println("短信接口返回 Code=" + sendSmsResponse.getCode());System.out.println("短信接口返回 Message=" + sendSmsResponse.getMessage());//接口返回结果if(sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode())) {//设置返回结果result=true;}} catch (ClientException e) {e.printStackTrace();}return result;}/*** 随机生成6位数字作为验证码* @return*/public static String getCode(){int code=(int)(Math.random()*9000+100000);return code + "";}//测试public static void main(String[] args) {//新版本测试String smsAppKey="LTAIHmc******AzC";String smsSerect="lVeVM3qsj9FmO3hvy**********lG5";String smsSign="国商健翔";String smsModelId="SMS_105475***";JSONObject modelParam=new JSONObject();modelParam.put("code", getCode());String smsModelType="1";String phone="183******12";sendSms(smsAppKey,smsSerect,smsSign,smsModelId,modelParam,smsModelType,phone);}}

短信通知常量类:SMSConstants.java

package com.qianjiang.util.sms;/*** @class:SMSConstants* @descript:java 使用阿里大于短信通知验证码模板常量类* @date:3月7日 上午10:53:12* @author sang*/public class SMSConstants {//新版本:阿里云云通信调用短信接口需要的参数://产品名称:短信API产品名称(短信产品名固定,无需修改)public static final String PRODUCT = "Dysmsapi";//产品域名:短信API产品域名(接口地址固定,无需修改)public static final String DOMAIN = "";//短信通知模板类型:1验证码类2通知类//千匠用户注册发送短信验证码public static final String SMS_MODEL_TYPE1="1";//千匠用户下发订单发送订单通知public static final String SMS_MODEL_TYPE2="2";//千匠用户商品价格变动通知1public static final String SMS_MODEL_TYPE21="21";//千匠用户商品价格变动通知2public static final String SMS_MODEL_TYPE211="211";//千匠用户商品到货通知1public static final String SMS_MODEL_TYPE212="212";//千匠用户商品到货通知2public static final String SMS_MODEL_TYPE213="213";}

控制台执行结果:

接受到的短信通知:

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