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

版权声明:本文为博主原创文章,转载注明出处,欢迎多多交流,乐在沟通,有需要请联系邮箱:[email protected] https://blog.csdn.net/weixin_42749765/article/details/88080058

文档地址:

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

  •  

猜你喜欢

转载自blog.csdn.net/weixin_42749765/article/details/88080058