2023年7月31日发(作者:)
Java版阿⾥云通信短信发送API接⼝实例(新)阿⾥云通信(原名阿⾥⼤于)的短信服务(Short Message Service)是阿⾥云为⽤户提供的⼀种通信服务的能⼒,⽀持快速发送短信验证码、短信通知等。 完美⽀撑双11期间2亿⽤户,发送6亿短信。三⽹合⼀专属通道,与⼯信部携号转⽹平台实时互联。电信级运维保障,实时监控⾃动切换,到达率⾼达99%。具体阿⾥⼤于是什么时候改版到阿⾥云通信的,不是太清楚,反正以前的短信发送验证码、短信通知的接⼝最近⽤不了了(提⽰的错误见下⾯的⽇志),于是只能根据阿⾥云通信提供的API对接⼝重新改版。ERROR Logger: 2017-12-08 12:09:52.181^_^LTAIR3x1VogOJPz5^_^^_^172.19.38.254^_^Windows Server
发现错误后的第⼀反应当然是根据错误信息去找原因:Insufficient isv permissions:开发者权限不⾜
sion-api-package-limit:没有和任何访问包关联,建议根据业务规则申请对应的权限这样的解释似乎并不能帮助我们解决掉问题?接下来的做法,当然是去看阿⾥云通信官⽅给出的API,等待把Java版的短信产品相关的SDK及DEMO程序下载到本地后,我明⽩了。新的jar包
原来调⽤的jar包taobao-sdk-java-auto_已经发⽣了变化,当然旧版的短信接⼝99%是⽤不了的。那么新版的阿⾥云通信短信发送API该怎么调⽤呢?1)创建阿⾥云账号2)获取阿⾥云访问密钥3)在控制台完成模板与签名的申请,获得调⽤接⼝必备的参数添加模板的时候,请⼀定要注意,模板的格式是需要⼀定规则的,后⾯编写Java代码时需要进⾏匹配,举例如下:${code}在后⾯调⽤阿⾥云API的时候要传递。${username}和${password}同样在后⾯调⽤阿⾥云API的时候要传递。模板提交后,阿⾥云通信会在2个⼩时候内审批,审批完成后就可以看到模板CODE,该参数在后⾯调⽤API的时候同样是必须的。4)下载Java版的SDK如果你使⽤的是maven,阿⾥提供的⽅式是:如果你们公司有⾃⼰搭建仓库,可以把SDK⾥⾯提供的本地jar上传上去即可或者你⾛你的本地jar依赖⽅式
5)编写发送短信的util类package ;import DateFormat;import ;import tAcsClient;import ient;import endDetailsRequest;import endDetailsResponse;import sRequest;import sResponse;import Exception;import tProfile;import tProfile;import xception;public class MoblieMessageUtil { // 产品名称:云通信短信API产品,开发者⽆需替换 private static final String product = "Dysmsapi"; // 产品域名,开发者⽆需替换 private static final String domain = ""; // 此处需要替换成开发者⾃⼰的AK(在阿⾥云访问控制台寻找) private static String accessKeyId = "yourAccessKeyId"; private static String accessKeySecret = "yourAccessKeySecret"; private static String signName = "yourAccessKeySecret"; private static String identifyingTempleteCode = "yourAccessKeySecret"; private static String registTempleteCode = "yourAccessKeySecret"; public static void init(String accessKeyId, String accessKeySecret, String signName, String identifyingTempleteCode, String registTempleteCode) { KeyId = accessKeyId; KeySecret = accessKeySecret; me = signName; fyingTempleteCode = identifyingTempleteCode; TempleteCode = registTempleteCode; } public static void main(String[] args) { ("key", "keysecret", "沉默王⼆", "SMS_110", "SMS_112"); // 发短信 SendSmsResponse response = entifyingCode("⼿机号", "123456"); n("短信接⼝返回的数据----------------"); n("Code=" + e()); n("Message=" + sage()); n("RequestId=" + uestId()); n("BizId=" + Id()); response = wUserNotice("", "123456", "4512"); n("短信接⼝返回的数据----------------"); n("Code=" + e()); n("Message=" + sage()); n("RequestId=" + uestId()); n("BizId=" + Id()); } public static SendSmsResponse sendSms(String mobile, String templateParam, String templateCode) throws ClientException { // 可⾃助调整超时时间 perty("tConnectTimeout", "10000"); perty("tReadTimeout", "10000"); // 初始化acsClient,暂不⽀持region化 IClientProfile profile = file("cn-hangzhou", accessKeyId, accessKeySecret); point("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); // 组装请求对象-具体描述见控制台-⽂档部分内容 SendSmsRequest request = new SendSmsRequest(); // 必填:待发送⼿机号 neNumbers(mobile); // 必填:短信签名-可在短信控制台中找到 nName(signName); // 必填:短信模板-可在短信控制台中找到 plateCode(templateCode); // 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 plateParam(templateParam); // 选填-上⾏短信扩展码(⽆特殊需求⽤户请忽略此字段) // UpExtendCode("90997"); // 可选:outId为提供给业务⽅扩展字段,最终在短信回执消息中将此值带回给调⽤者 Id("yourOutId"); // hint 此处可能会抛出异常,注意catch SendSmsResponse sendSmsResponse = Response(request); return sendSmsResponse; } public static SendSmsResponse sendNewUserNotice(String mobile, String username, String password) { try { return sendSms(mobile, "{"username":"" + username + "", "password":"" + password + ""}", registTempleteCode); } catch (ClientException e) { throw new OrderException(sage()); } } public static SendSmsResponse sendIdentifyingCode(String mobile, String code) { try { return sendSms(mobile, "{"code":"" + code + ""}", identifyingTempleteCode); } catch (ClientException e) { throw new OrderException(sage()); } }}API的调⽤⽅式是阿⾥云提供的,不过这⾥需要注意的是参数的json字符串⼀定要正确。上⽂中验证码模板的参数格式是{"code":"123456"},尽管123456是数字,也要按照字符串传递。
注册模板的参数格式是“`{“username”:”沉默王⼆”,”password”:”123456”}。另外,模板CODE⼀定要传递正确!⼀般是以SMS_开头的,例SMS_113121051
2023年7月31日发(作者:)
Java版阿⾥云通信短信发送API接⼝实例(新)阿⾥云通信(原名阿⾥⼤于)的短信服务(Short Message Service)是阿⾥云为⽤户提供的⼀种通信服务的能⼒,⽀持快速发送短信验证码、短信通知等。 完美⽀撑双11期间2亿⽤户,发送6亿短信。三⽹合⼀专属通道,与⼯信部携号转⽹平台实时互联。电信级运维保障,实时监控⾃动切换,到达率⾼达99%。具体阿⾥⼤于是什么时候改版到阿⾥云通信的,不是太清楚,反正以前的短信发送验证码、短信通知的接⼝最近⽤不了了(提⽰的错误见下⾯的⽇志),于是只能根据阿⾥云通信提供的API对接⼝重新改版。ERROR Logger: 2017-12-08 12:09:52.181^_^LTAIR3x1VogOJPz5^_^^_^172.19.38.254^_^Windows Server
发现错误后的第⼀反应当然是根据错误信息去找原因:Insufficient isv permissions:开发者权限不⾜
sion-api-package-limit:没有和任何访问包关联,建议根据业务规则申请对应的权限这样的解释似乎并不能帮助我们解决掉问题?接下来的做法,当然是去看阿⾥云通信官⽅给出的API,等待把Java版的短信产品相关的SDK及DEMO程序下载到本地后,我明⽩了。新的jar包
原来调⽤的jar包taobao-sdk-java-auto_已经发⽣了变化,当然旧版的短信接⼝99%是⽤不了的。那么新版的阿⾥云通信短信发送API该怎么调⽤呢?1)创建阿⾥云账号2)获取阿⾥云访问密钥3)在控制台完成模板与签名的申请,获得调⽤接⼝必备的参数添加模板的时候,请⼀定要注意,模板的格式是需要⼀定规则的,后⾯编写Java代码时需要进⾏匹配,举例如下:${code}在后⾯调⽤阿⾥云API的时候要传递。${username}和${password}同样在后⾯调⽤阿⾥云API的时候要传递。模板提交后,阿⾥云通信会在2个⼩时候内审批,审批完成后就可以看到模板CODE,该参数在后⾯调⽤API的时候同样是必须的。4)下载Java版的SDK如果你使⽤的是maven,阿⾥提供的⽅式是:如果你们公司有⾃⼰搭建仓库,可以把SDK⾥⾯提供的本地jar上传上去即可或者你⾛你的本地jar依赖⽅式
5)编写发送短信的util类package ;import DateFormat;import ;import tAcsClient;import ient;import endDetailsRequest;import endDetailsResponse;import sRequest;import sResponse;import Exception;import tProfile;import tProfile;import xception;public class MoblieMessageUtil { // 产品名称:云通信短信API产品,开发者⽆需替换 private static final String product = "Dysmsapi"; // 产品域名,开发者⽆需替换 private static final String domain = ""; // 此处需要替换成开发者⾃⼰的AK(在阿⾥云访问控制台寻找) private static String accessKeyId = "yourAccessKeyId"; private static String accessKeySecret = "yourAccessKeySecret"; private static String signName = "yourAccessKeySecret"; private static String identifyingTempleteCode = "yourAccessKeySecret"; private static String registTempleteCode = "yourAccessKeySecret"; public static void init(String accessKeyId, String accessKeySecret, String signName, String identifyingTempleteCode, String registTempleteCode) { KeyId = accessKeyId; KeySecret = accessKeySecret; me = signName; fyingTempleteCode = identifyingTempleteCode; TempleteCode = registTempleteCode; } public static void main(String[] args) { ("key", "keysecret", "沉默王⼆", "SMS_110", "SMS_112"); // 发短信 SendSmsResponse response = entifyingCode("⼿机号", "123456"); n("短信接⼝返回的数据----------------"); n("Code=" + e()); n("Message=" + sage()); n("RequestId=" + uestId()); n("BizId=" + Id()); response = wUserNotice("", "123456", "4512"); n("短信接⼝返回的数据----------------"); n("Code=" + e()); n("Message=" + sage()); n("RequestId=" + uestId()); n("BizId=" + Id()); } public static SendSmsResponse sendSms(String mobile, String templateParam, String templateCode) throws ClientException { // 可⾃助调整超时时间 perty("tConnectTimeout", "10000"); perty("tReadTimeout", "10000"); // 初始化acsClient,暂不⽀持region化 IClientProfile profile = file("cn-hangzhou", accessKeyId, accessKeySecret); point("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); // 组装请求对象-具体描述见控制台-⽂档部分内容 SendSmsRequest request = new SendSmsRequest(); // 必填:待发送⼿机号 neNumbers(mobile); // 必填:短信签名-可在短信控制台中找到 nName(signName); // 必填:短信模板-可在短信控制台中找到 plateCode(templateCode); // 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 plateParam(templateParam); // 选填-上⾏短信扩展码(⽆特殊需求⽤户请忽略此字段) // UpExtendCode("90997"); // 可选:outId为提供给业务⽅扩展字段,最终在短信回执消息中将此值带回给调⽤者 Id("yourOutId"); // hint 此处可能会抛出异常,注意catch SendSmsResponse sendSmsResponse = Response(request); return sendSmsResponse; } public static SendSmsResponse sendNewUserNotice(String mobile, String username, String password) { try { return sendSms(mobile, "{"username":"" + username + "", "password":"" + password + ""}", registTempleteCode); } catch (ClientException e) { throw new OrderException(sage()); } } public static SendSmsResponse sendIdentifyingCode(String mobile, String code) { try { return sendSms(mobile, "{"code":"" + code + ""}", identifyingTempleteCode); } catch (ClientException e) { throw new OrderException(sage()); } }}API的调⽤⽅式是阿⾥云提供的,不过这⾥需要注意的是参数的json字符串⼀定要正确。上⽂中验证码模板的参数格式是{"code":"123456"},尽管123456是数字,也要按照字符串传递。
注册模板的参数格式是“`{“username”:”沉默王⼆”,”password”:”123456”}。另外,模板CODE⼀定要传递正确!⼀般是以SMS_开头的,例SMS_113121051
发布评论