refactor: dto, requests, connector

This commit is contained in:
2026-01-19 10:46:57 +03:00
parent b2786d8606
commit 78e1e82331
32 changed files with 894 additions and 42 deletions

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\Accounts;
use Saloon\Enums\Method;
use Saloon\Http\Request;
class GetAccountStatusRequest extends Request
{
protected Method $method = Method::GET;
public function __construct(
protected string $accountNumber
) {}
public function resolveEndpoint(): string
{
return "/api/gd/v1/accounts/{$this->accountNumber}/status";
}
}

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\B2C;
use Saloon\Enums\Method;
use Saloon\Http\Request;
class GetB2CPackageStatusRequest extends Request
{
protected Method $method = Method::GET;
public function __construct(
protected string $packageId
) {}
public function resolveEndpoint(): string
{
return "/api/b2cpay/jp/v1/payments/packages/{$this->packageId}";
}
}

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\DigitalIdentity;
use Saloon\Enums\Method;
use Saloon\Http\Request;
class GetAccountChannelStatusRequest extends Request
{
protected Method $method = Method::GET;
public function __construct(
protected string $accountNumber
) {}
public function resolveEndpoint(): string
{
return "/api/gd/v1/accounts/{$this->accountNumber}/status";
}
}

View File

@@ -0,0 +1,44 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\Files;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Traits\Body\HasStreamBody;
class UploadFileRequest extends Request implements HasBody
{
use HasStreamBody;
protected Method $method = Method::PUT;
/**
* @param string $url Full pre-signed URL from Alfa Bank
* @param mixed $resource File resource or stream
*/
public function __construct(
protected string $url,
protected $resource
) {}
public function resolveEndpoint(): string
{
return $this->url;
}
protected function defaultHeaders(): array
{
return [
'Accept' => '*/*',
'Content-Type' => 'application/octet-stream',
];
}
protected function defineBody(): mixed
{
return $this->resource;
}
}

View File

@@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\Partner;
use Spatie\LaravelData\Data;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Traits\Body\HasJsonBody;
class CreateIndividualRequest extends Request implements HasBody
{
use HasJsonBody;
protected Method $method = Method::POST;
public function __construct(
protected array $data
) {}
public function resolveEndpoint(): string
{
return '/partner/jp/v1/individuals';
}
protected function defaultBody(): array
{
return $this->data;
}
}

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\Poa;
use Saloon\Enums\Method;
use Saloon\Http\Request;
class DownloadPoaRequest extends Request
{
protected Method $method = Method::GET;
public function __construct(
protected string $requestUuid
) {}
public function resolveEndpoint(): string
{
return "/api/jp/v1/poa/requests/{$this->requestUuid}/download";
}
}

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\Registries;
use Saloon\Enums\Method;
use Saloon\Http\Request;
class GetRegistryPaymentsRequest extends Request
{
protected Method $method = Method::GET;
public function __construct(
protected string $registryId
) {}
public function resolveEndpoint(): string
{
return "/api/jp/v1/registries/{$this->registryId}/payments";
}
}

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\Registries;
use Saloon\Enums\Method;
use Saloon\Http\Request;
class GetRegistryRequest extends Request
{
protected Method $method = Method::GET;
public function __construct(
protected string $registryId
) {}
public function resolveEndpoint(): string
{
return "/api/jp/v1/registries/{$this->registryId}";
}
}

View File

@@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\SelfEmployed;
use Saloon\Enums\Method;
use Saloon\Http\Request;
class GetRegionsRequest extends Request
{
protected Method $method = Method::GET;
public function resolveEndpoint(): string
{
return '/semp/v1/dictionary/regions';
}
}

View File

@@ -0,0 +1,39 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\SelfEmployed;
use Apoloz\AlfaBank\Data\SelfEmployed\CreateIncomeRequestData;
use Apoloz\AlfaBank\Data\SelfEmployed\CreateIncomeResponseData;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
use Saloon\Traits\Body\HasJsonBody;
class RegisterIncomeRequest extends Request implements HasBody
{
use HasJsonBody;
protected Method $method = Method::POST;
public function __construct(
protected CreateIncomeRequestData $data
) {}
public function resolveEndpoint(): string
{
return '/semp/v1/selfemployed/income';
}
protected function defaultBody(): array
{
return $this->data->toArray();
}
public function createDtoFromResponse(Response $response): CreateIncomeResponseData
{
return CreateIncomeResponseData::from($response->json());
}
}

View File

@@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
namespace Apoloz\AlfaBank\Requests\Signature;
use Saloon\Enums\Method;
use Saloon\Http\Request;
class GetDistinguishedNameRequest extends Request
{
protected Method $method = Method::GET;
public function resolveEndpoint(): string
{
return '/jp/v3/signature/dn';
}
}