腾讯云短信服务使用文档
大约 3 分钟
腾讯云短信服务使用文档
概述
TencentSMSFacade 是腾讯云短信服务的静态门面类,提供了发送短信验证码的功能。使用静态代理模式调用,简单便捷。
配置参数
基础配置
发送短信时需要传入两个参数数组:
1. $config - 腾讯云基础配置
$config = [
'secretId' => 'your_secret_id', // 腾讯云SecretId
'secretKey' => 'your_secret_key', // 腾讯云SecretKey
'smsApConfig' => 'ap-guangzhou', // 地域配置,如: ap-guangzhou
'smsSdkAppId' => '1400787878', // 短信应用ID
'signName' => '你的签名', // 短信签名
'templateId' => '1882890', // 短信模板ID
'phonePre' => '+86', // 手机号前缀
];2. $smsParam - 短信发送参数
$smsParam = [
'smsContent' => ['1234'], // 短信模板参数数组
'phoneNumber' => ['13800138000'], // 手机号数组,支持多个
// 以下参数可选,如果未提供则使用$config中的值
'smsApConfig' => 'ap-guangzhou', // 可选: 覆盖config中的地域配置
'smsSdkAppId' => '1400787878', // 可选: 覆盖config中的应用ID
'signName' => '你的签名', // 可选: 覆盖config中的签名
'templateId' => '1882890', // 可选: 覆盖config中的模板ID
'phonePre' => '+86', // 可选: 覆盖config中的手机号前缀
'curlMethods' => 'POST', // 可选: HTTP请求方法,默认POST
'signMethods' => 'TC3-HMAC-SHA256', // 可选: 签名算法,默认TC3-HMAC-SHA256
];使用示例
基本用法
use YouHuJun\Tool\App\Facade\V1\SMS\Tencent\TencentSMSFacade;
// 配置腾讯云参数
$config = [
'secretId' => 'YOUR_TENCENT_SECRET_ID', // 替换为你的腾讯云SecretId
'secretKey' => 'YOUR_TENCENT_SECRET_KEY', // 替换为你的腾讯云SecretKey
'smsApConfig' => 'ap-guangzhou',
'smsSdkAppId' => '1400787878',
'signName' => '腾讯云',
'templateId' => '1882890',
'phonePre' => '+86',
];
// 短信发送参数
$smsParam = [
'smsContent' => ['1234'], // 模板中的验证码
'phoneNumber' => ['13800138000'], // 发送的手机号
];
// 发送短信
$result = TencentSMSFacade::sendSms($config, $smsParam);
if ($result === 1) {
echo '短信发送成功';
} else {
echo '短信发送失败';
}发送多个手机号
$smsParam = [
'smsContent' => ['1234'],
'phoneNumber' => [
'13800138000',
'13900139000',
'13700137000'
],
];
$result = TencentSMSFacade::sendSms($config, $smsParam);动态覆盖配置
// 基础配置
$config = [
'secretId' => 'YOUR_TENCENT_SECRET_ID', // 替换为你的腾讯云SecretId
'secretKey' => 'YOUR_TENCENT_SECRET_KEY', // 替换为你的腾讯云SecretKey
'smsApConfig' => 'ap-guangzhou',
'smsSdkAppId' => '1400787878',
'signName' => '腾讯云',
'templateId' => '1882890',
'phonePre' => '+86',
];
// 发送登录验证码,使用默认模板ID
$smsParam1 = [
'smsContent' => ['1234'],
'phoneNumber' => ['13800138000'],
];
// 发送注册验证码,覆盖模板ID
$smsParam2 = [
'smsContent' => ['5678'],
'phoneNumber' => ['13900139000'],
'templateId' => '1882891', // 覆盖默认模板ID
];
$result1 = TencentSMSFacade::sendSms($config, $smsParam1);
$result2 = TencentSMSFacade::sendSms($config, $smsParam2);返回值
1- 短信发送成功0- 短信发送失败
错误处理
服务会抛出 CommonException,包含以下错误码:
| 错误码 | Code | 说明 |
|---|---|---|
| TencentCloudSecretIdError | 70000 | 腾讯云SecretId未设置 |
| TencentCloudSecretKeyError | 70010 | 腾讯云SecretKey未设置 |
| TencentCloudSmsApConfigError | 70020 | 腾讯云短信地域配置未设置 |
| TencentCloudSmsSdkAppIdError | 70030 | 腾讯云短信SdkAppId未设置 |
| TencentCloudSmsSignNameError | 70040 | 腾讯云短信签名未设置 |
| TencentCloudSmsTemplateIdError | 70050 | 腾讯云短信模板ID未设置 |
| TencentCloudSmsPhonePreError | 70060 | 腾讯云短信手机号前缀未设置 |
| TencentCloudSmsContentError | 70070 | 腾讯云短信内容参数错误 |
| TencentCloudSmsPhoneNumberError | 70080 | 腾讯云短信手机号参数错误 |
| TencentCloudSmsSendError | 70090 | 腾讯云短信发送失败 |
| TencentCloudSmsError | 70100 | 腾讯云短信服务异常 |
错误处理示例
use YouHuJun\Tool\App\Exceptions\CommonException;
use YouHuJun\Tool\App\Facade\V1\SMS\Tencent\TencentSMSFacade;
try {
$result = TencentSMSFacade::sendSms($config, $smsParam);
echo '发送结果: ' . ($result === 1 ? '成功' : '失败');
} catch (CommonException $e) {
echo '错误码: ' . $e->getCode() . PHP_EOL;
echo '错误信息: ' . $e->getMessage() . PHP_EOL;
}注意事项
- 配置参数优先级:
$smsParam中的可选参数会覆盖$config中对应的值 - 手机号前缀: 默认使用
+86,发送到国际手机号时需要修改 - 模板参数:
$smsContent数组中的元素个数必须与短信模板中的变量个数一致 - 多手机号发送: 支持一次发送最多200个手机号
- 地域配置: 常见地域有
ap-guangzhou(广州)、ap-beijing(北京)、ap-shanghai(上海) - 静态调用: 使用
TencentSMSFacade::sendSms()静态方法调用,无需实例化
