调用腾讯云短信的代码
前提: 成功安装了腾讯云的php SDK 1. 创建个config文件 留存腾讯云短信相关配置,以及 腾讯应用的ID和秘钥2. 然后 搞一个控制器 我这叫
CommonController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
// 都是腾讯云短信的接口
// require '/path/to/vendor/autoload.php';
// require_once('TCloudAutoLoader.php');
// require '/path/to/vendor/autoload.php';
// 导入 SMS 的 client
use TencentCloud\Sms\V20190711\SmsClient;
// 导入要请求接口对应的 Request 类
use TencentCloud\Sms\V20190711\Models\SendSmsRequest;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Credential;
// 导入可选配置类
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
/**
*写一个通用回调函数
*/
class CommonController extends Controller
{
/**
*腾讯云短信接口
*$phone要发送短信的手机号
*$code 发送过来的验证码
*$smgId对应的短信模板ID
*$qianmingText 签名用到的汉字[必须是经过审核的]
*/
public function getTxSmg($phone,$code,$smgID,$qianmingText)
{
$phone = $phone;
// 模板ID
$smgId = $smgID;
// 签名文字[得是备案过的]
$qianmingText = $qianmingText;
$config = array();
// 短信应用ID 注意 是应用的
$config['SDKAppID'] = config('tengxunsmg.smg.SDKAppID');
// 短信应用ID 注意 是应用的
// App Key是用来校验短信发送合法性的密码
$config['AppKey'] = config('tengxunsmg.smg.AppKey');
// 这是一对调用腾讯云应用的秘钥 在个人api 秘钥管理中
$config['SecretId'] = config('tengxunsmg.smg.SecretId');
$config['SecretKey'] = config('tengxunsmg.smg.SecretKey');
try {
/* 必要步骤:
* 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
* 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值
* 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人
* CAM 密钥查询:https://console.cloud.tencent.com/cam/capi */
$cred = new Credential($config['SecretId'], $config['SecretKey']);
//这好像是密钥 不是skdappid
//$cred = new Credential(getenv("TENCENTCLOUD_SECRET_ID"), getenv("TENCENTCLOUD_SECRET_KEY"));
// 实例化一个 http 选项,可选,无特殊需求时可以跳过
$httpProfile = new HttpProfile();
$httpProfile->setReqMethod("POST");// POST 请求(默认为 POST 请求)
$httpProfile->setReqTimeout(30); // 请求超时时间,单位为秒(默认60秒)
$httpProfile->setEndpoint("sms.tencentcloudapi.com");// 指定接入地域域名(默认就近接入)
// 实例化一个 client 选项,可选,无特殊需求时可以跳过
$clientProfile = new ClientProfile();
$clientProfile->setSignMethod("HmacSHA256");// 指定签名算法(默认为 HmacSHA256)
$clientProfile->setHttpProfile($httpProfile);
// 实例化 SMS 的 client 对象,clientProfile 是可选的
$client = new SmsClient($cred, "ap-shanghai", $clientProfile);
// 实例化一个 sms 发送短信请求对象,每个接口都会对应一个 request 对象。
$req = new SendSmsRequest();
/* 填充请求参数,这里 request 对象的成员变量即对应接口的入参
* 您可以通过官网接口文档或跳转到 request 对象的定义处查看请求参数的定义
* 基本类型的设置:
* 帮助链接:
* 短信控制台:https://console.cloud.tencent.com/smsv2
* sms helper:https://cloud.tencent.com/document/product/382/3773 */
/* 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666 */
$req->SmsSdkAppid =$config['SDKAppID'];
/* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息 */
$req->Sign = $qianmingText;
/* 短信码号扩展号: 默认未开通,如需开通请联系 */
$req->ExtendCode = "0";// 用不上
/* 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
* 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号*/
// $req->PhoneNumberSet = array("+8613711112222", "+8613711333222", "+8613711144422");
$req->PhoneNumberSet = array('+86'.$phone);
/* 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 */
$req->SenderId = "xxx";// 用不上
/* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回 */
$req->SessionContext = "xxx";// 用不上
/* 模板 ID: 必须填写已审核通过的模板 ID。可登录 [短信控制台] 查看模板 ID */
$req->TemplateID = $smgId;
/* 模板参数: 若无模板参数,则设置为空*/
$req->TemplateParamSet = array(
$code
);
// 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
$resp = $client->SendSms($req);
// 输出 JSON 格式的字符串回包
// print_r($resp->toJsonString());
$m = $resp;
// 判断是否成功 Fee 数量 为发送成功数量
if($m){
return $m->SendStatusSet->Fee;
}
// 可以取出单个值,您可以通过官网接口文档或跳转到 response 对象的定义处查看返回字段的定义
// print_r($resp->TotalCount);
}
catch(TencentCloudSDKException $e) {
// echo $e;
}
}
}
3. 第三步就是调用啦注意传进去的参数基本都是字符串
/**
* 测试腾讯云短信接口的使用
*/
public function t()
{
$common = new Common();
// $common->sendsmg($phone,'101312','#code#='.$code);
// dd($common->getTxSmg());
// dd(config('tengxunsmg.smg.SecretId'));
// $common->getTxSmg('15351888596', '456789' ,"653935" ,"权客信息科技" );
dd($common->getTxSmg('17851252090', '888888' ,"653935" ,"权客信息科技" ));
}
页:
[1]