{"id":17437149,"url":"https://github.com/15web/loymax-php","last_synced_at":"2025-07-02T13:02:07.429Z","repository":{"id":257805799,"uuid":"865800546","full_name":"15web/loymax-php","owner":"15web","description":"SDK на PHP для работы с программой лояльности Loymax","archived":false,"fork":false,"pushed_at":"2025-03-28T11:55:17.000Z","size":290,"stargazers_count":17,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-13T01:49:44.747Z","etag":null,"topics":["loymax","php","sdk"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/15web.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-01T06:45:46.000Z","updated_at":"2025-04-04T10:09:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"d0397af0-7f7d-41a5-83ae-dd17c194ce99","html_url":"https://github.com/15web/loymax-php","commit_stats":null,"previous_names":["15web/loymax-php"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/15web%2Floymax-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/15web%2Floymax-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/15web%2Floymax-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/15web%2Floymax-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/15web","download_url":"https://codeload.github.com/15web/loymax-php/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248654029,"owners_count":21140235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["loymax","php","sdk"],"created_at":"2024-10-17T11:06:06.643Z","updated_at":"2025-04-16T22:25:16.495Z","avatar_url":"https://github.com/15web.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Loymax PHP SDK\n\n[![Build and check code status](https://github.com/15web/loymax-php/actions/workflows/check.yml/badge.svg)](https://github.com/15web/loymax-php/actions)\n[![Psalm coverage](https://shepherd.dev/github/15web/loymax-php/coverage.svg?)](https://shepherd.dev/github/15web/loymax-php)\n[![Psalm level](https://shepherd.dev/github/15web/loymax-php/level.svg?)](https://psalm.dev/)\n\n\nSDK для работы с программой лояльности [Loymax](https://loymax.ru/).\n\nУскорит внедрение функциональности Loymax в Ваш продукт.\n\n\u003c!-- TOC --\u003e\n* [Loymax PHP SDK](#loymax-php-sdk)\n  * [Установка](#установка)\n  * [Использование](#использование)\n    * [Двухфакторная авторизация](#двухфакторная-авторизация)\n    * [Публичное API](#публичное-api)\n    * [Логирование](#логирование)\n    * [Использование своего HTTP-клиента](#использование-своего-http-клиента)\n  * [Интеграция с фреймворками](#интеграция-с-фреймворками)\n    * [Symfony](#symfony)\n    * [Laravel](#laravel)\n  * [Дополнительная информация](#дополнительная-информация)\n  * [Разработка](#разработка)\n  * [Тестирование кода](#тестирование-кода)\n  * [Поддержка и обратная связь](#поддержка-и-обратная-связь)\n  * [Copyright and license](#copyright-and-license)\n\u003c!-- TOC --\u003e\n\n## Установка\n\n```bash\ncomposer require 15web/loymax-sdk\n```\n\n**Требования**\n\nМинимальная версия PHP 8.2\n\nSDK использует HTTP-клиент в соответствии с [PSR-18](https://www.php-fig.org/psr/psr-18/) и логгер в соответствии\nс [PSR-3](https://www.php-fig.org/psr/psr-3/).\n\nПо умолчанию используется [Guzzle](https://github.com/guzzle/guzzle) в качестве HTTP-клиента\n\nВыбор [HTTP-клиента](https://packagist.org/providers/psr/http-client-implementation)\nи [логгера](https://packagist.org/providers/psr/log-implementation).\n\n## Использование\n\n```php\nuse Studio15\\Loymax\\Loymax;\n\nrequire __DIR__ . '/vendor/autoload.php';\n\n$loymax = Loymax::create('https://your-project.loymax.tech');\n\n$merchants = $loymax-\u003epublicApi()-\u003emerchants()-\u003egetByIds();\n```\n\n### Стандартная аутентификация, требующая введения логина и пароля\n\n* Документация https://docs.loymax.net/xwiki/bin/view/Main/Integration/Ways_to_use_API/Authorization_Service/Token_authorization\n* Схема авторизации в Личном кабинете https://docs.loymax.net/xwiki/bin/view/Main/Integration/Ways_to_use_API/Authorization_Service/Token_authorization/Authorization_in_Personal_Account_Scheme/\n\nПри включенной конфигурации `IsPasswordRequired`\n\n```php\nuse Studio15\\Loymax\\Loymax;\n\nrequire __DIR__ . '/vendor/autoload.php';\n\n$loymax = Loymax::create('https://your-project.loymax.tech');\n\n$token = $loymax-\u003eauthApi()-\u003eissueAccessToken(\n    username: '79990001234', // Логин (e-mail, номер телефона или номер карты)\n    password: 'password', // Пароль\n    clientIp: '1.2.3.4', // IP адрес пользователя\n);\n```\n\n* Передавайте реальный IP адрес пользователя в методах аутентификации и регистрации во избежание блокировок по количеству запросов с одного IP адреса\n\n### Двухфакторная аутентификация\n\nПри включенной конфигурации `TwoFactorAuthenticationEnabled`\n\n```php\nuse Studio15\\Loymax\\Loymax;\n\nrequire __DIR__ . '/vendor/autoload.php';\n\n$loymax = Loymax::create('https://your-project.loymax.tech');\n\n$twoFactorToken = $loymax-\u003eauthApi()-\u003eissueAccessToken(\n    username: '79990001234', // Логин (e-mail, номер телефона или номер карты)\n    clientIp: '1.2.3.4', // IP адрес пользователя\n);\n\n$token = $loymax-\u003eauthApi()-\u003econfirmTwoFactorAuthentication(\n    twoFactorAuthToken: $twoFactorToken-\u003etwoFactorAuthToken,\n    code: '123456', // Одноразовый пароль, полученный в SMS\n);\n```\n\n### Публичное API\n\n```php\nuse Studio15\\Loymax\\Loymax;\n\nrequire __DIR__ . '/vendor/autoload.php';\n\n$loymax = Loymax::create('https://your-project.loymax.tech');\n\n$twoFactorToken = $loymax-\u003eauthApi()-\u003eissueAccessToken(\n    username: '79990001234', // телефон\n);\n\n$token = $loymax-\u003eauthApi()-\u003econfirmTwoFactorAuthentication(\n    twoFactorAuthToken: $twoFactorToken-\u003etwoFactorAuthToken,\n    code: '123456', // Код, полученный в SMS\n);\n\n/**\n * Получение баланса пользователя программы лояльности\n */\n$balance = $loymax-\u003epublicApi(token: $token-\u003eaccessToken)-\u003euser()-\u003ebalance();\n\n/** \n * Получение публичной информации о торговых точках\n */\n$merchants = $loymax-\u003epublicApi()-\u003emerchants()-\u003egetByIds();\n```\n\n### Логирование\n\nВсе запросы и ответы логируются.\n\nВ конструктор требуется передать клиент, который реализует `Psr\\Log\\LoggerInterface`\n\nПример использования [Monolog](https://github.com/Seldaek/monolog)\n\n```bash\ncomposer require monolog/monolog\n\n```\n\n```php\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Level;\nuse Monolog\\Logger;\nuse Studio15\\Loymax\\Loymax;\n\nrequire __DIR__ . '/vendor/autoload.php';\n\n$baseUri = 'https://your-project.loymax.tech';\n\n$logger = new Logger('name');\n$logger-\u003epushHandler(new StreamHandler('log/loymax-info.log', Level::Info));\n\n$loymax = new Loymax(\n    baseUri: $baseUri,\n    logger: $logger,\n);\n\n$merchants = $loymax-\u003epublicApi()-\u003emerchants()-\u003egetByIds();\n```\n\n### Использование своего HTTP-клиента\n\nПо умолчанию в SDK используется [Guzzle](https://github.com/guzzle/guzzle) в качестве HTTP-клиента\n\nПример использования [Symfony HTTP client](https://symfony.com/doc/current/http_client.html)\n\n```bash\ncomposer require symfony/http-client psr/http-client nyholm/psr7\n```\n\n```php\nuse Studio15\\Loymax\\Loymax;\nuse Symfony\\Component\\HttpClient\\Psr18Client;\n\nrequire __DIR__ . '/vendor/autoload.php';\n\n$baseUri = 'https://your-project.loymax.tech';\n\n$httpClient = (new Psr18Client())-\u003ewithOptions(['base_uri' =\u003e $baseUri]);\n\n$loymax = new Loymax(\n    httpClient: $httpClient,\n);\n\n$merchants = $loymax-\u003epublicApi()-\u003emerchants()-\u003egetByIds();\n```\n\n## Интеграция с фреймворками\n\n### Symfony\n\n* https://symfony.com/doc/current/index.html\n\nДля использования класса `Loymax` в качестве сервиса требуется добавить в `config/services.yaml`\n\n```yaml\nservices: # ...\n    Studio15\\Loymax\\Loymax:\n        arguments:\n            $httpClient: null\n            $baseUri: 'https://your-project.loymax.tech'\n```\n\nПрименение [Symfony HTTP client](https://symfony.com/doc/current/http_client.html#psr-18-and-psr-17) вместо Guzzle\n\n### Laravel\n\n* https://laravel.com/docs/master\n\nДобавьте в конфигурацию адрес вашего проекта:\n\n* `config/services.php`\n\n```php\n\u003c?php\n\nreturn [\n    //\n    \n    'loymax' =\u003e [\n        'baseurl' =\u003e env('LOYMAX_API_BASEURL', 'https://your-project.loymax.tech'),\n    ],\n];\n```\n\nДля добавления в контейнер зарегистрируйте класс в сервис провайдере:\n\n* `app/Providers/AppServiceProvider.php`\n\n```php\nuse Studio15\\Loymax\\Loymax;\n\npublic function register(): void\n{\n    //\n    \n    $this-\u003eapp-\u003ebind(\n        abstract: Loymax::class,\n        concrete: static fn (): Loymax =\u003e Loymax::create(config('services.loymax.baseurl')),\n    );\n}\n```\n\nТеперь достаточно подключить класс Loymax в любом месте, например в контроллере:\n\n```php\nuse Studio15\\Loymax\\Loymax;\n\nclass MyController extends Controller\n{\n    public function merchants(Loymax $loymax)\n    {\n        $merchants = $loymax-\u003epublicApi()-\u003emerchants()-\u003egetByUids();\n    }\n}\n```\n\n## Дополнительная информация\n\n* [Документация Loymax (Методы публичного API)](https://docs.loymax.net/xwiki/bin/view/Main/Integration/Ways_to_use_API/API_methods/)\n* [Список реализованных методов публичного API](implemented-public-api-methods.md)\n\nПоддерживаемая версия Public API:\n\n* v1.2\n\n## Разработка\n\nLoymax SDK — это Open Source продукт под лицензией MIT.\n\nПомощь проекту:\n\n* Создать issue по вашей проблеме\n* Отправить pull request\n\n## Тестирование кода\n\nЗапуск проверок кода, тестов:\n\n```bash\ngit clone git@github.com:15web/loymax-sdk.git\ncd loymax-sdk\ncomposer update\ncomposer test\n\n```\n\nПроверка покрытия кода тестами:\n\nУстановить https://github.com/krakjoe/pcov/blob/develop/INSTALL.md\n\nЗапуск:\n\n```bash\ncomposer coverage\n\n```\n\n## Поддержка и обратная связь\n\nЕсли вы нашли ошибку, пожалуйста, отправьте вопрос напрямую в\nGithub. [Loymax SDK Issues](https://github.com/15web/loymax-php/issues)\n\nКак всегда, если Вам нужна дополнительная помощь, свяжитесь с нами https://www.15web.ru/contacts\n\n## Copyright and license\n\nCopyright © [Studio 15](http://15web.ru), 2012 - Present.   \nCode released under [the MIT license](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F15web%2Floymax-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F15web%2Floymax-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F15web%2Floymax-php/lists"}