java 集成 sms 腾讯云短信 实现 redis 短信验证

文档地址:

java 接入sms文档:https://cloud.tencent.com/document/product/382/13613

 

实例代码maven 引入 依赖

<dependency>
  <groupId>com.github.qcloudsms</groupId>
  <artifactId>qcloudsms</artifactId>
  <version>1.0.5</version>
</dependency>

 

java 

package com.supermap.sms.service;

import java.io.IOException;

import org.json.JSONException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import com.supermap.redis.RedisUtil;

/**
 * 腾讯云sms短信服务
 * 
 * @author yushen
 *
 */
@Component
public class SmsServive {

	@Value("${sms.appids}")
	private int appid; // 短信应用SDK AppID

	@Value("${sms.appkey}")
	private String appkey;// 短信应用SDK AppKey

	@Value("${sms.templateId}")
	private int templateId; // 短信模板ID,

	@Value("${sms.smsSign}")
	private String smsSign; // 签名内容`,而不是`签名ID`

	@Autowired
	private RedisUtil redisutil;

	public void SmsServive() {
		
	}
	/**
	 * 短信发送验证码
	 * 
	 * @param phone
	 * @param sign
	 */
	private void sendSms(String phone, String sign) {
		try {
			String[] params = { sign, "5" };// 数组具体的元素个数和模板中变量个数必须一致,例如事例中templateId:5678对应一个变量,参数数组中元素个数也必须是一个
			int appida = Integer.valueOf(appid);
			int templateIda = Integer.valueOf(templateId);
			SmsSingleSender ssender = new SmsSingleSender(appida, appkey);
			SmsSingleSenderResult result = ssender.sendWithParam("86", phone, templateIda, params,
					smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
			System.out.println(result);
		} catch (HTTPException e) {
			// HTTP响应码错误
			e.printStackTrace();
		} catch (JSONException e) {
			// json解析错误
			e.printStackTrace();
		} catch (IOException e) {
			// 网络IO错误
			e.printStackTrace();
		}
	}

	/**
	 * 生成验证码
	 * 
	 * @return
	 */
	private int scsmsSign() {
		return (int) ((Math.random() * 9 + 1) * 1000);
	}

        //控制层调用这个方法实现
	public int getsmsSign(String phone) {
		String sgin = String.valueOf(scsmsSign());
		redisutil.set(phone, sgin, 60000 * 5); //保存到redis中
		sendSms(phone, sgin);//redis 发送
		return 1;
	}

//	public static void main(String[] args) {  //main测试 
//		SmsServive sc = new SmsServive();
//		System.out.println(sc.appid+"--"+sc.appkey);
//		String sgin = String.valueOf(sc.scsmsSign());
//		String phone = "17600963051";
//		sc.sendSms(phone, sgin);
//		System.out.println("短信发送!");
//	}
}

 

总结:

  • 1.查看文档
  • 2.根据文档创建 一些模板等内容
  • 3.引入maven 依赖
  • 4. 调用方法
  • 5.将手机号和生成的验证码传入到redis
  • 6.验证的时候通过验证redis中的内容 确定验证码是否正确

ok

 

 

 

 

 

 

  •  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值