不得不说,官网的文档就是用来装逼的。

接个接口各种问题,强行解释为 签名 及其复杂,用来增加使用第三方的成本

还有调试,在线调试也有问题,有的没的,真的 连必选参数都能弄错

话不多,上代码

<?php/*** Description of Tx_sms* @author lianyu <1411479499@qq.com>* @time 2022-09-03*/
date_default_timezone_set("PRC");class Tx_sms {//put your code here
// 参数private $uid = ''; //在 云API密钥 上申请的标识身份 SecretId 入口https://console.cloud.tencent.com/capiprivate $pwd = ''; //在 云API密钥 上申请的标识身份 SecretKey private $TemplateID = ''; // 模板 ID,必须填写已审核通过的模板 ID  private $SmsSdkAppid = ''; //短信SdkAppid在 [短信控制台](https://console.cloud.tencent.com/smsv2) 添加应用后生成的实际SdkAppid,示例如1400006666。private $post_url = 'https://sms.tencentcloudapi.com/';function __construct($templateid = '', $SmsSdkAppid = '') {$this->TemplateID = $templateid;$this->SmsSdkAppid = $SmsSdkAppid;}/*** 无参数短信发送* 注意点:腾讯短信接口 参数空字符不需要传递* 测试时,尽量有的没得都试一下*/function send_sms2($mobile = '18520745660') {$Timestamp = time();
//        '您好,您在分期乐-京回收的卡券回收订单回收失败,请点击订单查看失败原因!请核对后重新提交!';$Nonce = mt_rand(111111, 999999);$TemplateParamSet = ''; //模板参数, 比如验证码的 数字$Sign = '京回收平台'; //短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名
//        $mobile = '+8618520745660'; //例如:+8610011112222, 其中前面有一个+号 ,86为国家码,$data = array('Action' => 'SendSms','PhoneNumberSet.0' => '+86' . $mobile,'TemplateID' => $this->TemplateID,'Sign' => $Sign,
//    'TemplateParamSet.0' => $TemplateParamSet,'SmsSdkAppid' => $this->SmsSdkAppid,'Nonce' => $Nonce,'Region' => 'ap-guangzhou','SecretId' => $this->uid,'Timestamp' => $Timestamp,
//    'SessionContext'=> '您好,您在分期乐-京回收的卡券回收订单回收失败,请点击订单查看失败原因!请核对后重新提交!','Version' => '2019-07-11',);$qsign = $this->tosign('POST', $data, $this->pwd);$data['Signature'] = $qsign;$result = $this->_sendRequest($this->post_url, $data, 'POST');$result_ary = json_decode($result, true); // json转array$req = $result_ary['Response']['SendStatusSet'][0]['Code'];if ($req == 'Ok') {// 发送成功return true;} else {//记录日志require_once dirname(dirname(__FILE__)) . '/ALLClass.php';$pub = new ALLClass();$pub->data_log($result, __FUNCTION__ . '.log');}return false;}/*** 参数只有一个或者没有短信发送* 注意点:腾讯短信接口 参数空字符不需要传递* 测试时,尽量有的没得都试一下* @param type $mobile              手机号* @param type $TemplateParamSet    模板信息* @return boolean                  成功返回boolean true*/function send_sms($mobile = '18520745660', $TemplateParamSet='') {$Timestamp = time();
//        '您好,您收的卡券回收订单回收失败,请点击订单查看失败原因!请核对后重新提交!';$Nonce = mt_rand(111111, 999999);
//        $TemplateParamSet = ''; //模板参数, 比如验证码的 数字$Sign = '京回收平台'; //短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名
//        $mobile = '+8618520745660'; //例如:+8610011112222, 其中前面有一个+号 ,86为国家码,$data = array('Action' => 'SendSms','PhoneNumberSet.0' => '+86' . $mobile,'TemplateID' => $this->TemplateID,'Sign' => $Sign,'TemplateParamSet.0' => $TemplateParamSet,'SmsSdkAppid' => $this->SmsSdkAppid,'Nonce' => $Nonce,'Region' => 'ap-guangzhou','SecretId' => $this->uid,'Timestamp' => $Timestamp,
//    'SessionContext'=> '您的卡券回收订单回收失败,请点击订单查看失败原因!请核对后重新提交!','Version' => '2019-07-11',);if(empty($TemplateParamSet)){unset($data['TemplateParamSet.0']);}$qsign = $this->tosign('POST', $data, $this->pwd);$data['Signature'] = $qsign;$result = $this->_sendRequest($this->post_url, $data, 'POST');$result_ary = json_decode($result, true); // json转array$req = $result_ary['Response']['SendStatusSet'][0]['Code'];if ($req == 'Ok') {// 发送成功return true;} else {//记录日志require_once dirname(dirname(__FILE__)) . '/ALLClass.php';$pub = new ALLClass();$pub->data_log($result, __FUNCTION__ . '.log');}return false;}function _sendRequest($url, $paramArray, $method = 'POST') {$ch = curl_init();if ($method == 'POST') {$paramArray = is_array($paramArray) ? http_build_query($paramArray, null, '&', PHP_QUERY_RFC3986) : $paramArray;curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $paramArray);} else {$url .= '?' . http_build_query($paramArray, null, '&', PHP_QUERY_RFC3986);}curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_TIMEOUT, 30);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);if (false !== strpos($url, "https")) {// 证书curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);}$resultStr = curl_exec($ch);return $resultStr;}function tosign($pa, $param, $pwd) {ksort($param);$signStr = $pa . "sms.tencentcloudapi.com/?";foreach ($param as $key => $value) {$signStr = $signStr . $key . "=" . $value . "&";}$signStr = substr($signStr, 0, -1);$signature = base64_encode(hash_hmac("sha1", $signStr, $pwd, true));return $signature;}function test() {$mobile=$_REQUEST['mobile'];var_dump($mobile);$this->send_sms($mobile,'test');}}
//$sms=new Tx_sms();
//$sms->test();

调用简单,参数填写正确,直接把最后两行注释干掉,运行文件即可

下面来一首忘记了给诸君的文化瑰宝:

登鹳雀楼

作者:王之涣

白日依山尽,

黄河入海流。

欲穷千里目,

更上一层楼。

转载请注明出处。

PHP腾讯云短信接口相关推荐

  1. 腾讯云短信接口报错1014

    {"result":1014,"errmsg":"\u6A21\u7248\u672A\u5BA1\u6279\u6216\u5185\u5BB9\u ...

  2. 大聪明教你学Java | 调用腾讯云短信接口,实现短信通知

    前言 提到短信接口,相信每一位程序猿都不会陌生,它可以来帮助我们实现短信验证码.短信通知等等功能,刚好最近在帮朋友开发一套会员管理系统,里面也集成了短信功能(短信接口平台选择的是腾讯云平台),借此机会 ...

  3. 腾讯云短信接口实现(亲测可用,不能用来捶我)

    写在最前 本文部分内容思路来源于博客:跳转连接 准备工作 首先要注册腾讯云账号 注册完成之后在云产品搜索密钥,点进去 默认应该是没有密钥的,新建一个新建之后SecretId和SecretKey之后会用 ...

  4. 【SpringBoot深入浅出系列】SpringBoot之调用腾讯云短信接口发送短信

    目录 一.开发前准备 1.创建签名 2.创建正文模板管理 3.创建应用 4.创建secretId和secretKey 二.开发 1.创建 Spring Initializr 项目 tengxunsms ...

  5. 2021最新 Python调用腾讯云短信接口

    端口相关 登录实例前,需要放通什么端口? 您需要对实例绑定安全组开放相应端口,具体操作步骤请参考 典型场景配置. 云服务器常用端口有哪些? 请参考 服务器常用端口. 为何要开启端口?如何开启某个端口? ...

  6. 短信接口在本地调试正常_Pivotal实践:腾讯云短信小应用

    最近登录了一下腾讯云控制台,发现账户下居然每月有100条免费短信可以使用.结合一下最近成都阴晴不定的天气,女友上班老是忘记带伞的现状,于是决定开发一款天气短信提醒小应用,每天早上定时给女友发送天气状况 ...

  7. 使用Python开通腾讯云短信(sms)【亲测有效·超详细】

    使用Python开通腾讯云短信(sms) 1.开通腾讯云短信服务 2.创建应用 3.创建签名 4.Python 操作腾讯云短信接口 模块安装 详细代码[可直接作为接口] 1.开通腾讯云短信服务 腾讯云 ...

  8. Vb.net发送腾讯云短信

    1腾讯云短信接口sdk3.0网址如下: https://cloud.tencent.com/document/sdk/.NET 2安装包 打开vs2017,打开菜单:工具->nuget包管理器- ...

  9. Java调用腾讯云短信API实现发送短信验证码完整。(详细,内附工具类)

    此先声明,本博文并不是为了推销腾讯云短信产品. 只是因为腾讯云短信SDK的使用指南讲的不是很详细,觉得肯定有很多人像我一样被搞的一头雾水.所以专门发一篇关于使用短信接口的博文,为了记录,也为了帮助和我 ...

  10. 国际短信系统平台发送接口说明方法|网页短信平台开发搭建-移讯云短信系统

    国际短信系统平台发送接口说明方法|网页短信平台开发搭建-移讯云短信系统 此接口为发送接口可直接通过pos直接调用 直接发送,源码短信平台搭建平台时 包含此功能,在客户端中可查看API接口文档 接口名称 ...

最新文章

  1. 谢文睿:西瓜书 + 南瓜书 吃瓜系列 9. 集成学习(上)
  2. red hat 6 安装php,Red hat linux服务器简明安装手册(OpenSSL+Mysql+Apache2+PHP)
  3. css3加载ing动画
  4. P1552-[APIO2012]派遣【左偏树】
  5. linux 系统负载高 如何检查
  6. 项目交换成功——PM(李忠)
  7. 29.优化 MySQL Server
  8. 对 String 字符串的理解
  9. IAT 注入ImportInject(dll)
  10. 废粉盒在哪里_复印机提示“废粉盒满”“请及时更换废粉盒”
  11. 2021年高压电工考试APP及高压电工模拟考试题库
  12. 吐槽 intent:#Intent;S.K_1171477665=;end
  13. hive 自定义UDF函数解析HTML
  14. 《了不起的盖茨比》极简版:进化神驱动的二舅和二伯
  15. oracle lms进程 内存,lms进程耗用大量内存
  16. idhttp的socket error # 10054 错误的处理办法
  17. ExifTool常用使用方法
  18. 数字电路与逻辑电路芯片
  19. Spring学习笔记(二)
  20. 贴几张Google Earth的图

热门文章

  1. python电子病历交接班系统_嘉和电子病历系统用户手册
  2. linux软件版本管理命令update-alternatives使用详解
  3. 蓝桥杯嵌入式旧版子驱动问题-keil5下载卡死解决方法
  4. POJO类的提效利器Lombok插件IDEA安装
  5. fullpage实现单页面全屏网站
  6. java rgb8888转rgb565_Swift RGB888转RGB565
  7. 微信小程序实现倒计时
  8. Depends工具(检查exe文件依赖的好朋友)
  9. opensips脚本格式
  10. 就工业企业智慧能源能效管理系统建设问题探讨!