通化市建设工程招投标网站,成都网络营销搜索推广,成都建设网页公司,wordpress好用的模板下载地址步骤一、开通腾讯云短信服务二、申请签名前的准备#xff08;申请公众号#xff09;三、创建签名和模板四、腾讯云API实现发送短信五、使用springboot进行调用六、可能会报的错误一、开通腾讯云短信服务
在腾讯云官网找到短信服务#xff0c;开通
二、申请签名前的准备申请公众号三、创建签名和模板四、腾讯云API实现发送短信五、使用springboot进行调用六、可能会报的错误一、开通腾讯云短信服务
在腾讯云官网找到短信服务开通
二、申请签名前的准备申请公众号
略
三、创建签名和模板
1、创建签名 2、填写信息然后确定等审核 3、创建模板 4、填写信息等待审核 一般来说模板还是比较容易成功的一般来说是签名难通过点。
四、腾讯云API实现发送短信
1、腾讯云在线测试 在线测试地址腾讯云api测试 在 短信控制台 添加应用后生成的实际 SdkAppId 填写测试api的参数 点击右边在线调用 发送请求 成功 获取秘钥 官网链接api秘钥 复制下来后面要使用
五、使用springboot进行调用
我们可以直接在上面测试那里生成代码然后复制到springboot进行使用也可以参照官方文档进行操作。 API文档链接地址API文档 1、导入依赖
!--腾讯云短信依赖--
!-- https://mvnrepository.com/artifact/com.tencentcloudapi/tencentcloud-sdk-java --
dependencygroupIdcom.tencentcloudapi/groupIdartifactIdtencentcloud-sdk-java/artifactIdversion3.1.423/version
/dependency注意不要使用4.0.X版本不是最新的 2、编写application.properties配置
#腾讯云短信服务参数
#腾讯云账户secretIdsecretKey
tencent.sms.keyId
tencent.sms.keysecret
#短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId
tencent.sms.smsSdkAppId
#短信签名内容: 使用 UTF-8 编码必须填写已审核通过的签名
tencent.sms.signName
#模板 ID: 必须填写已审核通过的模板 ID
tencent.sms.templateId3、创建工具类
/*** 实现了InitializingBean接口当spring进行初始化bean时会执行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;}
}
生成随机数字的utils
/*** 获取随机数* * 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位随机数public static String getFourBitRandom() {return fourdf.format(random.nextInt(10000));}//生成6位随机数public static String getSixBitRandom() {return sixdf.format(random.nextInt(1000000));}}4、编写发送短信API controller
Api(tags {短信发送})
RestController
RequestMapping(/edusms/sms)
CrossOrigin
public class SmsController {Autowiredprivate SmsService smsService;ApiOperation(value 发送短信的方法)GetMapping(send/{phone})public R sendSms(ApiParam(name phone,value 手机号码,required true)PathVariable String phone){//调用service发送短信的方法boolean isSend smsService.send(phone);if (isSend){return R.ok();}else {return R.error().message(短信发送失败);}}
}serviceImpl //发送短信的方法Overridepublic boolean send(String phone) {//判断手机号是否为空if (StringUtils.isEmpty(phone)){return false;}try{// 实例化一个认证对象入参需要传入腾讯云账户secretIdsecretKey,此处还需注意密钥对的保密// 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取Credential cred new Credential(ConstantSmsUtils.SECRET_ID, ConstantSmsUtils.SECRET_KEY);// 实例化一个http选项可选的没有特殊需求可以跳过HttpProfile httpProfile new HttpProfile();httpProfile.setEndpoint(sms.tencentcloudapi.com);// 实例化一个client选项可选的没有特殊需求可以跳过ClientProfile clientProfile new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的 第二个参数是地域信息SmsClient client new SmsClient(cred, ap-guangzhou, clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象SendSmsRequest req new SendSmsRequest();//设置固定的参数req.setSmsSdkAppId(ConstantSmsUtils.SMSSDKAPP_ID);// 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppIdreq.setSignName(ConstantSmsUtils.SIGN_NAME);//短信签名内容: 使用 UTF-8 编码必须填写已审核通过的签名req.setTemplateId(ConstantSmsUtils.TEMPLATE_ID);//模板 ID: 必须填写已审核通过的模板 ID/* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息server 会原样返回 */
// String sessionContext xxx;
// req.setSessionContext(sessionContext);//设置发送相关的参数String[] phoneNumberSet1 {86phone};req.setPhoneNumberSet(phoneNumberSet1);//发送的手机号//生成6位数随机验证码String verificationCode RandomUtil.getSixBitRandom();String[] templateParamSet1 {verificationCode, 5};//模板的参数 第一个是验证码第二个是过期时间req.setTemplateParamSet(templateParamSet1);//发送验证码//发送短信// 返回的resp是一个SendSmsResponse的实例与请求对象对应SendSmsResponse resp client.SendSms(req);System.out.println(respresp);// 输出json格式的字符串回包System.out.println(SendSmsResponse.toJsonString(resp));return true;} catch (TencentCloudSDKException e) {e.printStackTrace();return false;}}
}5、使用swagger测试接口
六、可能会报的错误
Spring Boot读取application.properties可能会中文乱码 解决方法idea设置编码格式