原来对接阿里云手机验证码服务操作这么简单
导读
短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码、短信通知等。如何通过编码将两种功能实现完美结合,爱尚实训有绝招
接入阿里云短信服务
1.注册阿里云短信服务账号,这里使用淘宝账号就可以登陆,不做演示,入口如图
2.既然使用服务,那肯定要涉及到费用,我们看一下收费标准,连接:短信业务规则
3.API说明文档,生成AccesesKey(生成后请妥善保存)
4.选择模板,获取模板code
注:${code}为变量名称
申请成功后会得到模板code
注意事项:
短信格式:
•短信由签名和模板两部分组成。用户需要先申请短信签名,审批通过后,再申请短信模板
•短信示例:【阿里云】验证码${code},您正进行支付宝的身份验证
•短信签名是:【阿里云】
•短信模板是:验证码${code},您正进行支付宝的身份验证
•变量是:${code}
•验证码和系统通知类短信需申请:系统签名和系统模板
•推广营销类短信需申请:营销签名和营销模板
•短信内容不支持【】,会与签名混淆,特殊符号可能会导致短信出现乱码,暂不支持如、、 、 →、等特殊符号
5.申请签名(根据用户属性来创建符合自身属性的签名信息)
5.1点击添加签名
选择个人使用
6.下载SDK开发工具和DEMO
下载后解压 找到这两个jar包,导入工程
1.importcom.aliyuncs.DefaultAcsClient;
2.importcom.aliyuncs.IAcsClient;
3.importcom.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
4.importcom.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
5.importcom.aliyuncs.exceptions.ClientException;
6.importcom.aliyuncs.http.MethodType;
7.importcom.aliyuncs.profile.DefaultProfile;
8.importcom.aliyuncs.profile.IClientProfile;
9.
14.publicclass ALiSMSUtil {
15.final static String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
16.final static String domain ="dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
17.//替换成你的AK
18.final static String accessKeyId = "你的accessKeyId";//你的accessKeyId
19.final static String accessKeySecret ="你的accessKeySecret";//你的accessKeySecret
20.final static String TEMPLATECODE = "你的模板CODE";//你的模板CODE
21.final static String SIGNNAME = "你的签名名称";//你的签名名称
22.
23.
28.public static void sendCode(String tel) throws ClientException {
29.//设置超时时间-可自行调整
30.System.setProperty("sun.net.client.defaultConnectTimeout","10000");
31.System.setProperty("sun.net.client.defaultReadTimeout", "10000");
32.//初始化ascClient需要的几个参数
33.
34.
35.
36.//初始化ascClient,暂时不支持多region(请勿修改)
37.IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou",accessKeyId,
38.accessKeySecret);
39.DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product,domain);
40.IAcsClient acsClient = new DefaultAcsClient(profile);
41.//组装请求对象
42.SendSmsRequest request = new SendSmsRequest();
43.//使用post提交
44.request.setMethod(MethodType.POST);
45.//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
46.request.setPhoneNumbers(tel);
47.//必填:短信签名-可在短信控制台中找到
48.request.setSignName(SIGNNAME);
49.//必填:短信模板-可在短信控制台中找到
50.request.setTemplateCode(TEMPLATECODE);
51.//生成随机6位数字(验证码,生成后发送给用户)
52.long round = Math.round(Math.random()*1000000);
53.String code = String.valueOf(round);
54.//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
55.//友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
56.//request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
57.request.setTemplateParam("{\"code\":\""+code+"\"}");
58.//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
59.//request.setOutId("yourOutId");
60.//请求失败这里会抛ClientException异常
61.try {
62.SendSmsResponse sendSmsResponse =acsClient.getAcsResponse(request);
63.if(sendSmsResponse.getCode() != null &&sendSmsResponse.getCode().equals("OK")) {
64.//请求成功
65.System.out.println("请求消息结果-->"+sendSmsResponse.getMessage());
66.}
67.} catch (Exception e) {
68.// TODO Auto-generated catch block
69.//e.printStackTrace();
70.System.out.println("请求失败");
71.}
72.}
73.}
[java] view plain copy
1.importcom.aishang.sms.ALiSMSUtil;
2.importcom.aliyuncs.exceptions.ClientException;
3.
4.publicclass DemoTest {
5.
6.public static void main(String[] args) {
7.try {
8.ALiSMSUtil.sendCode("手机号码");
9.} catch (ClientException e) {
10.System.out.println("初始化失败");
11.}
12.
13.}
14.
15.}
爱尚实训--做品质教育用事实说话
学校地址:哈尔滨市南岗区和兴三道街214号13层
咨询热线:0451-51062023、13624602876(微信同上)