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 @   落日残霞  阅读(327)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示