Laravel使用阿里云短信发送验证码

Song103 次浏览0个评论2022年08月23日
使用laravel对接阿里云短信,实现发送验证码或者通知短信。

环境要求

  • 最低要求 PHP 5.6
  • 安装 SDK 核心库 OpenAPI ,如果已在系统上全局安装 Composer,请直接在项目目录中运行以下内容来安装 Alibaba Cloud SDK for PHP 作为依赖项:
composer require alibabacloud/darabonba-openapi
  • ⚠️注意:执行 composer 安装 SDK 的 PHP 版本要小于或等于实际运行时的 PHP 版本。 例如,在 PHP7.2 环境下安装 SDK 后生成 vendor 目录,只能在 PHP7.2 以上版本使用,如果拷贝到 PHP5.6 环境下使用,会出现依赖版本不兼容问题。

安装方式

Packagist


composer require alibabacloud/dysmsapi-20170525 2.0.18

示例背景

  • 以下代码详细介绍了升级版 SDK 的使用步骤,仅作步骤示范。示例展示了如何调用 AddShortUrl API 进行创建短链请求。
  • 说明: 您需要替换示例中的 accessKeyId 和 accessKeySecret 的值。

完整代码示例

以下为本文示例的完整 PHP SDK 代码。

<?php

// This file is auto-generated, don't edit it. Thanks.
namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddShortUrlRequest;

class Sample {

    /**
     * 使用AK&SK初始化账号Client
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @return Dysmsapi Client
     */
    public static function createClient($accessKeyId, $accessKeySecret){
        $config = new Config([
            // 您的 AccessKey ID
            "accessKeyId" => $accessKeyId,
            // 您的 AccessKey Secret
            "accessKeySecret" => $accessKeySecret
        ]);
        // 访问的域名
        $config->endpoint = "dysmsapi.aliyuncs.com";
        return new Dysmsapi($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args){
        $client = self::createClient("accessKeyId", "accessKeySecret");
        $addShortUrlRequest = new AddShortUrlRequest([
            "sourceUrl" => "your_value",
            "shortUrlName" => "your_value"
        ]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $client->addShortUrl($addShortUrlRequest);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 如有需要,请打印 error
            Utils::assertAsString($error->message);
        }
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));

步骤介绍

  1. 初始化配置对象 Darabonba\OpenApi\Models\Config 。 Config 对象存放 accessKeyId、accessKeySecret 、endpoint 等配置,Endpoint 如示例中的 dysmsapi.aliyuncs.com 。
use Darabonba\OpenApi\Models\Config;
$config = new Config([
    // 您的AccessKey ID
    "accessKeyId" => $accessKeyId,
    // 您的AccessKey Secret
    "accessKeySecret" => $accessKeySecret
]);
// 访问的域名
$config->endpoint = "ecs-cn-hangzhou.aliyuncs.com";
  1. 实例化一个客户端,从 AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi 类生成对象 client 。从 Client 类中生成对象 client 。
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;

$client = new Dysmsapi($config);
  1. 初始化 RuntimeOptions ,该步骤可忽略。
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
$runtime                 = new RuntimeOptions();
$runtime->maxIdleConns   = 3;
$runtime->connectTimeout = 10000;
$runtime->readTimeout    = 10000;
  1. 创建对应 API 的 Request 。 类的命名规则为 API 方法名加上 Request 。例如:
$request = new AddShortUrlRequest();
  1. 设置请求类 request 的参数。 通过 request 类的属性设置必要的信息,即 API 中必须要提供的信息。

// 该参数值为假设值,请您根据实际情况进行填写
$request->SourceUrl = "your_value";

// 该参数值为假设值,请您根据实际情况进行填写
$request->ShortUrlName = "your_value";

  1. 通过client对象获得对应 request 响应 response 。

$response = $client->addShortUrl($request, $runtime);
var_dump($response->toMap());
  1. 调用 response->Body 中对应的属性获得返回的参数值。 假设您需要获取 requestId ;
var_dump($response->Body->requestId);
  1. 获取报错信息
catch (TeaUnableRetryError $e) {
    // 获取报错数据
    var_dump($e->getErrorInfo());
    // 获取报错信息
    var_dump($e->getMessage());
    // 获取最后一次报错的 Exception 实例
    var_dump($e->getLastException());
    // 获取最后一次请求的 Request 实例
    var_dump($e->getLastRequest());
}

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文