接入腾讯云短信服务(史上最详细+该短信服务如何申请成功+发送短信验证码API讲解+相关错误分析)

2021 / 8 / 17 / 23 : 01 {2021/8/17/23:01} 2021/8/17/23:01


前言

或许有的人会问我为什么不使用阿里云短信服务,那是因为如今的阿里云短信服务对于大部分人来说很难申请成功,它需要备案或者项目已经上线。而腾讯云短信相对来说比较宽松一些,可以利用个人公众号进行申请成功


提示:以下是本篇文章正文内容

一、如何成功申请到腾讯云短信服务

首先开通短信服务,应该会免费赠送100条短信
请添加图片描述

1、签名申请

我 已 经 测 试 申 请 过 一 次 {我已经测试申请过一次}
请添加图片描述
点击创建签名
请添加图片描述

微信公众号平台链接:https://www.baidu.com/link?url=3OqiiGcBpe8Gp5YpnN4wF7CiaFkigOjrPtN3xjuIWLF1EDlRASXa3EDgeaQNn8k6&wd=&eqid=d95710f900018b6500000003611bd16a

请添加图片描述

2、正文模板申请

点击创建正文模板
请添加图片描述
请添加图片描述
等待审核即可



二、发送短信API开发

1、腾讯云在线测试

先进行在线测试,后面再使用代码测试

测试地址https://console.cloud.tencent.com/api/explorer?Product=sms&Version=2021-01-11&Action=SendSms&SignVersion=
请添加图片描述

请添加图片描述

1、SmsSdkAppId:短信 SdkAppId,在 短信控制台 添加应用后生成的实际 SdkAppId
请添加图片描述
2、TemplateId:模板 ID,必须填写已审核通过的模板 ID。模板 ID 可登录 短信控制台 查看,若向境外手机号发送短信,仅支持使用国际/港澳台短信模板。
请添加图片描述
3、SignName:短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,例如:腾讯云,签名信息可登录 短信控制台 查看。 国内短信为必填参数。
请添加图片描述

点击发送请求

请添加图片描述

请添加图片描述
请添加图片描述
成功!

2、使用springboot进行测试

1.文档参考准备工作

可以在云端直接进行生成代码
请添加图片描述
也可以参考API文档

API文档链接地址:https://cloud.tencent.com/document/product/382/43194

请添加图片描述
2.导入依赖

       <dependency>
            <groupId>com.tencentcloudapi</groupId>
            <artifactId>tencentcloud-sdk-java</artifactId>
        </dependency>

请添加图片描述

3. a p p l i c a t i o n . y m l {application.yml} application.yml文件编写
请添加图片描述

4.创建工具类

//实现了InitializingBean接口,当spring进行初始化bean时,会执行afterPropertiesSet方法
@Component
public class MsmConstantUtils implements InitializingBean {
	//我已经再
    @Value("${tencent.msm.id}")
    private String secretID ;

    @Value("${tencent.msm.secret}")
    private String secretKey ;

    @Value("${tencent.msm.endPoint}")
    private String endPoint;

    @Value("${tencent.msm.appId}")
    private String appId;

    @Value("${tencent.msm.signName}")
    private String signName;

    @Value("${tencent.msm.templateId}")
    private String templateId;
    //六个相关的参数
    public static String SECRET_ID;
    public static String SECRET_KEY;
    public static String END_POINT;
    public static String APP_ID;
    public static String SIGN_NAME;
    public static String TEMPLATE_ID;
 
    @Override
    public void afterPropertiesSet() throws Exception {
        SECRET_ID = secretID;
        SECRET_KEY = secretKey;
        END_POINT = endPoint;
        APP_ID = appId;
        SIGN_NAME = signName;
        TEMPLATE_ID = templateId;
    }
}

5.RandomUtil编写

public class RandomUtil {

    private static final Random random = new Random();
//我定义的验证码位数是6位
    private static final DecimalFormat sixdf = new DecimalFormat("000000");

    public static String getSixBitRandom() {
        return sixdf.format(random.nextInt(1000000));
    }
}

6、接口编写

注意我找的这个项目已经集成了Swagger配置,后面我需要进行测试

@RestController
@RequestMapping("/msm")
@CrossOrigin
@Api("发送短信服务")
public class MsmController {

    @Autowired
    private MsmService msmService;

    @ApiOperation("发送短信")
    @GetMapping("/send/{phone}")
    public ResponseEntity send(@PathVariable String phone) {

        boolean send = msmService.send(phone);
        if (send) {
            return ResponseEntity.ok();
        }
        return ResponseEntity.error();
    }
}
import com.tencentcloudapi.common.Credential;
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;
import com.zhang.service.MsmService;
import com.zhang.utils.MsmConstantUtils;
import com.zhang.utils.RandomUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * @author:zsh
 * @date:2021/8/18
 * @email:181@qq.com
 */
