Laravel6 使用腾讯云短信-基础配置 
                                                    
                        
                    
                    
  
                    
                    Laravel6使用腾讯云短信
安装 tencentcloud-sdk-php
tencentcloud-sdk-php 是腾讯云官方提供的官方组件,利用这个组件,我们可以快速的使用腾讯云的各项服务。
composer require "tencentcloud/tencentcloud-sdk-php"
封装适用于 Laravel 的 ServiceProvider。
首先在 config 目录中增加 tencentcloud.php
touch config/tencentcloud.php
填入如下内容。
/* config/tencentcloud.php */
<?php
return [
    'default' => [
        // 腾讯云账户秘钥
        'secretId' => env('TENCENTCLOUD_SECRET_ID'),
        'secretKey' => env('TENCENTCLOUD_SECRET_KEY'),
        // HTTP 请求的超时时间(秒)
        'timeout' => 60.0,
        // 请求方式(默认为 POST)
        'method' => env('TENCENT_CLOUD_METHOD') ?? 'POST',
        // 指定签名算法(默认为 HmacSHA256)
        'signMethod' => env('TENCENT_CLOUD_SIGN_METHOD') ?? 'TC3-HMAC-SHA256',
        // 代理
        'proxy' => env('TENCENT_CLOUD_PROXY') ?? ''
    ],
    'sms' => [
        // 指定接入地域域名(默认就近接入)
        'endpoint' => env('TENCENT_CLOUD_SMS_ENDPOINT') ?? 'sms.tencentcloudapi.com',
        // 地域参数(默认就近接入)
        'region' => env('TENCENT_CLOUD_SMS_REGION') ?? 'ap-shanghai',
        // 应用ID
        'sdkappid' => env('TENCENT_CLOUD_SMS_SDKAPPID'),
        // 短信签名
        'sign' => env('TENCENT_CLOUD_SMS_SIGN'),
        // 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper](QQ: 3012203387)
        'senderId' => env('TENCENT_CLOUD_SMS_SENDERID') ?? '',
        // 模板ID
        'templateId' => env('TENCENT_CLOUD_SMS_TEMPLATEID')
    ]
];
然后创建一个 ServiceProvider
php artisan make:provider TencentCloudSmsServiceProvider
修改文件
/* app/Providers/TencentCloudSmsServiceProvider.php */
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use TencentCloud\Common\Credential;
// 导入对应产品模块的client
use TencentCloud\Sms\V20190711\SmsClient;
// 导入可选配置类
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
class TencentCloudSmsServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(SmsClient::class, function ($app) {
            $cred = new Credential(config('tencentcloud.default.secretId'), config('tencentcloud.default.secretKey'));
            $httpProfile = new HttpProfile('https://', config('tencentcloud.sms.endpoint'), config('tencentcloud.default.method'), config('tencentcloud.default.timeout'));
            if (config('tencentcloud.default.proxy')) {
                $httpProfile->setProxy(config('tencentcloud.default.proxy'));
            }
            $clientProfile = new ClientProfile(config('tencentcloud.default.signMethod'), $httpProfile);
            return new SmsClient($cred, config('tencentcloud.sms.region'), $clientProfile);
        });
        $this->app->alias(SmsClient::class, 'tencentcloudSms');
    }
    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}
最后,打开  config/app.php 在 providers 中增加  App\Providers\TencentCloudSmsServiceProvider::class 
/* config/app.php /*
·
·
·
'providers' => [
    ·
    ·
    App\Providers\EventServiceProvider::class,
    App\Providers\RouteServiceProvider::class,
    App\Providers\TencentCloudSmsServiceProvider::class,
],
配置
腾讯云账户秘钥对
登录 API秘钥管理 获取秘钥。
子账号秘钥请注意授权!
在 .env 中配置 TENCENTCLOUD_SECRET_ID 和 TENCENTCLOUD_SECRET_KEY , 注意下面需要替换为你自己的 ID 和 KEY:
/* .env */
·
·
·
# 腾讯云
TENCENTCLOUD_SECRET_ID=*******************
TENCENTCLOUD_SECRET_KEY=*******************
在 .env.example 中也加入配置示例,提交到版本库,方便以后部署。
/* .env.example */
# 腾讯云
TENCENTCLOUD_SECRET_ID=
TENCENTCLOUD_SECRET_KEY=
开通腾讯云短信
根据官方指引国内短信快速入门开通短信服务。
开通完成后可见如下页面,点击应用管理-应用列表,获取应用 sdkappid 并配置 .env ,注意下面需要替换为你自己的 SDKAPPID.
/* .env */
# 腾讯云
TENCENTCLOUD_SECRET_ID=*******************
TENCENTCLOUD_SECRET_KEY=*******************
TENCENT_CLOUD_SMS_SDKAPPID=1400******

申请签名
根据官方指引创建签名申请短信签名,个人开发者若有备案网站,可使用ICP备案的 网站名称 或 域名 申请,否则建议申请 微信公众号 进行快速申请测试。
短信签名说明
腾讯云签名审核标准
公众号不建议使用大众化无含义的名称(本人使用公众号测试申请签名被拒无数次):如姓名为张三,可申请公众号张三的公众号,申请签名张三的公众号。
审核通过后可见如下页面,获取 签名内容 配置 .env ,注意下面需要替换为你自己的 SIGN .
/* .env */
# 腾讯云
TENCENTCLOUD_SECRET_ID=*******************
TENCENTCLOUD_SECRET_KEY=*******************
TENCENT_CLOUD_SMS_SDKAPPID=1400******
TENCENT_CLOUD_SMS_SIGN=**

特别注意:TENCENT_CLOUD_SMS_SIGN传参为“签名内容”,非“签名ID”。
申请模板
根据官方指引创建正文模板申请短信模板。
为了快速审核通过,且根据后续实际下发可正常使用,请申请以下模板内容:
{1}为您的登录验证码,请于{2}分钟内填写,如非本人操作,请忽略本短信。
审核通过后可见如下页面,获取 模板ID 配置 .env ,注意下面需要替换为你自己的 TEMPLATEID .
/* .env */
# 腾讯云
TENCENTCLOUD_SECRET_ID=*******************
TENCENTCLOUD_SECRET_KEY=*******************
TENCENT_CLOUD_SMS_SDKAPPID=1400******
TENCENT_CLOUD_SMS_SIGN=**
TENCENT_CLOUD_SMS_TEMPLATEID=******

调试
接着在 tinker 中调试以下短信是否可以正常发送。
php artisan tinker
$sms = app('tencentcloudSms');
try {
    $req = new \TencentCloud\Sms\V20190711\Models\SendSmsRequest();
    $req->SmsSdkAppid = config('tencentcloud.sms.sdkappid');
    $req->Sign = config('tencentcloud.sms.sign');
    $req->PhoneNumberSet = array("+86137********');
    $req->TemplateID = config('tencentcloud.sms.templateId');
    $req->TemplateParamSet = ['123456', '5'];
    $resp = $sms->SendSms($req);
    dd($resp->toJsonString());
}catch(\TencentCloud\Common\Exception\TencentCloudSDKException $e) {
    dd($e);
}

本作品采用《CC 协议》,转载必须注明作者和本文链接
          
                    
                    
          
          
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: