使用腾讯云发送短信API接口实现(完整流程)
步驟
- 一、開(kāi)通騰訊云短信服務(wù)
- 二、申請(qǐng)簽名前的準(zhǔn)備(申請(qǐng)公眾號(hào))
- 三、創(chuàng)建簽名和模板
- 四、騰訊云API實(shí)現(xiàn)發(fā)送短信
- 五、使用springboot進(jìn)行調(diào)用
- 六、可能會(huì)報(bào)的錯(cuò)誤
一、開(kāi)通騰訊云短信服務(wù)
在騰訊云官網(wǎng)找到短信服務(wù),開(kāi)通
二、申請(qǐng)簽名前的準(zhǔn)備(申請(qǐng)公眾號(hào))
略
三、創(chuàng)建簽名和模板
1、創(chuàng)建簽名
2、填寫信息,然后確定,等審核
3、創(chuàng)建模板
4、填寫信息,等待審核
一般來(lái)說(shuō)模板還是比較容易成功的,一般來(lái)說(shuō)是簽名難通過(guò)點(diǎn)。
四、騰訊云API實(shí)現(xiàn)發(fā)送短信
1、騰訊云在線測(cè)試
在線測(cè)試地址:騰訊云api測(cè)試
在 短信控制臺(tái) 添加應(yīng)用后生成的實(shí)際 SdkAppId
填寫測(cè)試api的參數(shù)
點(diǎn)擊右邊在線調(diào)用
發(fā)送請(qǐng)求
成功
獲取秘鑰
官網(wǎng)鏈接:api秘鑰
復(fù)制下來(lái),后面要使用!
五、使用springboot進(jìn)行調(diào)用
我們可以直接在上面測(cè)試那里生成代碼,然后復(fù)制到springboot進(jìn)行使用,也可以參照官方文檔進(jìn)行操作。
API文檔鏈接地址:API文檔
1、導(dǎo)入依賴
注意:不要使用4.0.X版本,不是最新的
2、編寫application.properties配置
3、創(chuàng)建工具類
/*** 實(shí)現(xiàn)了InitializingBean接口,當(dāng)spring進(jìn)行初始化bean時(shí),會(huì)執(zhí)行afterPropertiesSet方法*/ @Component public class ConstantSmsUtils implements InitializingBean {@Value("${tencent.sms.keyId}")private String secretID ;@Value("${tencent.sms.keysecret}")private String secretKey ;@Value("${tencent.sms.smsSdkAppId}")private String smsSdkAppID ;@Value("${tencent.sms.signName}")private String signName ;@Value("${tencent.sms.templateId}")private String templateID ;public static String SECRET_ID;public static String SECRET_KEY;public static String SMSSDKAPP_ID;public static String SIGN_NAME;public static String TEMPLATE_ID;@Overridepublic void afterPropertiesSet() throws Exception {SECRET_ID = secretID;SECRET_KEY = secretKey;SMSSDKAPP_ID = smsSdkAppID;SIGN_NAME = signName;TEMPLATE_ID = templateID;} }生成隨機(jī)數(shù)字的utils
/*** 獲取隨機(jī)數(shù)* * @author qianyi**/ public class RandomUtil {private static final Random random = new Random();private static final DecimalFormat fourdf = new DecimalFormat("0000");private static final DecimalFormat sixdf = new DecimalFormat("000000");//生成4位隨機(jī)數(shù)public static String getFourBitRandom() {return fourdf.format(random.nextInt(10000));}//生成6位隨機(jī)數(shù)public static String getSixBitRandom() {return sixdf.format(random.nextInt(1000000));}}4、編寫發(fā)送短信API
controller
serviceImpl
//發(fā)送短信的方法@Overridepublic boolean send(String phone) {//判斷手機(jī)號(hào)是否為空if (StringUtils.isEmpty(phone)){return false;}try{// 實(shí)例化一個(gè)認(rèn)證對(duì)象,入?yún)⑿枰獋魅腧v訊云賬戶secretId,secretKey,此處還需注意密鑰對(duì)的保密// 密鑰可前往https://console.cloud.tencent.com/cam/capi網(wǎng)站進(jìn)行獲取Credential cred = new Credential(ConstantSmsUtils.SECRET_ID, ConstantSmsUtils.SECRET_KEY);// 實(shí)例化一個(gè)http選項(xiàng),可選的,沒(méi)有特殊需求可以跳過(guò)HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("sms.tencentcloudapi.com");// 實(shí)例化一個(gè)client選項(xiàng),可選的,沒(méi)有特殊需求可以跳過(guò)ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 實(shí)例化要請(qǐng)求產(chǎn)品的client對(duì)象,clientProfile是可選的 第二個(gè)參數(shù)是地域信息SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);// 實(shí)例化一個(gè)請(qǐng)求對(duì)象,每個(gè)接口都會(huì)對(duì)應(yīng)一個(gè)request對(duì)象SendSmsRequest req = new SendSmsRequest();//設(shè)置固定的參數(shù)req.setSmsSdkAppId(ConstantSmsUtils.SMSSDKAPP_ID);// 短信應(yīng)用ID: 短信SdkAppId在 [短信控制臺(tái)] 添加應(yīng)用后生成的實(shí)際SdkAppIdreq.setSignName(ConstantSmsUtils.SIGN_NAME);//短信簽名內(nèi)容: 使用 UTF-8 編碼,必須填寫已審核通過(guò)的簽名req.setTemplateId(ConstantSmsUtils.TEMPLATE_ID);//模板 ID: 必須填寫已審核通過(guò)的模板 ID/* 用戶的 session 內(nèi)容: 可以攜帶用戶側(cè) ID 等上下文信息,server 會(huì)原樣返回 */ // String sessionContext = "xxx"; // req.setSessionContext(sessionContext);//設(shè)置發(fā)送相關(guān)的參數(shù)String[] phoneNumberSet1 = {"+86"+phone};req.setPhoneNumberSet(phoneNumberSet1);//發(fā)送的手機(jī)號(hào)//生成6位數(shù)隨機(jī)驗(yàn)證碼String verificationCode = RandomUtil.getSixBitRandom();String[] templateParamSet1 = {verificationCode, "5"};//模板的參數(shù) 第一個(gè)是驗(yàn)證碼,第二個(gè)是過(guò)期時(shí)間req.setTemplateParamSet(templateParamSet1);//發(fā)送驗(yàn)證碼//發(fā)送短信// 返回的resp是一個(gè)SendSmsResponse的實(shí)例,與請(qǐng)求對(duì)象對(duì)應(yīng)SendSmsResponse resp = client.SendSms(req);System.out.println("resp"+resp);// 輸出json格式的字符串回包System.out.println(SendSmsResponse.toJsonString(resp));return true;} catch (TencentCloudSDKException e) {e.printStackTrace();return false;}} }5、使用swagger測(cè)試接口
六、可能會(huì)報(bào)的錯(cuò)誤
Spring Boot讀取application.properties可能會(huì)中文亂碼
解決方法:idea設(shè)置編碼格式
總結(jié)
以上是生活随笔為你收集整理的使用腾讯云发送短信API接口实现(完整流程)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 我的世界整理快捷键(我的世界整理快捷键是
- 下一篇: ACM训练4