阿里云短信服务
背景简介:
短信验证以及短信通知,目前已经应用的非常广泛,最近因项目需要,需要将原来的短信接口换成阿里云的的短信服务,原项目集成的短信服务能够实现短信的发送以及短信的验证整个过程,简单的来说,原来的短息服务,只需应用申请获取短信,短息服务器会发送短信到指定的手机,用户将验证码发送到短信服务商的服务器,服务器做出验证返回是否通过,而阿里云仅提供短信发送服务,需要自己开发短信的验证。下面简单的介绍一下:
1.获取阿里云AccessKey
用户->Accesskeys:需要自己创建一个AccessKey
2.创建短信签名:
阿里云控制台->短信服务->国内短信->签名管理: 创建自己的签名(签名主要是指应用的名字,如:中国移动,建设银行)
3.创建短信模板:
国内短信->模板管理:创建自己的短信通知模板(如:您正在申请手机注册,验证码为:${code},5分钟内有效!)
4.基于阿里云openAPI实现短信发送模块
注意:这里项目中需要导入aliyun-java-sdk-core-4.1.0.jar,额外注意:javaweb项目中,需要将aliyun-java-sdk-core-4.1.0.jar 以及gson-2.8.5.jar 导入到tomcat 的lib目录下,不然会出错。
1 package Surpport; 2 import com.aliyuncs.CommonRequest; 3 import com.aliyuncs.CommonResponse; 4 import com.aliyuncs.DefaultAcsClient; 5 import com.aliyuncs.IAcsClient; 6 import com.aliyuncs.exceptions.ClientException; 7 import com.aliyuncs.exceptions.ServerException; 8 import com.aliyuncs.http.MethodType; 9 import com.aliyuncs.http.ProtocolType; 10 import com.aliyuncs.profile.DefaultProfile; 11 12 13 /* 14 pom.xml 15 <dependency> 16 <groupId>com.aliyun</groupId> 17 <artifactId>aliyun-java-sdk-core</artifactId> 18 <version>4.0.3</version> 19 </dependency> 20 */ 21 22 /**** 23 * 阿里云短信验证工具 24 * 调用示例: 25 * SmsUtil sednMessage = new SmsUtil(); 26 * sednMessage.SendSMS("手机号", "需要发送的验证码"); 27 * @author finch 28 * 29 */ 30 public class SmsUtil { 31 32 33 /*************阿里云短信验证参数*****************/ 34 /****** 35 * 参考 阿里云 OpenAPI 36 * 37 */ 38 public String accessKeyId ="创建的AccessKeyId"; //AccessKeyId 39 public String accessSecret="获取的AccessKeySecret"; //AccessKeySecret 40 public String SignName ="短信签名"; //短信签名名称 41 public String TemplateCode ="SMS_短信模板ID"; //短信模板ID 42 43 44 45 public void SendSMS(String PhoneNumber,String RandomCode) { 46 47 48 DefaultProfile profile = DefaultProfile.getProfile("default", 49 accessKeyId,accessSecret); IAcsClient client = new DefaultAcsClient(profile); 50 51 CommonRequest request = new CommonRequest(); 52 request.setProtocol(ProtocolType.HTTPS); 53 request.setMethod(MethodType.POST); 54 request.setDomain("dysmsapi.aliyuncs.com"); request.setVersion("2017-05-25"); 55 request.setAction("SendSms"); //短信发送类型: 56 request.putQueryParameter("PhoneNumbers", PhoneNumber); //接受短信的号码 57 request.putQueryParameter("SignName", SignName); //短信签名 58 request.putQueryParameter("TemplateCode",TemplateCode ); //短信模板id 59 request.putQueryParameter("TemplateParam", "{\"code\":\""+RandomCode+"\"}"); //随机验证码 60 try { CommonResponse response = client.getCommonResponse(request); 61 System.out.println(response.getData()); //调用结果显示 62 } catch (ServerException e) 63 { 64 e.printStackTrace(); 65 } catch (ClientException e) 66 { e.printStackTrace(); } 67 68 } 69 }
5.实现短信验证流程