springboot 2.X——短信网关使用初体验

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_38322527/article/details/102497120

一、购买申请短信网关

我测试使用的是腾讯云包含的“短信网关”接口。腾讯云短信网关地址   

二、创建短信模板

模板案例

{1}为您的登录验证码,请于{2}分钟内填写。如非本人操作,请忽略本短信。 (其中{1}、{2}为可自定义的内容,须从1开始连续编号,如{1}、{2}等)

三、发送短信操作(重点)

1、开发文档

地址

2、demo测试工具类代码

依赖引入:

<!-- 短信网关 start -->
		<dependency>
			<groupId>com.github.qcloudsms</groupId>
			<artifactId>qcloudsms</artifactId>
			<version>1.0.6</version>
		</dependency>
		<!-- 短信网关  end -->
import java.io.IOException;
import java.util.Random;
import org.json.JSONException;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import cn.linkpower.util.StringUtils;

/**
 * 短信网关工具类
 * 
 * @author 76519
 *
 */
public class SMSUtils {


	/**
	 * 发送短信至指定的手机上,同时保存短信信息至session中
	 * @param smsLen 	指定验证码长度
	 * @param phoneNumber 	手机号码
	 * @param smsAppId		appid
	 * @param smsAppKey		appkey
	 * @param templateId	模板id
	 * @param timeout	验证码超时时间
	 * @param smsSign	验证码内容标头
	 * @return
	 */
	public static String sendAndGetRandomCode(Integer smsLen,
			String phoneNumber,
			int smsAppId,
			String smsAppKey,
			int templateId,
			String timeout,
			String smsSign){
		//获取随机的指定长度的验证码信息
		String smsVal = getRandomIntValue(smsLen);
		if(StringUtils.isNull(smsVal)){
			return null;
		}
		//编辑模板填充信息
		String[] params = new String[2];
        //如果模板中包含多个{1}、{2}、、时,采取数组方式传递参数信息
		params[0] = smsVal;
		params[1] = timeout;
		//发送短信验证码信息
		SmsSingleSender ssSender = new SmsSingleSender(smsAppId, smsAppKey);
		SmsSingleSenderResult sSMResult = null;
		try {
			sSMResult = ssSender.sendWithParam("86", phoneNumber,
				      templateId, params, smsSign, "", "");
		} catch (HTTPException e) {
			// HTTP 响应码错误
			e.printStackTrace();
		} catch (JSONException e) {
			// JSON 解析错误
			e.printStackTrace();
		} catch (IOException e) {
			// 网络 IO 错误
			e.printStackTrace();
		}
		//如果发送成功,判断获取回调信息  
		//成功格式:{"result":0,"errmsg":"OK","ext":"","sid":"8:j8cV6yePO1ZqNVxbyLX20190910","fee":1}
		//失败格式:{"result":1019,"errmsg":"package format error, no such sdkappid","ext":""}
		if(StringUtils.isNull(sSMResult) || sSMResult.result != 0){
			return null;
		}
		//保存session信息
		//request.getSession().setAttribute(UserProperties.getRandomVal, smsVal);
		return smsVal;
	}
	
	/**
	 * 获取指定长度的随机数字组成的验证码
	 * @param length
	 * @return
	 */
	private static String getRandomIntValue(Integer length){
		if(isNull(length)){
			return null;
		}
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < length; i++) {
			Random r = new Random();
			int randomVal = r.nextInt(10);
			sb.append(randomVal);
		}
		return sb.toString();
	}
	
	/**
	 * 判断给定的数据是否为null
	 * @param integer
	 * @return
	 */
	private static boolean isNull(Integer integer){
		return integer == null;
	}
	
}

猜你喜欢

转载自blog.csdn.net/qq_38322527/article/details/102497120