smsapi.pl/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);

如何使用请求参数?

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

必需参数

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

如何更改 SMS 编码?
<?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

文档与信息