闲来无事研究一下调用第三方接口发送短信的技术

这一次我们使用阿里的短信服务

一、进行平台相关服务的注册和设置

下面请参照阿里的短信服务文档进行设置,只要按照文档步骤来差不多30分钟就能搞定服务注册;

阿里云短信服务文档使用指引

更新时间:2017-12-05 16:23:43

短信使用流程见下图:

入驻阿里云

1.阿里云注册入口:点击注册页面

2.实名认证:点击进行实名认证

实名认证相关帮助链接:①查看如何选择实名认证方式/实名认证介绍方式集锦,②个人客户如何完成实名认证,③企业如何完成实名认证?,④事业单位、学校、机关、政府、社会团体如何完成实名认证?,⑤实名认证的支付宝与帐号绑定的支付宝的区别?

3.绑定企业支付宝:点击绑定企业支付宝

申请短信服务

1.开通短信服务:点击开通短信服务

2.进入控制台:点击查看控制台页面

创建应用

1创建AccessKey: 点击创建AccessKey

2.获取Access Key ID和Access Key Secret:点击查看Access Key ID和Access Key Secret

创建短信模板

1.创建签名前查看短信规则和审核规则:短信业务规则,审核规则

2.如何创建短信:点击查看①创建短信签名,②创建短信模板,③创建推广短信

短信接口配置

1.设置访问权限控制:点击访问权限控制

2.接口调用机制与SDK及DEMO下载:①点击查看API签名调用机制,②点击下载SDK及DEMO

3.API文档(短信发送的入参与编写样例):①短信发送-JAVA,②短信发送-PHP,③短信发送-Python,④短信发送—Node.js

发送短信

1.如何使用短信查询API:

①短信查询API(QuerySendDetails)—JAVA

②短信查询API(QuerySendDetails)—PHP

③短信查询API(QuerySendDetails)—Python

④短信查询API(QuerySendDetails)—Node.js

⑤HTTP协议及签名

2.发送短信后排障常用文档:

①常见短信接口调用错误码和解决办法

②短信发送状态回执错误码

③什么是限流

④充值开票问题

⑤系统短信和营销短信区别

⑥如何防范被盗刷

⑦如何获取App Key和App Secret

二、根据接口文档配置参数,发送短信

经过上面的研究我相信你已对阿里的短信服务有了一定的理解和认识下面我们重点介绍一下java中接口参数的引用:

短信发送API(SendSms)---JAVA

发送短信接口(SendSms)

步骤 1 创建阿里云账号

为了访问短信服务,您需要有一个阿里云账号。如果没有,可首先按照如下步骤创建阿里云账号:

  1. 访问阿里云 官方网站,单击页面上的 免费注册 按钮。
  2. 按照屏幕提示完成注册流程并进行实名认证,短信服务只支持实名认证用户使用。为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。具体实名认证流程,请参考 这里。

步骤 2 获取阿里云访问密钥

为了使用短信发送API-JAVA SDK,您必须申请阿里云的访问密钥。

阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名 API 请求内容以通过服务端的安全验证。

该访问秘钥成对(AccessKeyId 与 AccessKeySecret)生成和使用。每个阿里云用户可以创建多对访问秘钥,且可随时启用(Active)、禁用(Inactive)或者删除已经生成的访问秘钥对。

您可以通过阿里云控制台的 秘钥管理页面 创建、管理所有的访问秘钥对,且保证它处于“启用”状态。由于访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。

步骤 3 在控制台完成模板与签名的申请,获得调用接口必备的参数

短信签名

根据用户属性来创建符合自身属性的签名信息。企业用户需要上传相关企业资质证明,个人用户需要上传证明个人身份的证明。

注意:短信签名需要审核通过后才可以使用。

短信模板

短信模板,即具体发送的短信内容。

短信模板可以支持验证码、短信通知、推广短信、国际/港澳台消息四种模式。验证码和短信通知,通过变量替换实现个性短信定制。推广短信不支持在模板中添加变量。