@Service
@Slf4j
public class MsmServiceImpl implements MsmService {
    @Override
    public boolean send(String phone) {
        try {
            //这里是实例化一个Credential,也就是认证对象,参数是密钥对;你要使用肯定要进行认证
            Credential credential = new Credential(MsmConstantUtils.SECRET_ID, MsmConstantUtils.SECRET_KEY);

            //HttpProfile这是http的配置文件操作,比如设置请求类型(post,get)或者设置超时时间了、还有指定域名了
            //最简单的就是实例化该对象即可,它的构造方法已经帮我们设置了一些默认的值
            HttpProfile httpProfile = new HttpProfile();
            //这个setEndpoint可以省略的
            httpProfile.setEndpoint(MsmConstantUtils.END_POINT);

            //实例化一个客户端配置对象,这个配置可以进行签名(使用私钥进行加密的过程),对方可以利用公钥进行解密
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);

            //实例化要请求产品(以sms为例)的client对象
            SmsClient smsClient = new SmsClient(credential, "ap-beijing", clientProfile);

            //实例化request封装请求信息
            SendSmsRequest request = new SendSmsRequest();
            String[] phoneNumber = {phone};
            request.setPhoneNumberSet(phoneNumber);     //设置手机号
            request.setSmsSdkAppid(MsmConstantUtils.APP_ID);
            request.setSign(MsmConstantUtils.SIGN_NAME);
            request.setTemplateID(MsmConstantUtils.TEMPLATE_ID);
            //生成随机验证码,我的模板内容的参数只有一个
            String verificationCode = RandomUtil.getSixBitRandom();
            String[] templateParamSet = {verificationCode};
            request.setTemplateParamSet(templateParamSet);

            //发送短信
            SendSmsResponse response = smsClient.SendSms(request);
            log.info(SendSmsResponse.toJsonString(response));
            return true;
        } catch (Exception e) {
            return false;
        }


    }
}

7.测试
请添加图片描述

访问http://localhost:8005/swagger-ui.html

使用swagger进行测试即可
请添加图片描述
请添加图片描述
请添加图片描述
成功!



三、常见的错误分析

使用腾讯云短信服务技术出现FailedOperation.TemplateIncorrectOrUnapprovedhttps://blog.csdn.net/Kevinnsm/article/details/119767325?spm=1001.2014.3001.5501
腾讯云短信出现there are both domestic mobile phone numbers and international mobile phone numbers in the…https://blog.csdn.net/Kevinnsm/article/details/119767611?spm=1001.2014.3001.5501


结束了! ❤️

2021/8/18/0:54

  • 53
    点赞
  • 190
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论
好的,我会尽力回答你的问题。接入腾讯云短信API需要以下几个步骤: 1. 注册腾讯云账号,并开通短信服务。 2. 创建应用,获取 AppID 和 AppKey。 3. 安装腾讯云 SDK。 4. 在 ThinkPHP5 中集成腾讯云 SDK。 5. 编写发送短信的代码。 以下是详细步骤: 1. 注册腾讯云账号,并开通短信服务。 首先,你需要注册一个腾讯云账号,然后在控制台中开通短信服务。在开通短信服务时,你需要填写企业信息并进行实名认证。 2. 创建应用,获取 AppID 和 AppKey。 在腾讯云控制台中创建应用,并获取 AppID 和 AppKey。这些信息将在后面的代码中使用。 3. 安装腾讯云 SDK。 在你的项目中安装腾讯云 SDK。可以通过 Composer 安装,也可以手动下载安装。 4. 在 ThinkPHP5 中集成腾讯云 SDK。 在 ThinkPHP5 中集成腾讯云 SDK,可以在 config.php 配置文件中添加以下配置: ```php // config.php return [ 'qcloud' => [ 'sms' => [ 'app_id' => 'your-app-id', 'app_key' => 'your-app-key', 'template_id' => 'your-template-id', 'sms_sign' => 'your-sms-sign', ], ], ]; ``` 上面的配置中,app_id 和 app_key 是在第二步中获取的,template_id 是短信模板的 ID,sms_sign 是短信签名。 5. 编写发送短信的代码。 在 ThinkPHP5 中发送短信可以通过继承 Qcloud\Sms\SmsSingleSender 类来实现。以下是发送短信的示例代码: ```php use Qcloud\Sms\SmsSingleSender; $appId = config('qcloud.sms.app_id'); $appKey = config('qcloud.sms.app_key'); $templateId = config('qcloud.sms.template_id'); $smsSign = config('qcloud.sms.sms_sign'); $sender = new SmsSingleSender($appId, $appKey); $result = $sender->sendWithParam('86', $mobile, $templateId, $params, $smsSign); if ($result === false) { return '发送短信失败'; } $response = json_decode($result, true); if ($response['result'] !== 0) { return '发送短信失败:' . $response['errmsg']; } return '发送短信成功'; ``` 上面的代码中,$mobile 是接收短信的手机号码,$params 是短信模板中的参数,$result 是发送短信的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thecoastlines

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值