短信机的封装
2018-03-13 00:00
10 查看
摘要: 不同短信机之间的参数可能不同,如何实现同一条短信在不同短信机之间切换后也能发送成功
有时候某个短信机崩溃了,我们得马上将使用这个短信机的接口切换到其他短信机进行过度.若不进行抽取封装,在切换的时候回比较麻烦,不方便.现在的目的则是抽取到可以只切换实现类就可切换短信机接口.
经过抽取封装我将他们分成了4类:
工厂类: 实现类的父类,里面会有一些常用的基本方法
实现类: 具体的短信机的实现类,当要新增短信机的时候,就新增实现类
工具类: 配置短信机信息和调用短信机的接口进行发送短信
枚举类: 配置不同短信机之间的模板的对应关系
参数:
phone -- 手机号
type_flag -- 短信类型
params -- 短信参数
返回值:发送结果 true为成功 false为失败
参数:
user -- 用户(用户对象中必须有手机号)
type_flag -- 短信类型
params -- 短信参数
返回值:发送结果 true为成功 false为失败
Boolean send_msg(String phone,String type_flag,String params)
见其父类
Boolean send_msg(User user, String type_flag,String params)
见其父类
getMsgByFlag(String flag)
描述:根据传入的短信类型调用枚举类获取对应的模板id
参数: flag -- 短信类型
返回值: 模板id(String类型)
配置信息:
SMS_REQUEST_URL -- 短信接口的请求地址(有测试和正式之分)
APP_KEY -- 应用的key
APP_SECRET -- 应用的签名(密钥)
SMS_FREE_SIGN_NAME -- 短信签名
Appkey和app_secret查看的方法:前往阿里大于控制台 --> 进入应用管理的应用列表中 -- > 点击设置 --> 登录淘宝 --> 即可看到App证书,如下图
短信签名是自定义的,但必须前往配置管理中进行配置短信签名
sendMsg(String phone,String paramsString, String tempId)
描述:此方法是调用阿里大于短信机接口进行发送的方法
参数:
phone : 电话号码
paramsString : 参数字符串
tempId : 模板id
返回值: 短信发送的结果(Boolean类型) true -- 发送成功 false -- 发送失败
Boolean send_msg(String phone,String type_flag,String params)
见其父类
Boolean send_msg(User user, String type_flag,String params)
见其父类
getMsgByFlag(String flag)
描述:根据传入的短信类型调用枚举类获取对应的短信模板
参数: flag -- 短信类型
返回值: 短信模板(String类型)
详细短信接口见: 北京易回眸科技有限公司短信通道接口文档
配置信息:
CPID: 企业id
md5: 接口签名
SMS_URL: 短信接口的请求地址
配置信息由接口方提供
send_msg(String phones,String msg)
描述:此方法是调用阿里大于短信机接口进行发送的方法
参数:
phones: 电话号码
msg: 短信内容
返回值: 短信发送的结果(String类型 -- json字符串)
Boolean send_msg(String phone,String type_flag,String params)
见其父类
Boolean send_msg(User user, String type_flag,String params)
见其父类
getMsgByFlag(String flag)
描述:根据传入的短信类型调用枚举类获取对应的短信模板
参数: flag -- 短信类型
返回值: 短信模板(String类型)
配置信息:
UID: 应用id
KEY: 应用签名
SMS_URL: 短信接口的请求地址
配置信息由接口方提供
sendSms(String mobile, String msg)
描述: 向指定的手机号发送短信(格式是gbk)
参数:
mobile -- 手机号
msg -- 验证码
返回值: 发送结果,字数字符串(String 类型)
sendSmsByCharset(String mobile, String msg,String charset)
描述: 向指定的手机号发送指定编码格式的短信
参数:
mobile -- 手机号
msg -- 短信内容
charset -- 编码格式gbk或者utf8 ,defualt是gbk
返回值:
String tb_tempId; //淘宝的短信模板id
String msg_temp; //普通短信的模板
getTb_tempId()
-- 获取淘宝模板id
getMsg_temp()
-- 获取短信模板
当需要增加短信模板相关信息,加个属性,每个枚举对象加个属性
附录:
Java代码具体见项目
觉得本文好的可以点个赞,觉得不好的可以提提建议或意见,一起进步,一起成长!!!
欢迎邮件来信讨论 490514142@qq.com
背景
当前各个短信机对不同业务的发送速度,延迟时间和价格都各有不同.在某些项目中可能用到的短信机不止一个,如某些延迟低的短信适合发送短信验证码,但是相对价格会高些,对于某些实时性不高的短信(提现通知之类的)可以选择价格低的短信机.我现在的项目就有3个短信机.有时候某个短信机崩溃了,我们得马上将使用这个短信机的接口切换到其他短信机进行过度.若不进行抽取封装,在切换的时候回比较麻烦,不方便.现在的目的则是抽取到可以只切换实现类就可切换短信机接口.
经过抽取封装我将他们分成了4类:
工厂类: 实现类的父类,里面会有一些常用的基本方法
实现类: 具体的短信机的实现类,当要新增短信机的时候,就新增实现类
工具类: 配置短信机信息和调用短信机的接口进行发送短信
枚举类: 配置不同短信机之间的模板的对应关系
AbstractSMSFactory
短信机工厂类,使用时new 一个它的实现类,即可使用实现类对应的短信机.当要使用其他短信机时,切换实现类即可.Boolean send_msg(String phone,String type_flag,String params)
描述: 根据手机号和短信类型,发送短信参数:
phone -- 手机号
type_flag -- 短信类型
params -- 短信参数
返回值:发送结果 true为成功 false为失败
Boolean send_msg(User user, String type_flag,String params)
描述: 根据手机号和短信类型,发送短信参数:
user -- 用户(用户对象中必须有手机号)
type_flag -- 短信类型
params -- 短信参数
返回值:发送结果 true为成功 false为失败
实现类
阿里大于短信机
TB_SMS
此类继承于AbstractSMSFactory类Boolean send_msg(String phone,String type_flag,String params)
见其父类
Boolean send_msg(User user, String type_flag,String params)
见其父类
getMsgByFlag(String flag)
描述:根据传入的短信类型调用枚举类获取对应的模板id
参数: flag -- 短信类型
返回值: 模板id(String类型)
SMS_TB_Utils
淘宝短信机信息配置和短信接口的调用配置信息:
SMS_REQUEST_URL -- 短信接口的请求地址(有测试和正式之分)
APP_KEY -- 应用的key
APP_SECRET -- 应用的签名(密钥)
SMS_FREE_SIGN_NAME -- 短信签名
Appkey和app_secret查看的方法:前往阿里大于控制台 --> 进入应用管理的应用列表中 -- > 点击设置 --> 登录淘宝 --> 即可看到App证书,如下图
短信签名是自定义的,但必须前往配置管理中进行配置短信签名
sendMsg(String phone,String paramsString, String tempId)
描述:此方法是调用阿里大于短信机接口进行发送的方法
参数:
phone : 电话号码
paramsString : 参数字符串
tempId : 模板id
返回值: 短信发送的结果(Boolean类型) true -- 发送成功 false -- 发送失败
易回眸短信机
YM_SMS
此类继承于AbstractSMSFactory类Boolean send_msg(String phone,String type_flag,String params)
见其父类
Boolean send_msg(User user, String type_flag,String params)
见其父类
getMsgByFlag(String flag)
描述:根据传入的短信类型调用枚举类获取对应的短信模板
参数: flag -- 短信类型
返回值: 短信模板(String类型)
YM_SMS_Utils
易回眸短信机信息配置和短信接口的调用详细短信接口见: 北京易回眸科技有限公司短信通道接口文档
配置信息:
CPID: 企业id
md5: 接口签名
SMS_URL: 短信接口的请求地址
配置信息由接口方提供
send_msg(String phones,String msg)
描述:此方法是调用阿里大于短信机接口进行发送的方法
参数:
phones: 电话号码
msg: 短信内容
返回值: 短信发送的结果(String类型 -- json字符串)
中国网建短信机
WC_SMS
此类继承于AbstractSMSFactory类Boolean send_msg(String phone,String type_flag,String params)
见其父类
Boolean send_msg(User user, String type_flag,String params)
见其父类
getMsgByFlag(String flag)
描述:根据传入的短信类型调用枚举类获取对应的短信模板
参数: flag -- 短信类型
返回值: 短信模板(String类型)
SMS_WC_Util
中国网建短信机信息配置和短信接口的调用配置信息:
UID: 应用id
KEY: 应用签名
SMS_URL: 短信接口的请求地址
配置信息由接口方提供
sendSms(String mobile, String msg)
描述: 向指定的手机号发送短信(格式是gbk)
参数:
mobile -- 手机号
msg -- 验证码
返回值: 发送结果,字数字符串(String 类型)
sendSmsByCharset(String mobile, String msg,String charset)
描述: 向指定的手机号发送指定编码格式的短信
参数:
mobile -- 手机号
msg -- 短信内容
charset -- 编码格式gbk或者utf8 ,defualt是gbk
返回值:
短信发送后返回值 | 说 明 |
-1 | 没有该用户账户 |
-2 | 接口密钥不正确 不是账户登陆密码 |
-21 | MD5接口密钥加密不正确 |
-3 | 短信数量不足 |
-11 | 该用户被禁用 |
-14 | 短信内容出现非法字符 |
-4 | 手机号格式不正确 |
-41 | 手机号码为空 |
-42 | 短信内容为空 |
-51 | 短信签名格式不正确 接口签名格式为:【签名内容】 |
-6 | IP限制 |
大于0 | 短信发送数量 |
枚举类
SmsEnum
短信模板相关枚举类String tb_tempId; //淘宝的短信模板id
String msg_temp; //普通短信的模板
getTb_tempId()
-- 获取淘宝模板id
getMsg_temp()
-- 获取短信模板
当需要增加短信模板相关信息,加个属性,每个枚举对象加个属性
附录:
Java代码具体见项目
觉得本文好的可以点个赞,觉得不好的可以提提建议或意见,一起进步,一起成长!!!
欢迎邮件来信讨论 490514142@qq.com
相关文章推荐
- IDropTarget 封装 让窗口支持拖放(文件,文本,URL...)
- iOS下WebService接口调用与解析-一、Soap对象的封装
- Linux学习之线程封装二:面向对象的封装
- 连载:面向对象葵花宝典:思想、技巧与实践(11) - “封装” 详解
- 封装的OK
- Java 面向 对象之封装 、多态、继承 (2)
- 封装QtCore
- Windows线程管理与封装
- 封装多线程处理大量数据操作
- MVP模式及BaseActivity的简单封装
- 图片封装下载----异步代理下载
- BaseAdapter的封装和实现
- 属性返回引用暴露内部封装
- Chart图形 [GDI+] OWCChart统计图的封装类 (转载)
- 封装导航栏及返回,获取控件所在控制器 iOS
- 在Altium Designer中使用AUTOCAD快速制作元件封装
- TCP/IP协议原理与应用笔记09:数据通信---封装(邮政系统层次结构:便于理解OSI网络模型)
- python对app页面元素进行封装并设置查找时间操作实例
- 黑马程序员--AOP功能的封装与配置
- Tomcat源码阅读之底层IO封装(1)InternalNioInputBuffer的分析