Skip to content

sgtcloud/smsnotifymodule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 

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