GitHub - sgtcloud/smsnotifymodule: A flexible module for send sms via different provider. · GitHub
Skip to content

sgtcloud/smsnotifymodule

Folders and files

Repository files navigation

特性

通过一套统一的基于短信验证码操作的api对多个短信服务商进行了抽象

  1. 抽象了短信验证码发送,获取用户在短信服务商平台信息。
  2. 提供了云片网(短信服务商)的实现。
  3. 提供了代码和spring注入的单元测试例子
  4. 支持使用spring注入

快速开始

通过maven安装

<dependency>
  <groupId>cn.sgtcloud.common</groupId>
  <artifactId>smsnotifymodule</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- 下面是源码和javadoc,非必须添加 -->
<dependency>
  <groupId>cn.sgtcloud.common</groupId>
  <artifactId>smsnotifymodule</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <classifier>sources</classifier>
</dependency>
<dependency>
  <groupId>cn.sgtcloud.common</groupId>
  <artifactId>smsnotifymodule</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <classifier>javadoc</classifier>
</dependency>

spring方式注入

这里以云片网为例的配置
1.创建bean声明,可从相关人员获得生产环境的参数

<!-- 云片网的配置 示例-->
<bean id="yunpianProvider"
	class="cn.sgtcloud.common.smsnotifymodule.service.impl.YUNPIANSMSProvider">
	<constructor-arg index="0" value="apikey" />
</bean>
<!-- 随机验证码生成配置 -->
<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
 <property name="config">
  <bean class="com.google.code.kaptcha.util.Config">
   <constructor-arg>
    <props>
     <prop key="kaptcha.image.width">250</prop>
     <prop key="kaptcha.image.height">100</prop>
     <prop key="kaptcha.border">no</prop>
     <prop key="kaptcha.border.color">105,179,90</prop>
     <prop key="kaptcha.textproducer.font.color">red</prop>
     <prop key="kaptcha.textproducer.font.size">90</prop>
     <prop key="kaptcha.session.key">code</prop>
     <!--配置验证码生成规则-->
     <prop key="kaptcha.textproducer.char.string">0123456789</prop>
     <!--配置验证码生成长度-->
     <prop key="kaptcha.textproducer.char.length">6</prop>
     <prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>
    </props>
   </constructor-arg>
  </bean>
 </property>
</bean>
<!-- 验证码短信管理配置 -->
<bean id="smsNotifyManager" class="cn.sgtcloud.common.smsnotifymodule.service.manager.SmsNotifyManager">
	<constructor-arg index="0" ref="yunpianProvider"/>
	<constructor-arg index="1" ref="captchaProducer"/>
	<!-- 配置guava cache 有效期  短信验证码有效期单位秒(SECONDS) -->
	<constructor-arg index="2" value="5"/>
	<!-- 配置 限制同一个手机号连续发送短信的频率 秒为单位 建议设置为30 值为0时 不进行限制 -->
	<constructor-arg index="3" value="30"/>
	<!-- 配置guava cache 最大size 值为不大于0时,不进行限制最大值 -->
	<constructor-arg index="4" value="1000"/>
</bean>

2.代码中引用

	@Autowired
	private SmsNotifyManager smsNotifyManager;

3.获取用户信息(在短信服务商平台上的信息,比如短信剩余量、当前api版本号等信息)

	smsNotifyManager.getUserInfo();

4.生成验证码

    smsNotifyManager.getCaptcha();

5.发送验证码短信

    <!--发送通用类验证码短信 eg:【{0}】您的验证码是{1}-->
    smsNotifyManager.sendMessage("手机号","公司名称","验证码");
    <!--发送模板类验证码短信 -->
    smsNotifyManager.sendMessage("手机号","短信模板","验证码","短信模板中占位符正则表达式",
"短信模板中替换占位符的内容");

6.验证验证码是否正确

    smsNotifyManager.isMatcher("手机号","验证码");

7.字符串中占位符替换(模板类短信使用)

    smsNotifyManager.fillStringByArgs("包含占位符字符串内容","占位符正则表达式","要替换占位符的字符串");

代码方式声明
1.创建实例

    <!-- 实例一个短信服务提供商(这里是云片网)-->
    SMSProvider yunpianProvider = new YUNPIANSMSProvider("apikey");
    <!-- 实例一个验证码生成工具类 DefaultKaptcha(详情参考kaptcha教程)-->
    DefaultKaptcha kaptcha = new DefaultKaptcha();
    Properties properties = new Properties();
    properties.setProperty("kaptcha.textproducer.char.string", "0123456789");
    properties.setProperty("kaptcha.textproducer.char.length", "6");
    Config config = new Config(properties);
    kaptcha.setConfig(config);
    SmsNotifyManager smsNotifyManager = new SmsNotifyManager(yunpianProvider,kaptcha,"短信有效期时间","冷却时间","最大size设置");
  

2.其他操作同spring方式。

About

A flexible module for send sms via different provider.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages