最近需要在一个tp5.1项目中使用腾讯云SDK,研究了好久,终于搞定,记录一下
首先打开应用根目录,使用composer安装腾讯云的短信SDK:
composer require qcloudsms/qcloudsms_php
安装完成后,会有 “ 应用根目录/vendor/qcloudsms/qcloudsms_php/src ”这样的目录结构,那么依照官方文档,在需要使用的控制器下写入如下代码即可运行(以单发短信为例):
<?php use Qcloud\Sms\SmsSingleSender; class Sms extends Controller { public function sms() { // 短信应用 SDK AppID $appid = 1400009099; // SDK AppID 以1400开头 // 短信应用 SDK AppKey $appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad"; // 需要发送短信的手机号码 $phoneNumbers = ["21212313123", "12345678902", "12345678903"]; // 短信模板 ID,需要在短信控制台中申请 $templateId = 7839; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请 $smsSign = "腾讯云"; // NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请 try { $ssender = new SmsSingleSender($appid, $appkey); $result = $ssender->send(0, "86", $phoneNumbers[0], "【腾讯云】您的验证码是: 5678", "", ""); $rsp = json_decode($result); echo $result; } catch (\Exception $e) { echo var_dump($e); } } }
但是这么运行会出错,tp框架提示无法找到对应的Qcloud\Sms\SmsSingleSender类,原因是我们没有引入相应的文件,因此需要在use之前引入文档中所述的index.php文件:
require __DIR__."/../../../vendor/qcloudsms/qcloudsms_php/src/index.php";
这是在tp5.1框架下控制器中引用腾讯云短信SDK的语句,当SDK文件目录不同时,要相应的调整require的文件目录,当上面这句代码被放入use语句之前后,程序即正常运行。