短信机的封装

背景

      当前各个短信机对不同业务的发送速度,延迟时间和价格都各有不同.在某些项目中可能用到的短信机不止一个,如某些延迟低的短信适合发送短信验证码,但是相对价格会高些,对于某些实时性不高的短信(提现通知之类的)可以选择价格低的短信机.我现在的项目就有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证书,如下图

170844_hGk8_2459446.png

170859_03NJ_2459446.png

短信签名是自定义的,但必须前往配置管理中进行配置短信签名

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代码具体见项目

170937_NKe7_2459446.png

 觉得本文好的可以点个赞,觉得不好的可以提提建议或意见,一起进步,一起成长!!!

    欢迎邮件来信讨论 490514142@qq.com

转载于:https://my.oschina.net/wxdl/blog/1634107

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值