1.闲谈
直到第三方接入的出现,才让人感觉有点程序员的意思了,短信是我们经常接触的东西,所以今天写下短信的接入。
2.关于接入
发送短信,国内跑不了移动联通电信三巨头,但小公司直接对接这三家企业,先不说有没有这个渠道,只算成本就没得玩,费时费力。
还好各种互联 巨头,如阿里、腾讯、百度,都在自己家云平台上提供了对应的第三方短信接入的接口,省去了直接对接三巨头的成本,小流量的企业,一年到头几百块可能都用不完。
当然除了bat等巨头,也有专门做短信接口的企业,如创蓝、秒滴之类,不说质量怎么样,但足见接入第三方,比自己企业直接接入移动联通电信要受欢迎的多,也是java程序员需要掌握的主流业务技术之一。
目前市面上,阿里云的短信平台已经成了主流,安全稳定、企业大、短时间没有倒闭风险,加上许多中小企业的服务器都用的阿里云,所以阿里云的短信是企业的不二选择。
说白了就是拼接json串或者xml,向对应接口发送请求,然后获取回执码,看状态。
权限校验是拼接的json串或者xml里面的参数之一,无非什么appid、token之类。
支付也不过多了一层加密,把关键参数转成RSA,多了个回调接口,看支付是否成功,成功增加对应货币数量,或者购买成功之类的。
上面的是核心,所有的第三方几乎都绕不过去,大部分几乎都是http请求,简直和前端调后台接口没什么两样,无非角色转变,是我们后台发送请求罢了。
3.秒滴短信
为什么选择秒滴短信,这里无非是方便入门,新手友好,最关键的是,新人注册有10块钱本金,足够上百条短信发送了,方便入门者的使用。
我这不是打广告,各公司实际用什么短信,还是由经理决定,程序员又没有决定权,而且其他短信也大同小异,甚至别的第三方都逃不出上面红字的范围,所谓一门通、百门精,放在这里说,最合适不过了。
一:首先,打开对应短信方的官 平台,这用秒滴为例。
无论什么第三方平台,我们第一眼要锁定开发者字样,比如下面的开发者中心,点进去。
我们会看到
这时候其他的东西对我们来说无所谓,接入指引的参数,让经理申请好给你,就 ACCOUT SID 和 AUTH TOKEN,一般都是经理申请,自己用的话,根据指引来,这不是技术点,也没有难度,无非点点点。
直接锁定API字样的选项,这里就是HTTPS API,也就是接口文档。
二:正式接入
点进验证码通知短信,右侧会出现接口文档,从上到下
请求地址 https://api.miaodiyun.com/20150822/industrySMS/sendSMS 这个是我们发送请求的地址,固定参数不变的
请求方式 POST 没什么说的
编码格式 UTF-8 国内编码跑不出 utf-8
响应格式 JSON,XML 一般说用json 除了微信支付这个nc设计,我还没见过哪家用xml这种反人类设置的
请求包头 Content-type:application/x-www-form-urlencoded 这个设置的没什么说的
请求参数说明
关键部分,就是这堆参数
1.是按流程申请的一个权限账 id,用户身份识别的,问经理要,或者自己按流程申请
2.则是按流程申请的模板,申请来的模板直接填进去就好
3.申请的模板的主键参数 没什么可说的 可填可不填
4.可选 在2只填写模板的情况下 3放入替换变量的 值,比如说验证码,或者直接在2中放入所有数据
5.必选项 手机 给那台手机 发送短信 就填哪个
6.不填 没意义
7.必选 放个对应格式的时间进去就行了 java格式时间还是很方便的
8.必选项 验证身份的 就是把身份id token 和 时间戳 拼接起来 md5加密 对方同样加密然后判断是否相等 相等通过校验
9.可选 加不加无所谓 反正默认返回json 加上免得出事故 json比较好用
请求实例
这里验证了我说的话 无非就是拼接一些参数 发送到对应接口 获取数据 判断是否成功,难点在于各个参数各种加密啦,获取了罢了,第三方没有什么大不了的。
返回参数说明
这个看源文档吧 就是返回的json带的数据 判断一下状态码 是什么状态
返回示例
同样的 不贴了 看源文档。
4.总结
还是那句话 , 无论什么第三方,都是拼接他们要求的各种参数,然后发送到指定服务器接口也就是url,获取回执信息,根据官方状态码,判断是否成功。
难点在于各种文档很乱 , 参数拿的不对,最nc还是微信支付,跨两个平台,参数要从两个平台取,简直nc。
5.DEMO
按习惯放个demo
上面的HttpUtil是请求发送工具, 参考我的这篇博文: https://blog.csdn.net/soulsda/article/details/86511465
json是fastjson的jar包处理,自行百度,国内不用fastjson的反而少见,我这里不多讲,
MD5Util 是md5加密算法, 上一大把,我也不多赘述,
Constants 是我一个工具类 就是放各种参数的 根据名字清晰看到是token 和 sid 之类的 按自己申请的替换掉就行
如果有人没怎么看懂,欢迎留言,我看到会详细解答的。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92531 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!