cloudloyalty / smsaero-client
Client library for smsaero.ru API
v1.6
2023-12-18 13:26 UTC
Requires
- php: >=7.2
- guzzlehttp/guzzle: ^6.0 || ^7.0
- jms/serializer: ^1.4 || ^2.0 || ^3.0
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^8.5.23 || ^9.0
This package is auto-updated.
Last update: 2024-12-21 22:38:33 UTC
README
Библиотека для подключения к API сервиса SMS Aero.
Зависимости
- PHP 7.2 и выше
- guzzlehttp
Можно использовать свою реализацию клиента без использования пакета Guzzle
Установка
$ php composer.phar require cloudloyalty/smsaero-client
Пример работы
<?php use Feech\SmsAero\Auth\Auth; use Feech\SmsAero\Client\ClientGuzzle; use Feech\SmsAero\Exception\BaseSmsAeroException; use Feech\SmsAero\SmsAero; use Feech\SmsAero\Sms\Sms; $auth = new Auth('email', 'pass'); $client = new ClientGuzzle($auth); $smsAero = new SmsAero($client); $sms1 = new Sms('79591234567', 'Тестовое сообщение', Sms::CHANNEL_TYPE_INTERNATIONAL); $sms2 = new Sms(['79591234567', '79599876543'], 'Тестовое сообщение', Sms::CHANNEL_TYPE_DIGITAL); try { $smsAero->testSend($sms1); // тестовое сообщение $smsAero->send($sms1); // отправка сообщения $response = $smsAero->bulkSend($sms1); // массовая отправка сообщений $responseArray = json_decode($response, true); // ответ в виде ассоциативного массива } catch (BaseSmsAeroException $e) { $e->getMessage(); }
Настройка guzzle адаптера
use Feech\SmsAero\Auth\Auth; use Feech\SmsAero\Client\ClientGuzzle; use GuzzleHttp\Client; use GuzzleHttp\HandlerStack; // configure required handler, middleware: $handlerStack = HandlerStack::create(); $guzzleClient = new Client([ 'connect_timeout' => 5, 'timeout' => 5, 'handler' => $handlerStack, ]); $auth = new Auth('email', 'pass'); $client = new ClientGuzzle($auth, $guzzleClient);
Десериализация ответов в DTO
Для работы с ответами сервиса через DTO используется jms/serializer и отдельный класс клиента SmsAeroClient.
use Feech\SmsAero\Auth\Auth; use Feech\SmsAero\Client\ClientGuzzle; use Feech\SmsAero\Sms\Sms; use Feech\SmsAero\SmsAeroClient; use JMS\Serializer\SerializerBuilder; $auth = new Auth('email', 'pass'); $client = new ClientGuzzle($auth); $serializer = SerializerBuilder::create()->build(); $smsAero = new SmsAeroClient($client, $serializer); $sms = Sms::toSingleNumber('79591234567', 'Тестовое сообщение', Sms::CHANNEL_TYPE_INTERNATIONAL); $result = $smsAero->send($sms); var_dump($result->data->status); var_dump($result->data->cost);