PHPackages                             15web/loymax-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. 15web/loymax-sdk

ActiveLibrary[API Development](/categories/api)

15web/loymax-sdk
================

PHP SDK for Loymax HTTP API (https://loymax.ru/)

1.2.0(1y ago)171981MITPHPPHP ^8.2CI passing

Since Oct 1Pushed 1y ago4 watchersCompare

[ Source](https://github.com/15web/loymax-php)[ Packagist](https://packagist.org/packages/15web/loymax-sdk)[ Docs](https://github.com/15web/loymax-sdk)[ RSS](/packages/15web-loymax-sdk/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (20)Versions (18)Used By (0)

Loymax PHP SDK
==============

[](#loymax-php-sdk)

[![Build and check code status](https://github.com/15web/loymax-php/actions/workflows/check.yml/badge.svg)](https://github.com/15web/loymax-php/actions)[![Psalm coverage](https://camo.githubusercontent.com/be42fa7f1b4e908ef472871a3e85c0165a62c38cd9687b0f52963897203d77e3/68747470733a2f2f73686570686572642e6465762f6769746875622f31357765622f6c6f796d61782d7068702f636f7665726167652e7376673f)](https://shepherd.dev/github/15web/loymax-php)[![Psalm level](https://camo.githubusercontent.com/285cd1c487c13502fbd165ccf874b5fd744b14548c80b7f6c3fc08dc407343f2/68747470733a2f2f73686570686572642e6465762f6769746875622f31357765622f6c6f796d61782d7068702f6c6576656c2e7376673f)](https://psalm.dev/)

SDK для работы с программой лояльности [Loymax](https://loymax.ru/).

Ускорит внедрение функциональности Loymax в Ваш продукт.

- [Loymax PHP SDK](#loymax-php-sdk)
    - [Установка](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
    - [Использование](#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
        - [Двухфакторная авторизация](#%D0%B4%D0%B2%D1%83%D1%85%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%BD%D0%B0%D1%8F-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F)
        - [Публичное API](#%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D0%BE%D0%B5-api)
        - [Логирование](#%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
        - [Использование своего HTTP-клиента](#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE-http-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0)
    - [Интеграция с фреймворками](#%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%81-%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%D0%B0%D0%BC%D0%B8)
        - [Symfony](#symfony)
        - [Laravel](#laravel)
    - [Дополнительная информация](#%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F)
    - [Разработка](#%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0)
    - [Тестирование кода](#%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%B4%D0%B0)
    - [Поддержка и обратная связь](#%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-%D0%B8-%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F-%D1%81%D0%B2%D1%8F%D0%B7%D1%8C)
    - [Copyright and license](#copyright-and-license)

Установка
---------

[](#установка)

```
composer require 15web/loymax-sdk
```

**Требования**

Минимальная версия PHP 8.2

SDK использует HTTP-клиент в соответствии с [PSR-18](https://www.php-fig.org/psr/psr-18/) и логгер в соответствии с [PSR-3](https://www.php-fig.org/psr/psr-3/).

По умолчанию используется [Guzzle](https://github.com/guzzle/guzzle) в качестве HTTP-клиента

Выбор [HTTP-клиента](https://packagist.org/providers/psr/http-client-implementation)и [логгера](https://packagist.org/providers/psr/log-implementation).

Использование
-------------

[](#использование)

```
use Studio15\Loymax\Loymax;

require __DIR__ . '/vendor/autoload.php';

$loymax = Loymax::create('https://your-project.loymax.tech');

$merchants = $loymax->publicApi()->merchants()->getByIds();
```

### Стандартная аутентификация, требующая введения логина и пароля

[](#стандартная-аутентификация-требующая-введения-логина-и-пароля)

- Документация [https://docs.loymax.net/xwiki/bin/view/Main/Integration/Ways\_to\_use\_API/Authorization\_Service/Token\_authorization](https://docs.loymax.net/xwiki/bin/view/Main/Integration/Ways_to_use_API/Authorization_Service/Token_authorization)
- Схема авторизации в Личном кабинете [https://docs.loymax.net/xwiki/bin/view/Main/Integration/Ways\_to\_use\_API/Authorization\_Service/Token\_authorization/Authorization\_in\_Personal\_Account\_Scheme/](https://docs.loymax.net/xwiki/bin/view/Main/Integration/Ways_to_use_API/Authorization_Service/Token_authorization/Authorization_in_Personal_Account_Scheme/)

При включенной конфигурации `IsPasswordRequired`

```
use Studio15\Loymax\Loymax;

require __DIR__ . '/vendor/autoload.php';

$loymax = Loymax::create('https://your-project.loymax.tech');

$token = $loymax->authApi()->issueAccessToken(
    username: '79990001234', // Логин (e-mail, номер телефона или номер карты)
    password: 'password', // Пароль
    clientIp: '1.2.3.4', // IP адрес пользователя
);
```

- Передавайте реальный IP адрес пользователя в методах аутентификации и регистрации во избежание блокировок по количеству запросов с одного IP адреса

### Двухфакторная аутентификация

[](#двухфакторная-аутентификация)

При включенной конфигурации `TwoFactorAuthenticationEnabled`

```
use Studio15\Loymax\Loymax;

require __DIR__ . '/vendor/autoload.php';

$loymax = Loymax::create('https://your-project.loymax.tech');

$twoFactorToken = $loymax->authApi()->issueAccessToken(
    username: '79990001234', // Логин (e-mail, номер телефона или номер карты)
    clientIp: '1.2.3.4', // IP адрес пользователя
);

$token = $loymax->authApi()->confirmTwoFactorAuthentication(
    twoFactorAuthToken: $twoFactorToken->twoFactorAuthToken,
    code: '123456', // Одноразовый пароль, полученный в SMS
);
```

### Публичное API

[](#публичное-api)

```
use Studio15\Loymax\Loymax;

require __DIR__ . '/vendor/autoload.php';

$loymax = Loymax::create('https://your-project.loymax.tech');

$twoFactorToken = $loymax->authApi()->issueAccessToken(
    username: '79990001234', // телефон
);

$token = $loymax->authApi()->confirmTwoFactorAuthentication(
    twoFactorAuthToken: $twoFactorToken->twoFactorAuthToken,
    code: '123456', // Код, полученный в SMS
);

/**
 * Получение баланса пользователя программы лояльности
 */
$balance = $loymax->publicApi(token: $token->accessToken)->user()->balance();

/**
 * Получение публичной информации о торговых точках
 */
$merchants = $loymax->publicApi()->merchants()->getByIds();
```

### Логирование

[](#логирование)

Все запросы и ответы логируются.

В конструктор требуется передать клиент, который реализует `Psr\Log\LoggerInterface`

Пример использования [Monolog](https://github.com/Seldaek/monolog)

```
composer require monolog/monolog
```

```
use Monolog\Handler\StreamHandler;
use Monolog\Level;
use Monolog\Logger;
use Studio15\Loymax\Loymax;

require __DIR__ . '/vendor/autoload.php';

$baseUri = 'https://your-project.loymax.tech';

$logger = new Logger('name');
$logger->pushHandler(new StreamHandler('log/loymax-info.log', Level::Info));

$loymax = new Loymax(
    baseUri: $baseUri,
    logger: $logger,
);

$merchants = $loymax->publicApi()->merchants()->getByIds();
```

### Использование своего HTTP-клиента

[](#использование-своего-http-клиента)

По умолчанию в SDK используется [Guzzle](https://github.com/guzzle/guzzle) в качестве HTTP-клиента

Пример использования [Symfony HTTP client](https://symfony.com/doc/current/http_client.html)

```
composer require symfony/http-client psr/http-client nyholm/psr7
```

```
use Studio15\Loymax\Loymax;
use Symfony\Component\HttpClient\Psr18Client;

require __DIR__ . '/vendor/autoload.php';

$baseUri = 'https://your-project.loymax.tech';

$httpClient = (new Psr18Client())->withOptions(['base_uri' => $baseUri]);

$loymax = new Loymax(
    httpClient: $httpClient,
);

$merchants = $loymax->publicApi()->merchants()->getByIds();
```

Интеграция с фреймворками
-------------------------

[](#интеграция-с-фреймворками)

### Symfony

[](#symfony)

-

Для использования класса `Loymax` в качестве сервиса требуется добавить в `config/services.yaml`

```
services: # ...
    Studio15\Loymax\Loymax:
        arguments:
            $httpClient: null
            $baseUri: 'https://your-project.loymax.tech'
```

Применение [Symfony HTTP client](https://symfony.com/doc/current/http_client.html#psr-18-and-psr-17) вместо Guzzle

### Laravel

[](#laravel)

-

Добавьте в конфигурацию адрес вашего проекта:

- `config/services.php`

```
