avtocod / b2b-api-php-laravel
Laravel用于与B2B API服务交互的包
v4.4.0
2024-01-25 06:14 UTC
Requires
- php: ^8.1
- avtocod/b2b-api-php: ^4.1
- illuminate/config: ^10.0
- illuminate/container: ^10.0
- illuminate/contracts: ^10.0
- illuminate/events: ^10.0
- illuminate/support: ^10.0
Requires (Dev)
- ext-json: *
- avto-dev/guzzle-url-mock: ^1.5
- laravel/laravel: ^10.0
- mockery/mockery: ^1.6
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
Suggests
- avtocod/specs: Avtocod project public specifications.
README
Laravel应用程序的B2B Api客户端集成
安装
使用以下命令通过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
变更日志
变更日志可以在这里找到。
支持
如果您发现任何包错误,请在此存储库中创建问题。
许可
这是一个开源软件,许可协议为MIT许可证。