forked from apoloz/alfa-bank-sdk
first commit
This commit is contained in:
46
src/Requests/Auth/GetTokenRequest.php
Normal file
46
src/Requests/Auth/GetTokenRequest.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Auth;
|
||||
|
||||
use Gemini\AlfaBank\Data\Auth\TokenData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasFormBody;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
|
||||
class GetTokenRequest extends Request implements HasBody
|
||||
{
|
||||
use HasFormBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $clientId,
|
||||
protected string $clientSecret,
|
||||
protected string $code,
|
||||
protected string $redirectUri,
|
||||
protected string $grantType = 'authorization_code'
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/oidc/token';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return [
|
||||
'grant_type' => $this->grantType,
|
||||
'client_id' => $this->clientId,
|
||||
'client_secret' => $this->clientSecret,
|
||||
'code' => $this->code,
|
||||
'redirect_uri' => $this->redirectUri,
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): TokenData
|
||||
{
|
||||
return TokenData::from($response->json());
|
||||
}
|
||||
}
|
||||
26
src/Requests/Auth/RefreshClientSecretRequest.php
Normal file
26
src/Requests/Auth/RefreshClientSecretRequest.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Auth;
|
||||
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class RefreshClientSecretRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $clientId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/oidc/clients/{$this->clientId}/client-secret";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): array
|
||||
{
|
||||
return $response->json();
|
||||
}
|
||||
}
|
||||
37
src/Requests/Auth/RevokeTokenRequest.php
Normal file
37
src/Requests/Auth/RevokeTokenRequest.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Auth;
|
||||
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Traits\Body\HasFormBody;
|
||||
|
||||
class RevokeTokenRequest extends Request implements HasBody
|
||||
{
|
||||
use HasFormBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $clientId,
|
||||
protected string $clientSecret,
|
||||
protected string $token,
|
||||
protected ?string $tokenTypeHint = null
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/oidc/revoke';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return array_filter([
|
||||
'client_id' => $this->clientId,
|
||||
'client_secret' => $this->clientSecret,
|
||||
'token' => $this->token,
|
||||
'token_type_hint' => $this->tokenTypeHint,
|
||||
]);
|
||||
}
|
||||
}
|
||||
44
src/Requests/Auth/UserInfo/GetClientConsentsRequest.php
Normal file
44
src/Requests/Auth/UserInfo/GetClientConsentsRequest.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Auth\UserInfo;
|
||||
|
||||
use Gemini\AlfaBank\Data\Auth\UserInfo\ClientConsentCollectionData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetClientConsentsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected ?string $clientId = null,
|
||||
protected ?string $sub = null,
|
||||
protected ?string $organizationIdHash = null,
|
||||
protected ?bool $isActive = null,
|
||||
protected ?int $limit = 1000,
|
||||
protected ?int $offset = 0,
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/oidc/client-consents';
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return array_filter([
|
||||
'clientId' => $this->clientId,
|
||||
'sub' => $this->sub,
|
||||
'organizationIdHash' => $this->organizationIdHash,
|
||||
'isActive' => $this->isActive,
|
||||
'limit' => $this->limit,
|
||||
'offset' => $this->offset,
|
||||
], fn($value) => $value !== null);
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): ClientConsentCollectionData
|
||||
{
|
||||
return ClientConsentCollectionData::from($response->json());
|
||||
}
|
||||
}
|
||||
49
src/Requests/Auth/UserInfo/GetUserInfoRequest.php
Normal file
49
src/Requests/Auth/UserInfo/GetUserInfoRequest.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Auth\UserInfo;
|
||||
|
||||
use Gemini\AlfaBank\Data\Auth\UserInfo\UserInfoData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetUserInfoRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/oidc/userinfo';
|
||||
}
|
||||
|
||||
protected function defaultHeaders(): array
|
||||
{
|
||||
return [
|
||||
'Accept' => 'application/jwt', // As per doc
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* The response is a JWT. We need to decode it to get the claims.
|
||||
* Note: This implementation assumes the user will handle JWT verification/decoding
|
||||
* or we can do a simple base64 decode of the payload if trust is established via mTLS/OIDC.
|
||||
*
|
||||
* For now, we will return the raw JWT string in a specific DTO or try to parse it if simple.
|
||||
*/
|
||||
public function createDtoFromResponse(Response $response): UserInfoData
|
||||
{
|
||||
$jwt = $response->body();
|
||||
$parts = explode('.', $jwt);
|
||||
|
||||
if (count($parts) === 3) {
|
||||
$payload = json_decode(base64_decode($parts[1]), true);
|
||||
return UserInfoData::from($payload);
|
||||
}
|
||||
|
||||
// Fallback or throw error?
|
||||
// If the response is not a valid JWT (e.g. error json), Saloon might have handled it if we throw on error status.
|
||||
// But if it's 200 OK and not a JWT, it's unexpected.
|
||||
|
||||
throw new \Exception("Invalid UserInfo response format. Expected JWT.");
|
||||
}
|
||||
}
|
||||
24
src/Requests/Crypto/GetCertificatesRequest.php
Normal file
24
src/Requests/Crypto/GetCertificatesRequest.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Crypto;
|
||||
|
||||
use Gemini\AlfaBank\Data\Crypto\CertificateData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class GetCertificatesRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/gd/v1/crypto-service/certificates';
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DataCollection
|
||||
{
|
||||
return CertificateData::collect($response->json(), DataCollection::class);
|
||||
}
|
||||
}
|
||||
43
src/Requests/Crypto/UpdateCertificateRequest.php
Normal file
43
src/Requests/Crypto/UpdateCertificateRequest.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Crypto;
|
||||
|
||||
use Gemini\AlfaBank\Data\Crypto\CertificateData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class UpdateCertificateRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PATCH;
|
||||
|
||||
public function __construct(
|
||||
protected string $id,
|
||||
protected string $status, // ACTIVE or REVOKED
|
||||
protected string $op = 'replace',
|
||||
protected string $path = '/status'
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/gd/v1/crypto-service/certificates/{$this->id}";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return [
|
||||
'op' => $this->op,
|
||||
'path' => $this->path,
|
||||
'value' => $this->status,
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): CertificateData
|
||||
{
|
||||
return CertificateData::from($response->json());
|
||||
}
|
||||
}
|
||||
40
src/Requests/Crypto/UploadCertificateRequest.php
Normal file
40
src/Requests/Crypto/UploadCertificateRequest.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Crypto;
|
||||
|
||||
use Gemini\AlfaBank\Data\Crypto\CertificateData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class UploadCertificateRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $type,
|
||||
protected string $certificateBody,
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/gd/v1/crypto-service/certificates';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return [
|
||||
'type' => $this->type,
|
||||
'certificateBody' => $this->certificateBody,
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): CertificateData
|
||||
{
|
||||
return CertificateData::from($response->json());
|
||||
}
|
||||
}
|
||||
27
src/Requests/FileExchange/DownloadFileRequest.php
Normal file
27
src/Requests/FileExchange/DownloadFileRequest.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\FileExchange;
|
||||
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
|
||||
class DownloadFileRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $downloadUrl
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return $this->downloadUrl;
|
||||
}
|
||||
|
||||
protected function defaultHeaders(): array
|
||||
{
|
||||
return [
|
||||
'Accept' => '*/*',
|
||||
];
|
||||
}
|
||||
}
|
||||
40
src/Requests/FileExchange/UploadFileRequest.php
Normal file
40
src/Requests/FileExchange/UploadFileRequest.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\FileExchange;
|
||||
|
||||
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;
|
||||
|
||||
public function __construct(
|
||||
protected string $uploadUrl,
|
||||
protected $fileStream,
|
||||
protected int $fileSize
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return $this->uploadUrl;
|
||||
}
|
||||
|
||||
protected function defaultHeaders(): array
|
||||
{
|
||||
return [
|
||||
'Accept' => '*/*',
|
||||
'Content-Length' => (string)$this->fileSize,
|
||||
'Content-Type' => 'application/octet-stream',
|
||||
];
|
||||
}
|
||||
|
||||
protected function defaultBody(): mixed
|
||||
{
|
||||
return $this->fileStream;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\CreateBeneficiaryRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\CreateBeneficiaryResponseData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class CreateBeneficiaryRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected CreateBeneficiaryRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/beneficiaries';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): CreateBeneficiaryResponseData
|
||||
{
|
||||
return CreateBeneficiaryResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\BeneficiaryCollectionData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetBeneficiariesRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $accountNumber,
|
||||
protected string $type,
|
||||
protected ?int $limit = null,
|
||||
protected ?int $offset = null,
|
||||
protected ?string $inn = null,
|
||||
protected ?string $lastName = null,
|
||||
protected ?string $firstName = null,
|
||||
protected ?string $middleName = null,
|
||||
protected ?string $name = null,
|
||||
protected ?bool $isActive = null
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/beneficiaries';
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return array_filter([
|
||||
'accountNumber' => $this->accountNumber,
|
||||
'type' => $this->type,
|
||||
'limit' => $this->limit,
|
||||
'offset' => $this->offset,
|
||||
'inn' => $this->inn,
|
||||
'lastName' => $this->lastName,
|
||||
'firstName' => $this->firstName,
|
||||
'middleName' => $this->middleName,
|
||||
'name' => $this->name,
|
||||
'isActive' => $this->isActive,
|
||||
], fn($value) => $value !== null);
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): BeneficiaryCollectionData
|
||||
{
|
||||
return BeneficiaryCollectionData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\BeneficiaryBalanceData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetBeneficiaryBalanceRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $beneficiaryId,
|
||||
protected string $accountNumber,
|
||||
protected string $date
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/beneficiaries/{$this->beneficiaryId}/balance";
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return [
|
||||
'accountNumber' => $this->accountNumber,
|
||||
'date' => $this->date,
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): BeneficiaryBalanceData
|
||||
{
|
||||
return BeneficiaryBalanceData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\BeneficiaryTransactionCollectionData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetBeneficiaryTransactionsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $beneficiaryId,
|
||||
protected string $dateFrom,
|
||||
protected string $dateTo,
|
||||
protected ?int $limit = 100,
|
||||
protected ?int $offset = 0
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/beneficiaries/{$this->beneficiaryId}/transactions";
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return [
|
||||
'dateFrom' => $this->dateFrom,
|
||||
'dateTo' => $this->dateTo,
|
||||
'limit' => $this->limit,
|
||||
'offset' => $this->offset,
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): BeneficiaryTransactionCollectionData
|
||||
{
|
||||
return BeneficiaryTransactionCollectionData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries\Requisites;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites\CreateRequisiteRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites\RequisiteData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class AddRequisiteRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $beneficiaryId,
|
||||
protected CreateRequisiteRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/beneficiaries/{$this->beneficiaryId}/requisites";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): RequisiteData
|
||||
{
|
||||
return RequisiteData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries\Requisites;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites\RequisiteData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class GetRequisitesRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $beneficiaryId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/beneficiaries/{$this->beneficiaryId}/requisites";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DataCollection
|
||||
{
|
||||
return RequisiteData::collect($response->json(), DataCollection::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries\Requisites;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites\UpdateRequisiteRequestData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class UpdateRequisiteRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PATCH;
|
||||
|
||||
public function __construct(
|
||||
protected string $beneficiaryId,
|
||||
protected string $requisiteId,
|
||||
protected UpdateRequisiteRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/beneficiaries/{$this->beneficiaryId}/requisites/{$this->requisiteId}";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\CreateBeneficiaryResponseData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class ScoreBeneficiaryRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $beneficiaryId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/beneficiaries/{$this->beneficiaryId}/scoring";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): CreateBeneficiaryResponseData
|
||||
{
|
||||
return CreateBeneficiaryResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Beneficiaries;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\CreateBeneficiaryResponseData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\UpdateBeneficiaryRequestData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class UpdateBeneficiaryRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PUT;
|
||||
|
||||
public function __construct(
|
||||
protected string $beneficiaryId,
|
||||
protected UpdateBeneficiaryRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/beneficiaries/{$this->beneficiaryId}";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): CreateBeneficiaryResponseData
|
||||
{
|
||||
return CreateBeneficiaryResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
45
src/Requests/NominalAccounts/Deals/AddDealRequest.php
Normal file
45
src/Requests/NominalAccounts/Deals/AddDealRequest.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\DealData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class AddDealRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $accountNumber,
|
||||
protected string $expireDate,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
protected DataCollection $digestSignatures
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/deals';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return [
|
||||
'accountNumber' => $this->accountNumber,
|
||||
'expireDate' => $this->expireDate,
|
||||
'digestSignatures' => $this->digestSignatures->toArray(),
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DealData
|
||||
{
|
||||
return DealData::from($response->json());
|
||||
}
|
||||
}
|
||||
38
src/Requests/NominalAccounts/Deals/DealActionRequest.php
Normal file
38
src/Requests/NominalAccounts/Deals/DealActionRequest.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class DealActionRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PATCH;
|
||||
|
||||
public function __construct(
|
||||
protected string $dealId,
|
||||
protected string $action, // ACCEPT, COMPLETE, CANCEL
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
protected DataCollection $digestSignatures
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/deals/action';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return [
|
||||
'dealId' => $this->dealId,
|
||||
'action' => $this->action,
|
||||
'digestSignatures' => $this->digestSignatures->toArray(),
|
||||
];
|
||||
}
|
||||
}
|
||||
28
src/Requests/NominalAccounts/Deals/GetDealPayoffsRequest.php
Normal file
28
src/Requests/NominalAccounts/Deals/GetDealPayoffsRequest.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\DealPayoffData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class GetDealPayoffsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $dealId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/deals/{$this->dealId}/payoffs";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DataCollection
|
||||
{
|
||||
return DealPayoffData::collect($response->json(), DataCollection::class);
|
||||
}
|
||||
}
|
||||
27
src/Requests/NominalAccounts/Deals/GetDealRequest.php
Normal file
27
src/Requests/NominalAccounts/Deals/GetDealRequest.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\DealData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetDealRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $dealId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/deals/{$this->dealId}";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DealData
|
||||
{
|
||||
return DealData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\DealRequestStatusData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetDealRequestStatusRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $dealId,
|
||||
protected string $requestId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/deals/{$this->dealId}/requests/{$this->requestId}/status";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DealRequestStatusData
|
||||
{
|
||||
return DealRequestStatusData::from($response->json());
|
||||
}
|
||||
}
|
||||
38
src/Requests/NominalAccounts/Deals/GetDealsRequest.php
Normal file
38
src/Requests/NominalAccounts/Deals/GetDealsRequest.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\DealCollectionData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetDealsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $accountNumber,
|
||||
protected ?int $limit = 100,
|
||||
protected ?int $offset = 0
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/deals';
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return [
|
||||
'accountNumber' => $this->accountNumber,
|
||||
'limit' => $this->limit,
|
||||
'offset' => $this->offset,
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DealCollectionData
|
||||
{
|
||||
return DealCollectionData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals\Steps;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps\StepContractorData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class GetStepContractorsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $dealId,
|
||||
protected string $stepId,
|
||||
protected ?string $contractorId = null,
|
||||
protected ?string $role = null
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/deals/{$this->dealId}/steps/{$this->stepId}/contractors";
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return array_filter([
|
||||
'contractorId' => $this->contractorId,
|
||||
'role' => $this->role,
|
||||
]);
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DataCollection
|
||||
{
|
||||
return StepContractorData::collect($response->json(), DataCollection::class);
|
||||
}
|
||||
}
|
||||
28
src/Requests/NominalAccounts/Deals/Steps/GetStepRequest.php
Normal file
28
src/Requests/NominalAccounts/Deals/Steps/GetStepRequest.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals\Steps;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps\StepData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetStepRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $dealId,
|
||||
protected string $stepId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/deals/{$this->dealId}/steps/{$this->stepId}";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): StepData
|
||||
{
|
||||
return StepData::from($response->json());
|
||||
}
|
||||
}
|
||||
38
src/Requests/NominalAccounts/Deals/Steps/GetStepsRequest.php
Normal file
38
src/Requests/NominalAccounts/Deals/Steps/GetStepsRequest.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals\Steps;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps\StepData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class GetStepsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $dealId,
|
||||
protected ?int $limit = 50,
|
||||
protected ?int $offset = 0
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/deals/{$this->dealId}/steps";
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return [
|
||||
'limit' => $this->limit,
|
||||
'offset' => $this->offset,
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DataCollection
|
||||
{
|
||||
return StepData::collect($response->json(), DataCollection::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals\Steps;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps\ContractorActionRequestData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class ManageContractorRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PATCH;
|
||||
|
||||
public function __construct(
|
||||
protected ContractorActionRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/deals/steps/contractors';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals\Steps;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps\StepActionRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps\StepActionResponseData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class ManageStepRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected StepActionRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/deals/steps';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): StepActionResponseData
|
||||
{
|
||||
return StepActionResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
27
src/Requests/NominalAccounts/Deals/ValidateDealRequest.php
Normal file
27
src/Requests/NominalAccounts/Deals/ValidateDealRequest.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Deals;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Deals\ValidateDealResponseData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class ValidateDealRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::PATCH;
|
||||
|
||||
public function __construct(
|
||||
protected string $dealId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/deals/{$this->dealId}/is-valid";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): ValidateDealResponseData
|
||||
{
|
||||
return ValidateDealResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\CounterpartyRequestStatusData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetCounterpartyRequestStatusRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $requestId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/beneficiaries/requests/{$this->requestId}/status";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): CounterpartyRequestStatusData
|
||||
{
|
||||
return CounterpartyRequestStatusData::from($response->json());
|
||||
}
|
||||
}
|
||||
24
src/Requests/NominalAccounts/GetNominalAccountsRequest.php
Normal file
24
src/Requests/NominalAccounts/GetNominalAccountsRequest.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\NominalAccountData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class GetNominalAccountsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/nominal-accounts';
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DataCollection
|
||||
{
|
||||
return NominalAccountData::collect($response->json(), DataCollection::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Identification;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Identification\IdentifyResponseData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetIdentifyStatusRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $id,
|
||||
protected string $identifyId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/unidentified-transactions/{$this->id}/identify/{$this->identifyId}";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): IdentifyResponseData
|
||||
{
|
||||
return IdentifyResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Identification;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Identification\UnidentifiedTransactionCollectionData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetUnidentifiedTransactionsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $accountNumber,
|
||||
protected ?int $limit = null,
|
||||
protected ?int $offset = null,
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/unidentified-transactions';
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return array_filter([
|
||||
'accountNumber' => $this->accountNumber,
|
||||
'limit' => $this->limit,
|
||||
'offset' => $this->offset,
|
||||
]);
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): UnidentifiedTransactionCollectionData
|
||||
{
|
||||
return UnidentifiedTransactionCollectionData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Identification;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Identification\IdentifyRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Identification\IdentifyResponseData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class IdentifyTransactionRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $id,
|
||||
protected IdentifyRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/unidentified-transactions/{$this->id}/identify";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): IdentifyResponseData
|
||||
{
|
||||
return IdentifyResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Identification;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Identification\RefundUnidentifiedTransactionRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Identification\RefundUnidentifiedTransactionResponseData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class RefundUnidentifiedTransactionRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $id,
|
||||
protected RefundUnidentifiedTransactionRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/unidentified-transactions/{$this->id}/refunds";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): RefundUnidentifiedTransactionResponseData
|
||||
{
|
||||
return RefundUnidentifiedTransactionResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
37
src/Requests/NominalAccounts/Payouts/CreatePayoffRequest.php
Normal file
37
src/Requests/NominalAccounts/Payouts/CreatePayoffRequest.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Payouts;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\PayoffRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\PayoffResponseData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class CreatePayoffRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected PayoffRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/payoffs';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): PayoffResponseData
|
||||
{
|
||||
return PayoffResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Payouts;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\TaxRefundRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\TaxRefundResponseData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class CreateTaxRefundRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected TaxRefundRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/tax-refund';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): TaxRefundResponseData
|
||||
{
|
||||
return TaxRefundResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
27
src/Requests/NominalAccounts/Payouts/GetPayoffRequest.php
Normal file
27
src/Requests/NominalAccounts/Payouts/GetPayoffRequest.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Payouts;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DetailedPayoffData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetPayoffRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $payoffId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/payoffs/{$this->payoffId}";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DetailedPayoffData
|
||||
{
|
||||
return DetailedPayoffData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Payouts;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\PayoffResponseData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetPayoffStatusRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $payoffId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/payoffs/{$this->payoffId}/status";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): PayoffResponseData
|
||||
{
|
||||
return PayoffResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Payouts;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\TaxRefundResponseData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetTaxRefundStatusRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $taxRefundId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/tax-refund/{$this->taxRefundId}/status";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): TaxRefundResponseData
|
||||
{
|
||||
return TaxRefundResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
38
src/Requests/NominalAccounts/Payouts/PayoffAcceptRequest.php
Normal file
38
src/Requests/NominalAccounts/Payouts/PayoffAcceptRequest.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Payouts;
|
||||
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class PayoffAcceptRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PATCH;
|
||||
|
||||
public function __construct(
|
||||
protected string $payoffId,
|
||||
protected bool $accept = true
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/payoffs/{$this->payoffId}/accept";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return [
|
||||
'accept' => $this->accept,
|
||||
];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): bool
|
||||
{
|
||||
return (bool)($response->json('result') ?? false);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\Payouts;
|
||||
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class TaxRefundAcceptRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PATCH;
|
||||
|
||||
public function __construct(
|
||||
protected string $taxRefundId,
|
||||
protected bool $accept
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/tax-refund/{$this->taxRefundId}/accept";
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return ['accept' => $this->accept ? 'true' : 'false'];
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): bool
|
||||
{
|
||||
return (bool)($response->json('result') ?? false);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\UniversalRecipients;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\UniversalRecipients\CreateUniversalRecipientRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\UniversalRecipients\UniversalRecipientResponseData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class CreateUniversalRecipientRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected CreateUniversalRecipientRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/universal-recipients';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): UniversalRecipientResponseData
|
||||
{
|
||||
return UniversalRecipientResponseData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\UniversalRecipients;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\UniversalRecipients\UniversalRecipientData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetUniversalRecipientRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $universalRecipientId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/universal-recipients/{$this->universalRecipientId}";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): UniversalRecipientData
|
||||
{
|
||||
return UniversalRecipientData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\UniversalRecipients;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\UniversalRecipients\UniversalRecipientData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class GetUniversalRecipientsRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $accountNumber,
|
||||
protected string $type,
|
||||
protected ?int $limit = 100,
|
||||
protected ?int $offset = 0,
|
||||
protected ?bool $isActive = null,
|
||||
protected ?string $date = null,
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/na/jp/v1/universal-recipients';
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return array_filter([
|
||||
'accountNumber' => $this->accountNumber,
|
||||
'type' => $this->type,
|
||||
'limit' => $this->limit,
|
||||
'offset' => $this->offset,
|
||||
'isActive' => $this->isActive,
|
||||
'date' => $this->date,
|
||||
], fn($val) => $val !== null);
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DataCollection
|
||||
{
|
||||
return UniversalRecipientData::collect($response->json('universalRecipients'), DataCollection::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\UniversalRecipients\Requisites;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites\CreateRequisiteRequestData;
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites\RequisiteData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class AddUniversalRecipientRequisiteRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $universalRecipientId,
|
||||
protected CreateRequisiteRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/universal-recipients/{$this->universalRecipientId}/requisites";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): RequisiteData
|
||||
{
|
||||
return RequisiteData::from($response->json());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\UniversalRecipients\Requisites;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites\RequisiteData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
|
||||
class GetUniversalRecipientRequisitesRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected string $universalRecipientId
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/universal-recipients/{$this->universalRecipientId}/requisites";
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): DataCollection
|
||||
{
|
||||
return RequisiteData::collect($response->json(), DataCollection::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\NominalAccounts\UniversalRecipients\Requisites;
|
||||
|
||||
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites\UpdateRequisiteRequestData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class UpdateUniversalRecipientRequisiteRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PATCH;
|
||||
|
||||
public function __construct(
|
||||
protected string $universalRecipientId,
|
||||
protected string $requisiteId,
|
||||
protected UpdateRequisiteRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/na/jp/v1/universal-recipients/{$this->universalRecipientId}/requisites/{$this->requisiteId}";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
}
|
||||
30
src/Requests/Sandbox/Payments/CreateRubPaymentRequest.php
Normal file
30
src/Requests/Sandbox/Payments/CreateRubPaymentRequest.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Sandbox\Payments;
|
||||
|
||||
use Gemini\AlfaBank\Data\Sandbox\Payments\CreateRubPaymentRequestData;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class CreateRubPaymentRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected CreateRubPaymentRequestData $data
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/jp/v2/payments';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return $this->data->toArray();
|
||||
}
|
||||
}
|
||||
41
src/Requests/Sandbox/SignatureEncryptionTestRequest.php
Normal file
41
src/Requests/Sandbox/SignatureEncryptionTestRequest.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Sandbox;
|
||||
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Traits\Body\HasStringBody;
|
||||
|
||||
class SignatureEncryptionTestRequest extends Request implements HasBody
|
||||
{
|
||||
use HasStringBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $jwsBody,
|
||||
protected string $requestChannelSecurity = 'SIGNATURE',
|
||||
protected string $responseChannelSecurity = 'SIGNATURE'
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/signature-encryption-tests/json';
|
||||
}
|
||||
|
||||
protected function defaultHeaders(): array
|
||||
{
|
||||
return [
|
||||
'Accept' => 'application/jose',
|
||||
'Content-Type' => 'application/jose',
|
||||
'X-Request-ChannelSecurity' => $this->requestChannelSecurity,
|
||||
'X-Response-ChannelSecurity' => $this->responseChannelSecurity,
|
||||
];
|
||||
}
|
||||
|
||||
protected function defaultBody(): ?string
|
||||
{
|
||||
return $this->jwsBody;
|
||||
}
|
||||
}
|
||||
31
src/Requests/Sandbox/TriggerWebhookEventRequest.php
Normal file
31
src/Requests/Sandbox/TriggerWebhookEventRequest.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Sandbox;
|
||||
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
|
||||
class TriggerWebhookEventRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $object // e.g. ul_transaction_default
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/v1/webhooks-events';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
return [
|
||||
'object' => $this->object,
|
||||
];
|
||||
}
|
||||
}
|
||||
49
src/Requests/Webhooks/CreateWebhookRequest.php
Normal file
49
src/Requests/Webhooks/CreateWebhookRequest.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Webhooks;
|
||||
|
||||
use Gemini\AlfaBank\Data\WebhookData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
|
||||
class CreateWebhookRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::POST;
|
||||
|
||||
public function __construct(
|
||||
protected string $object,
|
||||
protected string $callbackUri,
|
||||
protected ?array $accounts = null,
|
||||
protected int $version = 1
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/v1/webhooks';
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
$body = [
|
||||
'object' => $this->object,
|
||||
'callbackUri' => $this->callbackUri,
|
||||
'version' => $this->version,
|
||||
];
|
||||
|
||||
if ($this->accounts !== null) {
|
||||
$body['data'] = ['accounts' => $this->accounts];
|
||||
}
|
||||
|
||||
return $body;
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): WebhookData
|
||||
{
|
||||
return WebhookData::from($response->json());
|
||||
}
|
||||
}
|
||||
28
src/Requests/Webhooks/DeleteWebhookRequest.php
Normal file
28
src/Requests/Webhooks/DeleteWebhookRequest.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Webhooks;
|
||||
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
|
||||
class DeleteWebhookRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::DELETE;
|
||||
|
||||
public function __construct(
|
||||
protected string $id,
|
||||
protected string $object
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/v1/webhooks/{$this->id}";
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return [
|
||||
'object' => $this->object,
|
||||
];
|
||||
}
|
||||
}
|
||||
38
src/Requests/Webhooks/GetWebhooksRequest.php
Normal file
38
src/Requests/Webhooks/GetWebhooksRequest.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Webhooks;
|
||||
|
||||
use Gemini\AlfaBank\Data\WebhookCollectionData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
|
||||
class GetWebhooksRequest extends Request
|
||||
{
|
||||
protected Method $method = Method::GET;
|
||||
|
||||
public function __construct(
|
||||
protected ?int $offset = 0,
|
||||
protected ?int $limit = 20,
|
||||
protected ?string $object = null
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return '/api/v2/webhooks';
|
||||
}
|
||||
|
||||
protected function defaultQuery(): array
|
||||
{
|
||||
return array_filter([
|
||||
'offset' => $this->offset,
|
||||
'limit' => $this->limit,
|
||||
'object' => $this->object,
|
||||
]);
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): WebhookCollectionData
|
||||
{
|
||||
return WebhookCollectionData::from($response->json());
|
||||
}
|
||||
}
|
||||
55
src/Requests/Webhooks/UpdateWebhookRequest.php
Normal file
55
src/Requests/Webhooks/UpdateWebhookRequest.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace Gemini\AlfaBank\Requests\Webhooks;
|
||||
|
||||
use Gemini\AlfaBank\Data\WebhookData;
|
||||
use Saloon\Enums\Method;
|
||||
use Saloon\Http\Request;
|
||||
use Saloon\Http\Response;
|
||||
use Saloon\Traits\Body\HasJsonBody;
|
||||
use Saloon\Contracts\Body\HasBody;
|
||||
|
||||
class UpdateWebhookRequest extends Request implements HasBody
|
||||
{
|
||||
use HasJsonBody;
|
||||
|
||||
protected Method $method = Method::PUT;
|
||||
|
||||
public function __construct(
|
||||
protected string $id,
|
||||
protected string $object,
|
||||
protected bool $enabled = true,
|
||||
protected ?string $callbackUri = null,
|
||||
protected ?array $accounts = null,
|
||||
protected int $version = 1
|
||||
) {}
|
||||
|
||||
public function resolveEndpoint(): string
|
||||
{
|
||||
return "/api/v2/webhooks/{$this->id}";
|
||||
}
|
||||
|
||||
protected function defaultBody(): array
|
||||
{
|
||||
$body = [
|
||||
'object' => $this->object,
|
||||
'enabled' => $this->enabled,
|
||||
'version' => $this->version,
|
||||
];
|
||||
|
||||
if ($this->callbackUri !== null) {
|
||||
$body['callbackUri'] = $this->callbackUri;
|
||||
}
|
||||
|
||||
if ($this->accounts !== null) {
|
||||
$body['data'] = ['accounts' => $this->accounts];
|
||||
}
|
||||
|
||||
return $body;
|
||||
}
|
||||
|
||||
public function createDtoFromResponse(Response $response): WebhookData
|
||||
{
|
||||
return WebhookData::from($response->json());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user