smsapi/php-client

SMSAPI API PHP 客户端

v3.0.11 2024-03-27 09:19 UTC

README

Build Status Packagist - latest version Packagist - downloads Packagist - license

在此处可获取版本 1.8.7

SMSAPI.COM API 文档

SMSAPI.PL API 文档

要求

安装带依赖项的包

执行: composer require smsapi/php-client

如何选择服务

根据您的 SMSAPI 服务账户,您应该选择以下示例中的一种方法调用

PSR-17 和 PSR-18

从版本 3 开始,SMSAPI PHP 客户端支持符合 PSR-17 和 PSR-18 的 HTTP 客户端。这样,这个库就与您选择的客户端无关。您必须提供 HTTP 客户端、请求工厂和流工厂才能使用我们的库。

为了方便起见,我们提供了一个针对 Curl 的适配器。要使用它,您必须启用 PHP curl 扩展并安装一些 HTTP 辅助工具。

composer require guzzlehttp/psr7:^1

以下示例显示了如何使用该适配器(请注意命名空间 Smsapi\Client\Curl

<?php

declare(strict_types=1);

use Smsapi\Client\Curl\SmsapiHttpClient;

require_once 'vendor/autoload.php';

$client = new SmsapiHttpClient();

如果您不打算使用 Curl 作为 HTTP 客户端,则必须提供您自己的 HTTP 客户端、请求工厂和流工厂,如下例所示(请注意命名空间 Smsapi\Client

<?php

declare(strict_types=1);

use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Smsapi\Client\SmsapiHttpClient;

require_once 'vendor/autoload.php';

/**
 * @var ClientInterface $httpClient
 * @var RequestFactoryInterface $requestFactory
 * @var StreamFactoryInterface $streamFactory
 */
require_once 'your-own-psr18-stuff.php';

$client = new SmsapiHttpClient($httpClient, $requestFactory, $streamFactory);

以下所有示例均假设您在 client.php 文件中已正确定义客户端。

如何使用 SMSAPI.COM 服务?

<?php

declare(strict_types=1);

use Smsapi\Client\SmsapiClient;

require_once 'vendor/autoload.php';

/**
 * @var SmsapiClient $client
 */
require_once 'client.php';

$apiToken = '0000000000000000000000000000000000000000';

$service = $client->smsapiComService($apiToken);

如何使用 SMSAPI.PL 服务?

<?php

declare(strict_types=1);

use Smsapi\Client\SmsapiClient;

require_once 'vendor/autoload.php';

/**
 * @var SmsapiClient $client
 */
require_once 'client.php';

$apiToken = '0000000000000000000000000000000000000000';

$service = $client->smsapiPlService($apiToken);

如何使用 SMSAPI.SESMSAPI.BG 服务?

<?php

declare(strict_types=1);

use Smsapi\Client\SmsapiClient;

require_once 'vendor/autoload.php';

/**
 * @var SmsapiClient $client
 */
require_once 'client.php';

$apiToken = '0000000000000000000000000000000000000000';
$uri = 'https://smsapi.io/';

$service = $client->smsapiComServiceWithUri($apiToken, $uri);

如何使用服务业务功能?

以下所有示例均假设您在 SMSAPI.COM 上有账户,并在 service.php 文件中设置了服务。

如何使用 ping 功能?

<?php

declare(strict_types=1);

use Smsapi\Client\Service\SmsapiComService;

/** @var SmsapiComService $service */
require_once 'service.php';

$result = $service->pingFeature()
    ->ping();

if ($result->authorized) {
    echo 'Authorized';
} else {
    echo 'Not authorized';
}

如何发送短信?

<?php

declare(strict_types=1);

use Smsapi\Client\Service\SmsapiComService;
use Smsapi\Client\Feature\Sms\Bag\SendSmsBag;

/** @var SmsapiComService $service */
require_once 'service.php';

$sms = SendSmsBag::withMessage('someone phone number', 'some message');

$service->smsFeature()
    ->sendSms($sms);

如何使用请求参数?

请求参数以数据传输对象(DTO)的形式表示。您可以通过搜索以 'bag' 结尾的类来找到 DTO。每个 bag 可能包含必填和可选参数。

必填参数

必填参数是该类的公共属性,通常可以通过某种形式的设置器或命名构造函数访问。每个参数也可以通过设置 bag 属性直接设置,如下例所示

如何更改短信编码?
<?php

declare(strict_types=1);

use Smsapi\Client\Feature\Sms\Bag\SendSmsBag;

$sms = SendSmsBag::withMessage('someone phone number', 'some message');
$sms->encoding = 'utf-8';

可选参数

一些请求的可选参数已通过 docblock 的 '@property' 注释描述。您可以通过设置动态属性到 'bag' 来添加任何此处未记录的可选参数。

如何发送带有可选 from 字段的短信?
<?php

declare(strict_types=1);

use Smsapi\Client\Service\SmsapiComService;
use Smsapi\Client\Feature\Sms\Bag\SendSmsBag;

/** @var SmsapiComService $service */
require_once 'service.php';

$sms = SendSmsBag::withMessage('someone phone number', 'some message');
$sms->from = 'Test';

$service->smsFeature()
    ->sendSms($sms);

有关更多使用示例,请参阅客户端测试套件。

如何使用其他功能?

如何使用代理服务器?

要使用代理服务器,您必须使用您的 HTTP 客户端定义它。

如何记录请求和响应?

将记录器设置为 SmsapiHttpClient 实例。

<?php

declare(strict_types=1);

use Psr\Log\LoggerInterface;
use Psr\Log\LoggerTrait;
use Smsapi\Client\SmsapiClient;

require_once 'vendor/autoload.php';

/**
 * @var SmsapiClient $client
 */
require_once 'client.php';

$logger = new class() implements LoggerInterface
{
    use LoggerTrait;
    
    public function log($level, $message, array $context = [])
    {
        var_dump($level, $message, $context);
    }
};

$client->setLogger($logger);

如何测试包

phpunit.dist.xml 复制到 phpunit.xml。然后您可以将其调整到您的需求。

tests-resources/config/config.dist.yml 复制到 tests-resources/config/config.yml。填写 SMSAPI 服务连接数据。

如何运行单元测试

单元测试已包含在包构建过程中,并在每次提交时针对其当前版本运行(请参阅测试流程)。您可以使用提供的 Docker 配置轻松本地运行这些测试,只需运行

make test-suite SUITE="unit"

如何运行集成测试

请注意,集成测试在您配置在 tests-resources/config/config.yml 中的帐户内运行。虽然这些测试已被编写为在退出时自动清理,但在失败的情况下,可能仍有垃圾数据残留。请谨慎使用。

make test-suite SUITE="integration"

如何运行功能测试

功能测试组在 phpunit.dist.xml 中定义。要运行测试,请执行

make test-suite SUITE="feature-contacts"

如何针对PHP8运行测试

要针对PHP8运行上述任何测试,请使用带有 php8 后缀的 make 目标。请参阅 Makefile.php8

文档 & 信息