avtocod/b2b-api-php-laravel

Laravel用于与B2B API服务交互的包

v4.4.0 2024-01-25 06:14 UTC

This package is auto-updated.

Last update: 2024-08-25 07:37:43 UTC


README

Laravel

Laravel应用程序的B2B Api客户端集成

Version Version Build Status Coverage Downloads count License

安装

使用以下命令通过composer安装此包

$ composer require avtocod/b2b-api-php-laravel "^4.0"

需要安装composer如何安装composer)。

您需要修复包的主要版本。

之后,您应使用以下命令“发布”包配置文件

$ php ./artisan vendor:publish --provider='Avtocod\B2BApi\Laravel\ServiceProvider'

并修改./config/b2b-api-client.php

用法

此包提供以下内容

  • 连接工厂ConnectionsFactoryInterface - B2B API客户端工厂(配置从发布的配置文件中加载)
  • 报告类型存储库RepositoryInterface - 获取报告类型信息的单一入口点;

您可以在应用程序的任何部分解决它们的实现。例如,在artisan命令中

<?php

declare(strict_types = 1);

namespace App\Console\Commands;

use Avtocod\B2BApi\Params\UserReportMakeParams;
use Avtocod\B2BApi\Laravel\ReportTypes\RepositoryInterface;
use Avtocod\B2BApi\Laravel\Connections\ConnectionsFactoryInterface;

class SomeCommand extends \Illuminate\Console\Command
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'some:command';

    /**
     * Execute the console command.
     *
     * @param RepositoryInterface         $report_types
     * @param ConnectionsFactoryInterface $connections
     *
     * @return void
     */
    public function handle(RepositoryInterface $report_types, ConnectionsFactoryInterface $connections): void
    {
        $uid = $report_types->default()->getUid(); // Get default report type UID

        // Create a parameter object for a request to make a report
        $report_make_params = UserReportMakeParams($uid, 'VIN', 'Z94CB41AAGR323020')

        $report_uid = $connections->default()
            ->userReportMake($report_make_params)
            ->first()
            ->getReportUid();

        $this->comment("Report UID: {$report_uid}");
    }
}

事件

此外,此包还将B2B Api客户端事件代理到Laravel事件调度器。因此,请随意编写自己的监听器

<?php

declare(strict_types = 1);

namespace App\Listeners;

use Psr\Log\LoggerInterface;
use Psr\Http\Message\ResponseInterface;
use Avtocod\B2BApi\Events\RequestFailedEvent;

class LogFailedB2bApiRequestListener
{
    /**
     * @var LoggerInterface
     */
    protected $logger;

    /**
     * Create a new listener instance.
     *
     * @param LoggerInterface $logger
     */
    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    /**
     * @param RequestFailedEvent $event
     *
     * @return void
     */
    public function handle(RequestFailedEvent $event): void
    {
        $this->logger->warning('Request to the Avtocod B2B API Failed', [
            'request_uri'   => $event->getRequest()->getUri(),
            'response_code' => $event->getResponse() instanceof ResponseInterface
                ? $event->getResponse()->getStatusCode()
                : null
        ]);
    }
}

有关事件监听器的更多信息可以在这里找到

测试

我们使用phpunit框架和docker-ce + docker-compose作为开发环境来测试包。因此,在克隆存储库后,只需在终端中写入

$ make build
$ make latest # or 'make lowest'
$ make test

变更日志

Release date Commits since latest release

变更日志可以在这里找到

支持

Issues Issues

如果您发现任何包错误,请在此存储库中创建问题

许可

这是一个开源软件,许可协议为MIT许可证