15web/loymax-sdk

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

1.0 2024-10-01 07:32 UTC

README

Build and check code status Psalm coverage Psalm level

用于与忠诚度软件 Loymax 交互的 SDK。

将加快 Loymax 功能在您的产品中的实施。

安装

composer require 15web/loymax-sdk

要求

PHP 8.2 及以上版本

SDK 使用符合 PSR-18 的 HTTP 客户端,并使用符合 PSR-3 的日志记录器。

默认使用 Guzzle 作为 HTTP 客户端

可以选择 HTTP 客户端日志记录器

使用

use Studio15\Loymax\Loymax;

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

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

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

双因素认证

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
);

公共 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 的使用示例

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 客户端

默认情况下,SDK 使用 Guzzle 作为 HTTP 客户端

Symfony HTTP 客户端 的使用示例

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

要将 Loymax 类用作服务,请将以下内容添加到 config/services.yaml

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

使用 Symfony HTTP 客户端 替代 Guzzle

Laravel

将您的项目地址添加到配置中

  • config/services.php
<?php

return [
    //
    
    'loymax' => [
        'baseurl' => env('LOYMAX_API_BASEURL', 'https://your-project.loymax.tech'),
    ],
];

在服务提供者中注册类以将其添加到容器中

  • app/Providers/AppServiceProvider.php
use Studio15\Loymax\Loymax;

public function register(): void
{
    //
    
    $this->app->bind(
        abstract: Loymax::class,
        concrete: static fn (): Loymax => Loymax::create(config('services.loymax.baseurl')),
    );
}

现在只需在任何地方连接 Loymax 类,例如在控制器中

use Studio15\Loymax\Loymax;

class MyController extends Controller
{
    public function merchants(Loymax $loymax)
    {
        $merchants = $loymax->publicApi()->merchants()->getByUids();
    }
}

更多信息

开发

Loymax SDK 是一个 MIT 许可的 Open Source 产品。

帮助项目

  • 为您的 问题 创建 issue
  • 发送 pull request

代码测试

运行代码检查和测试

git clone git@github.com:15web/loymax-sdk.git
cd loymax-sdk
composer update
composer test

测试代码覆盖率

安装 https://github.com/krakjoe/pcov/blob/develop/INSTALL.md

运行

composer coverage

支持和反馈

如果您发现错误,请直接在 Github 上提问。 Loymax SDK 问题

如果您需要额外帮助,请通过 https://www.15web.ru/contacts 联系我们

版权和许可

版权 © Studio 15,2012 - 现在。
代码在 MIT 许可下发布