集成腾讯云短信接口

1、引入依赖

    compile('com.tencentcloudapi:tencentcloud-sdk-java:3.1.69')
    compile('commons-beanutils:commons-beanutils:1.7.0')

 

2、编写工具类

import java.util.Arrays;
import java.util.List;
import java.util.Random;

import org.apache.log4j.Logger;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20190711.SmsClient;
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;

/**
 * 腾讯云短信工具类
 * 
 * @className SMSUtils
 * @author yangzhipeng
 * @version V1.0 2020年9月14日 上午9:57:53 TODO(如果是修改版本,描述修改内容)
 */
public class SMSUtils {

    /**
     * LOG输出
     */
    private static final Logger logger = Logger.getLogger(SMSUtils.class);

    public static String getCode() {
        List<String> list = Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
        String code = "";
        for (int x = 0; x < 4; x++) {
            int number = new Random().nextInt(10);
            code += list.get(number);
        }
        return code;
    }

    public static void send(String SMS_SDK_APP_ID, String SECRET_ID, String SECRET_KEY,
        String TEMPLATE_ID, String SIGN, String phone, String text, String minute) {

        logger.debug(phone + ":" + text + "--" + minute);
        // 腾讯云API
        String URL = "sms.tencentcloudapi.com";

        Credential cred = new Credential(SECRET_ID, SECRET_KEY);
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint(URL);

        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);

        SmsClient client = new SmsClient(cred, "", clientProfile);
        String params =
            "{\"PhoneNumberSet\":[\"+86" + phone.replace(" ", "") + "\"]," + "\"TemplateID\":\""
                + TEMPLATE_ID + "\",\"Sign\":\"" + SIGN + "\"," + "\"TemplateParamSet\":[\"" + text
                + "\",\"" + minute + "\"]," + "\"SmsSdkAppid\":\"" + SMS_SDK_APP_ID + "\"}";
        SendSmsRequest req = SendSmsRequest.fromJsonString(params, SendSmsRequest.class);
        try {
            SendSmsResponse resp = client.SendSms(req);
            logger.debug(resp);
        } catch (TencentCloudSDKException e) {
            logger.error(e);
        }

    }
}
 

3、参数说明

    // 腾讯云应用ID SDK_APP_ID
    @Value("${sms.app.id}")
    private String SMS_SDK_APP_ID;
    // 腾讯云API密钥ID
    @Value("${sms.secret.id}")
    private String SECRET_ID;
    // 腾讯云API密钥ID
    @Value("${sms.secret.key}")
    private String SECRET_KEY;
    // 腾讯云短信模板ID
    @Value("${sms.template.id}")
    private String TEMPLATE_ID;

    // 签名内容
    @Value("${sms.sign}")
    private String SIGN;

 

4、调用

String text = SMSUtils.getCode();
SMSUtils.send(SMS_SDK_APP_ID, SECRET_ID, SECRET_KEY, TEMPLATE_ID, SIGN, "入参手机号", text, "5");

5、踩坑

本来想着验证码为数字、字母混合,经过测试正常走完代码不报错,但是收不到短信,腾讯云短信控制台报错发送失败,

验证码只能为纯数字

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值