tp5.1中使用阿里大于短信

阿里云PHP SDK地址

https://help.aliyun.com/document_detail/112186.html?spm=a2c4g.11174283.6.635.37eb2c42jFVxfS

项目根目录先安装 sdk

命令:composer require alibabacloud/client

安装完成后vendor目录下即会有 alibabacloud文件目录

 

 

 使用OpenAPI Explorer来生成相关API的Demo

OpenAPI Explorer地址:

https://api.aliyun.com/?spm=a2c4g.11186623.2.13.6a294e6afatgeU#/?product=Dysmsapi&lang=PHP

 

 

 

一、config目录下建立api.php文件

返回一个数组如下:

return [
    // token失效时间,0代表永不失效
    'token_expire'=>0,
    // 阿里大于
    'aliSMS'=>[
        'isopen'=> false,//开启阿里大于
        'accessKeyId'=>'<accessKeyId>',
        'accessSecret'=>'<accessSecret>',
        'regionId'=>'cn-hangzhou',
        'product'=>'Dysmsapi',
        'version'=>'2017-05-25',
        'SignName'=>'<YourSignName>',
        'TemplateCode'=>'<YourTemplateCode>',
        // 验证码发送时间间隔(60秒)
        'expire'=>60
    ]
];
二、新建一个类
<?php
namespace '';//命名空间
// 引入阿里sdk
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
// 引入异常类
use app\lib\exception\BaseException;

class AlismsController
{
    static public function SendSMS($phone,$code){
        AlibabaCloud::accessKeyClient(config('api.aliSMS.accessKeyId'),config('api.aliSMS.accessSecret'))->regionId(config('api.aliSMS.regionId'))->asGlobalClient();
        try {
            $option=[
                'query' => [
                    'RegionId' => config('api.aliSMS.regionId'),
                    'PhoneNumbers' => $phone,
                    'SignName' =>config('api.aliSMS.SignName'),
                    'TemplateCode' =>config('api.aliSMS.TemplateCode'),
                    'TemplateParam' =>'{"code":"'.$code.'"}',
                ],
            ];
            $result = AlibabaCloud::rpcRequest()
                    ->product(config('api.aliSMS.product'))
                    // ->scheme('https') // https | http
                    ->version(config('api.aliSMS.version'))
                    ->action('SendSms')
                    ->method('GET')
                    ->options($option)->request();
            return $result->toArray();
        } catch (ClientException $e) {
            // 逻辑处理
        } catch (ServerException $e) {
           // 逻辑处理
        }
    }
}
三、使用该方法
use app\common\controller\AliSMSController;
...
 // 获取用户提交手机号码
// 生成验证码
$code = random_int(1000,9999);
// 发送短信
AliSMSController::SendSMS($phone,$code);
 
posted @ 2020-09-15 10:00  落日残霞  阅读(319)  评论(0编辑  收藏  举报