短信模板需要审核通过后才可以使用。

为了成功发送一条短信通知,您至少需要完成以下步骤

一、在控制台完成短信签名与短信模板的申请,获得调用接口必备的参数

在“短信签名”页面完成签名的申请,获得短信签名的字符串 签名申请手册

在“短信模板”页面完成模板的申请,获得模板ID。模板申请手册

参数

入参列表
参数名称 参数类型 必填与否 样例取值 参数说明
PhoneNumbers String 必须 15000000000 短信接收号码,支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
SignName String 必须 云通信 短信签名
TemplateCode String 必须 SMS_0000 短信模板ID
TemplateParam String 可选 {“code”:”1234”,”product”:”ytx”} 短信模板变量替换JSON串,友情提示:如果JSON中需要带换行符,请参照标准的JSON协议。
SmsUpExtendCode String 可选 90999 上行短信扩展码,无特殊需要此字段的用户请忽略此字段
OutId String 可选 abcdefgh 外部流水扩展字段
出参列表
出参名称 出参类型 样例取值 参数说明
RequestId String 8906582E-6722 请求ID
Code String OK 状态码-返回OK代表请求成功,其他错误码详见错误码列表
Message String 请求成功 状态码的描述
BizId String 134523^4351232 发送回执ID,可根据该ID查询具体的发送状态

技术对接步骤

1:下载SDK工具包

SDK工具包中一共包含了2个类库,一个aliyun-java-sdk-core包,另外一个是alicom-dysms-api包,将这两个包执行mvn package命令或者mvn deploy命令打包出相应的jar包,添加到工程类库中依赖使用。

SDK&DEMO[下载地址]

2: 编写样例程序

注:有备注无需修改的位置请勿改动。

//设置超时时间-可自行调整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化ascClient需要的几个参数
final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
//替换成你的AK
final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,参考本文档步骤2
final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret,参考本文档步骤2
//初始化ascClient,暂时不支持多region(请勿修改)
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象
SendSmsRequest request = new SendSmsRequest();
//使用post提交
request.setMethod(MethodType.POST);
//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
request.setPhoneNumbers("1500000000");
//必填:短信签名-可在短信控制台中找到
request.setSignName("云通信");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("SMS_1000000");
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
//友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
//可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
//request.setSmsUpExtendCode("90997");
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request.setOutId("yourOutId");
//请求失败这里会抛ClientException异常
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
//请求成功
}

错误码列表

Code 描述
OK 请求成功
isp.RAM_PERMISSION_DENY RAM权限DENY
isv.OUT_OF_SERVICE 业务停机
isv.PRODUCT_UN_SUBSCRIPT 未开通云通信产品的阿里云客户
isv.PRODUCT_UNSUBSCRIBE 产品未开通
isv.ACCOUNT_NOT_EXISTS 账户不存在
isv.ACCOUNT_ABNORMAL 账户异常
isv.SMS_TEMPLATE_ILLEGAL 短信模板不合法
isv.SMS_SIGNATURE_ILLEGAL 短信签名不合法
isv.INVALID_PARAMETERS 参数异常
isp.SYSTEM_ERROR 系统错误
isv.MOBILE_NUMBER_ILLEGAL 非法手机号
isv.MOBILE_COUNT_OVER_LIMIT 手机号码数量超过限制
isv.TEMPLATE_MISSING_PARAMETERS 模板缺少变量
isv.BUSINESS_LIMIT_CONTROL 业务限流
isv.INVALID_JSON_PARAM JSON参数不合法,只接受字符串值
isv.BLACK_KEY_CONTROL_LIMIT 黑名单管控
isv.PARAM_LENGTH_LIMIT 参数超出长度限制
isv.PARAM_NOT_SUPPORT_URL 不支持URL
isv.AMOUNT_NOT_ENOUGH 账户余额不足

注:查询所有错误码及解决办法请点击短信接口调用错误码

转载于:https://www.cnblogs.com/keepruning/p/9172982.html

发送短信——java相关推荐

  1. 使用SMS网建短信通平台发送短信-Java示例

    中国网建短信平台接口 http://www.smschinese.cn/api.shtml 步骤: 1. 短信通平台用户注册: http://www.smschinese.cn/reg.shtml 2 ...

  2. SpringBoot 实现手机发送短信验证码

    手机发送短信 内容 一.手机发送短信 1. 前端界面代码 2. UserInfoController 控制器 3. application.properties 配置类文件 4. 具体实现 总结 内容 ...

  3. java发送短信模板_java发送短信

    java发送短信一般步骤 一.在中国网建中注册用户:本程序是通过中国网建提供的SMS短信平台实现的,该平台新用户注册可以拥有免费5条普通短信和3条彩信,足够进行尝试和体验了.中国网建注册地址:http ...

  4. java 短信猫发送短信的方法

    http://zghbwjl.blog.163.com/blog/static/12033667220129175158806/ http://www.smscom.cn/sms_javasoft/ ...

  5. 中国网建SMS短信接口调用(java发送短信)

    java发送短信 package sms;import org.apache.commons.httpclient.Header; import org.apache.commons.httpclie ...

  6. java + maven 实现发送短信验证码功能

    如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenzikj.com/doc/sdk.html ...

  7. java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...

    注册登录后需要企业认证,直接在某度上找一张清晰有红章的企业营业执照,注意要细心点,要看看有没有水印.我第一次就没注意上传了一张有水印的营业执照,从此这个账号再也没有审核通过了,后面只能换个账号.都是后 ...

  8. 中国网建java发送短信_短信验证登陆-中国网建提供的SMS短信平台

    一.JAVA发送手机短信常见的有三种方式(如下所列): 使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册 使用短信mao的方式进行短信 ...

  9. php榛子云短信验证,java + maven +榛子云短信 实现发送短信验证码功能

    如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信的接口. 下载下来是jar文件,需要将jar发布到本地的maven仓库中, 在cmd环境下输入: mvn install ...

最新文章

  1. java包装_Java基础之神奇的包装类(一)
  2. MySQL配置文件my.cnf中文版(转载)
  3. 【数值分析】微分求积:复化梯形、复化辛浦生
  4. 坐火车一定要带身份证
  5. JVM(4)——对象访问
  6. java构造器_Java构造器就是这么简单!
  7. Arch Linux下打不开gnome-shell
  8. OMNeT++学习程序 4
  9. 计算机配件的真假辨伪,专家教你辨真伪 “火眼金睛”辨真假配件
  10. 华为中兴腾讯拿下国家科学技术进步奖,中南大学一作奖项总数全国第三
  11. 关于软件测试学习的心得
  12. 将DynamipsGUI和VMware虚拟机进行桥接
  13. 边框给背景图css怎么写,使用css设置边框背景图片
  14. java开发一般用se,用大白話聊聊JavaSE
  15. 加权评分模型(weighted scoring model)
  16. Redis中RDB操作
  17. CSS的水平居中、垂直居中和水平垂直居中
  18. 明星热图|王嘉尔、刘诗诗代言新品牌;王一博、周笔畅、刘恺威出席活动;吴彦祖、黄晓明演绎品牌大片...
  19. 数据科学包——Day2
  20. java程序员更是_2019年 Java程序员面临更加激烈的竞争

热门文章

  1. 22.12.1 电子词典项目流程图
  2. 网站如何经过身份验证_微服务架构如何保证安全性?
  3. Delaunay(德劳内)三角剖分算法
  4. httpclient登录新浪微博手机版Weibo.cn
  5. javascript四舍五入算法Bug修复
  6. Shopee收款方式设置
  7. 老米之家怎么抢注老域名?为什么要抢注老域名建站?
  8. SOS 剧毒 五氧化二矾
  9. extjs 文本框只能输入数字的限制
  10. 财付通绑定谷歌钱包的问题