first commit

This commit is contained in:
2026-01-14 16:40:33 +03:00
commit f803480f7b
184 changed files with 5573 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
<?php
namespace Gemini\AlfaBank\Data\Auth;
use Spatie\LaravelData\Data;
class TokenData extends Data
{
public function __construct(
public string $access_token,
public string $refresh_token,
public ?string $id_token,
public int $expires_in,
public string $token_type
) {}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace Gemini\AlfaBank\Data\Auth\UserInfo;
use Gemini\AlfaBank\Data\PaginationData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class ClientConsentCollectionData extends Data
{
public function __construct(
public PaginationData $pagination,
#[DataCollectionOf(ClientConsentData::class)]
public DataCollection $items
) {}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Gemini\AlfaBank\Data\Auth\UserInfo;
use Gemini\AlfaBank\Data\PaginationData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class ClientConsentData extends Data
{
public function __construct(
public string $createDateTime,
public string $sub,
public string $clientId,
public bool $isActive,
public string $expireDate,
public ?string $organizationIdHash = null,
) {}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Gemini\AlfaBank\Data\Auth\UserInfo;
use Spatie\LaravelData\Data;
class UserInfoData extends Data
{
public function __construct(
public string $sub,
public ?string $iss = null,
public ?string $aud = null,
public ?string $name = null,
public ?string $given_name = null,
public ?string $family_name = null,
public ?string $middle_name = null,
public ?string $email = null,
public ?string $gender = null,
public ?string $birthdate = null,
public ?string $phone_number = null,
public ?string $inn = null,
// Add more claims as needed based on the response
) {}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Gemini\AlfaBank\Data\Crypto;
use Spatie\LaravelData\Data;
class CertificateData extends Data
{
public function __construct(
public string $id,
public string $clientId,
public string $ownerName,
public string $fingerprint,
public string $beginDateTime,
public string $expireDateTime,
public string $certificateBody,
public string $type,
public string $algorithm,
public string $serialNumber,
public ?string $organizationName = null,
public ?string $status = null,
) {}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace Gemini\AlfaBank\Data\FileExchange;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class DownloadFileResponseData extends Data
{
public function __construct(
#[DataCollectionOf(FileLinkData::class)]
public DataCollection $downloadFileLinks,
) {}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data\FileExchange;
use Spatie\LaravelData\Data;
class FileLinkData extends Data
{
public function __construct(
public string $url,
public string $method,
public ?FileLinkData $detachedSignatureLink = null,
) {}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace Gemini\AlfaBank\Data\FileExchange;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class UploadFileResponseData extends Data
{
public function __construct(
#[DataCollectionOf(FileLinkData::class)]
public DataCollection $uploadFileLinks,
) {}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Spatie\LaravelData\Data;
class AddressData extends Data
{
public function __construct(
public string $type,
public string $address,
public ?string $country = null,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class BeneficiaryBalanceData extends Data
{
public function __construct(
public string $beneficiaryId,
public string $accountNumber,
public string $date,
#[DataCollectionOf(WalletBalanceData::class)]
public ?DataCollection $balances = null,
) {}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Gemini\AlfaBank\Data\PaginationData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class BeneficiaryTransactionCollectionData extends Data
{
public function __construct(
public ?PaginationData $pagination = null,
#[DataCollectionOf(BeneficiaryTransactionData::class)]
public ?DataCollection $transactionsList = null,
) {}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Spatie\LaravelData\Data;
class BeneficiaryTransactionData extends Data
{
public function __construct(
public string $type,
public string $amount,
public ?string $comment = null,
) {}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class CreateBeneficiaryRequestData extends Data
{
public function __construct(
public string $type,
public string $countryOfTaxResidence,
#[DataCollectionOf(AddressData::class)]
public DataCollection $addresses,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
public ?string $accountNumber = null,
public ?bool $taxResidentUS = null,
public ?bool $foreignTaxResident = null,
public ?bool $financialActivities = null,
public ?string $name = null,
public ?string $registrationDate = null,
public ?string $inn = null,
public ?string $kpp = null,
public ?string $ogrn = null,
public ?PersonalInformationData $personalInformation = null,
public ?string $phoneNumber = null,
public ?string $email = null,
#[DataCollectionOf(DocumentData::class)]
public ?DataCollection $documents = null,
) {}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Spatie\LaravelData\Data;
class CreateBeneficiaryResponseData extends Data
{
public function __construct(
public string $requestId,
public string $status,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Spatie\LaravelData\Data;
class DocumentData extends Data
{
public function __construct(
public string $type,
public string $number,
public string $issueDate,
public string $organization,
public ?string $serial = null,
public ?string $expireDate = null,
public ?string $division = null,
) {}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Spatie\LaravelData\Data;
class PersonalInformationData extends Data
{
public function __construct(
public ?string $inn = null,
public ?string $firstName = null,
public ?string $middleName = null,
public ?string $lastName = null,
public ?string $citizenship = null,
public ?string $birthDate = null,
public ?string $birthPlace = null,
public ?string $snils = null,
) {}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class CreateRequisiteRequestData extends Data
{
public function __construct(
public string $type,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
public ?string $beneficiaryId = null,
public ?string $pan = null,
public ?string $phoneNumber = null,
public ?string $bankId = null,
public ?string $accountNumber = null,
public ?string $bik = null,
public ?string $name = null,
public ?string $inn = null,
public ?string $kpp = null,
public ?bool $isMain = null,
) {}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites;
use Spatie\LaravelData\Data;
class RequisiteData extends Data
{
public function __construct(
public ?string $id = null,
public string $type,
public bool $isMain,
public bool $isActive,
public ?string $pan = null,
public ?string $phoneNumber = null,
public ?string $bankId = null,
public ?string $accountNumber = null,
public ?string $bik = null,
public ?string $name = null,
public ?string $inn = null,
public ?string $kpp = null,
) {}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class UpdateRequisiteRequestData extends Data
{
public function __construct(
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
public ?string $pan = null,
public ?string $keyId = null,
public ?string $phoneNumber = null,
public ?string $bankId = null,
public ?string $accountNumber = null,
public ?string $bik = null,
public ?bool $isMain = null,
public ?bool $isActive = null,
) {}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class UpdateBeneficiaryRequestData extends Data
{
public function __construct(
public string $type,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
public ?string $name = null,
public ?string $registrationDate = null,
public ?PersonalInformationData $personalInformation = null,
public ?string $phoneNumber = null,
public ?string $email = null,
#[DataCollectionOf(AddressData::class)]
public ?DataCollection $addresses = null,
#[DataCollectionOf(DocumentData::class)]
public ?DataCollection $documents = null,
public ?bool $isActive = null,
) {}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries;
use Spatie\LaravelData\Data;
class WalletBalanceData extends Data
{
public function __construct(
public string $walletType,
public string $freeBalance,
public string $heldBalance,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts;
use Gemini\AlfaBank\Data\PaginationData;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\DataCollection;
class BeneficiaryCollectionData extends Data
{
public function __construct(
public PaginationData $pagination,
public string $accountNumber,
#[DataCollectionOf(BeneficiaryData::class)]
public DataCollection $beneficiaries
) {}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts;
use Gemini\AlfaBank\Data\PaginationData;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\DataCollection;
class BeneficiaryData extends Data
{
public function __construct(
public string $beneficiaryId,
public string $type,
public ?array $personalInformation = null,
public ?string $inn = null,
public ?string $firstName = null,
public ?string $lastName = null,
public ?string $middleName = null,
public ?string $name = null,
public ?string $countryOfTaxResidence = null,
public ?string $phoneNumber = null,
public ?string $email = null,
public ?array $addresses = null,
public ?array $documents = null,
public ?bool $isActive = null,
public ?array $balances = null,
public ?bool $isBeneficiary = null,
public ?bool $isVpr = null,
) {}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts;
use Spatie\LaravelData\Data;
class CounterpartyRequestStatusData extends Data
{
public function __construct(
public string $requestId,
public string $status,
public ?string $beneficiaryId = null,
public ?string $universalRecipientId = null,
public ?string $description = null,
public ?string $resultData = null,
) {}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals;
use Gemini\AlfaBank\Data\PaginationData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class DealCollectionData extends Data
{
public function __construct(
public PaginationData $pagination,
#[DataCollectionOf(DealData::class)]
public DataCollection $deals
) {}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals;
use Spatie\LaravelData\Data;
class DealData extends Data
{
public function __construct(
public string $dealId,
public string $status,
public string $expireDate,
public bool $isValid,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals;
use Spatie\LaravelData\Data;
class DealPayoffData extends Data
{
public function __construct(
public string $stepId,
public string $payoffId,
public string $payoffType,
public string $deponentId,
public string $recipientId,
public string $amount,
public string $status,
) {}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals;
use Spatie\LaravelData\Data;
class DealRequestStatusData extends Data
{
public function __construct(
public string $requestId,
public string $status,
public ?string $description = null,
) {}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class ContractorActionRequestData extends Data
{
public function __construct(
public string $action,
public string $dealId,
public string $stepId,
public string $beneficiaryId,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
public ?string $amount = null,
public ?string $purpose = null,
#[DataCollectionOf(ContractorAmountData::class)]
public ?DataCollection $amounts = null,
public ?bool $keepOnNominalAccount = null,
public ?string $requisiteId = null,
) {}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps;
use Spatie\LaravelData\Data;
class ContractorAmountData extends Data
{
public function __construct(
public ?string $walletType = null,
public ?string $amount = null,
) {}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class StepActionRequestData extends Data
{
public function __construct(
public string $dealId,
public string $action,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
public ?string $stepId = null,
public ?string $description = null,
) {}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps;
use Spatie\LaravelData\Data;
class StepActionResponseData extends Data
{
public function __construct(
public ?string $dealId = null,
public ?string $stepId = null,
public ?int $stepNumber = null,
public ?string $description = null,
public ?string $status = null,
public ?string $requestId = null,
) {}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class StepContractorData extends Data
{
public function __construct(
public ?string $beneficiaryId = null,
public ?string $role = null,
public ?string $amount = null,
public ?string $purpose = null,
public ?string $requisiteId = null,
public ?bool $keepOnNominalAccount = null,
#[DataCollectionOf(ContractorAmountData::class)]
public ?DataCollection $amounts = null,
) {}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals\Steps;
use Spatie\LaravelData\Data;
class StepData extends Data
{
public function __construct(
public string $stepId,
public int $stepNumber,
public string $description,
public string $status,
public bool $isValid,
) {}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Deals;
use Spatie\LaravelData\Data;
class ValidateDealResponseData extends Data
{
public function __construct(
public string $dealId,
public bool $isValid,
public ?array $description = null,
) {}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Identification;
use Spatie\LaravelData\Data;
class AmountDistributionData extends Data
{
public function __construct(
public string $beneficiaryId,
public string $amount,
) {}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Identification;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class IdentifyRequestData extends Data
{
public function __construct(
public string $transactionId,
public string $accountNumber,
#[DataCollectionOf(AmountDistributionData::class)]
public DataCollection $amountDistribution,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
) {}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Identification;
use Spatie\LaravelData\Data;
class IdentifyResponseData extends Data
{
public function __construct(
public string $identifyId,
public string $status,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Identification;
use Spatie\LaravelData\Data;
class PayerData extends Data
{
public function __construct(
public ?string $inn = null,
public ?string $kpp = null,
public ?string $accountNumber = null,
public ?string $name = null,
public ?string $bankAccount = null,
public ?string $bankBik = null,
public ?string $bankName = null,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Identification;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class RefundUnidentifiedTransactionRequestData extends Data
{
public function __construct(
public string $accountNumber,
public string $id,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
) {}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Identification;
use Spatie\LaravelData\Data;
class RefundUnidentifiedTransactionResponseData extends Data
{
public function __construct(
public string $refundId,
public string $status,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Identification;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class UnidentifiedTransactionCollectionData extends Data
{
public function __construct(
public int $offset,
public int $limit,
public int $totalCount,
#[DataCollectionOf(UnidentifiedTransactionData::class)]
public ?DataCollection $unidentifiedTransactions = null,
) {}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Identification;
use Spatie\LaravelData\Data;
class UnidentifiedTransactionData extends Data
{
public function __construct(
public string $id,
public string $amount,
public ?string $documentNumber = null,
public ?string $date = null,
public ?string $purpose = null,
public ?PayerData $payer = null,
) {}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts;
use Spatie\LaravelData\Data;
class NominalAccountData extends Data
{
public function __construct(
public string $accountNumber,
public bool $isActive,
) {}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Payouts;
use Spatie\LaravelData\Data;
class DetailedPayoffData extends Data
{
public function __construct(
public ?string $dealId = null,
public ?string $stepId = null,
public ?string $paymentType = null,
public ?string $requisiteType = null,
public ?array $payer = null,
public ?array $recipient = null,
public ?string $amount = null,
public ?string $purpose = null,
public ?string $status = null,
) {}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Payouts;
use Spatie\LaravelData\Data;
class DigestSignatureData extends Data
{
public function __construct(
public string $base64Encoded,
public string $signatureType,
) {}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Payouts;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class PayoffRequestData extends Data
{
public function __construct(
public string $type,
public string $accountNumber,
public RecipientData $recipient,
public PayoutRequisiteData $payoutRequisite,
public string $amount,
public string $purpose,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
public ?string $deponent = null,
public ?array $requisites = null,
public ?array $tax = null,
) {}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Payouts;
use Spatie\LaravelData\Data;
class PayoffResponseData extends Data
{
public function __construct(
public string $payoffId,
public string $status,
public ?string $description = null,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Payouts;
use Spatie\LaravelData\Data;
class PayoutRequisiteData extends Data
{
public function __construct(
public string $type,
public ?string $requisiteId = null,
public ?string $pan = null,
public ?string $phoneNumber = null,
public ?string $bankId = null,
public ?string $accountNumber = null,
public ?string $bik = null,
) {}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Payouts;
use Spatie\LaravelData\Data;
class RecipientData extends Data
{
public function __construct(
public string $type,
public ?string $name = null,
public ?string $inn = null,
public ?string $kpp = null,
public ?string $beneficiaryId = null,
) {}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Payouts;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class TaxRefundRequestData extends Data
{
public function __construct(
public string $beneficiaryId,
public string $amount,
public string $purpose,
public bool $keepOnNominalAccount,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
public ?string $requisiteId = null,
) {}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\Payouts;
use Spatie\LaravelData\Data;
class TaxRefundResponseData extends Data
{
public function __construct(
public string $taxRefundId,
public string $status,
public ?string $description = null,
) {}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\UniversalRecipients;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class CreateUniversalRecipientRequestData extends Data
{
public function __construct(
public string $accountNumber,
public string $type,
#[DataCollectionOf(DigestSignatureData::class)]
public DataCollection $digestSignatures,
) {}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\UniversalRecipients;
use Spatie\LaravelData\Data;
class UniversalRecipientData extends Data
{
public function __construct(
public string $universalRecipientId,
public bool $isBeneficiary,
public string $type,
public bool $isActive,
) {}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Gemini\AlfaBank\Data\NominalAccounts\UniversalRecipients;
use Gemini\AlfaBank\Data\NominalAccounts\Beneficiaries\CreateBeneficiaryResponseData;
use Spatie\LaravelData\Data;
// Reuse response structure if identical (requestId, status)
class UniversalRecipientResponseData extends CreateBeneficiaryResponseData {}

View File

@@ -0,0 +1,14 @@
<?php
namespace Gemini\AlfaBank\Data;
use Spatie\LaravelData\Data;
class PaginationData extends Data
{
public function __construct(
public int $offset,
public int $limit,
public int $totalCount
) {}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace Gemini\AlfaBank\Data\Sandbox\Payments;
use Gemini\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
class CreateRubPaymentRequestData extends Data
{
public function __construct(
public string $externalId,
public float $amount,
public string $date,
public string $number,
public string $operationCode,
public string $payeeAccount,
public string $payeeBankBic,
public string $payeeInn,
public string $payeeName,
public string $payerAccount,
public string $payerBankBic,
public string $payerInn,
public string $payerName,
public string $purpose,
public string $priority = '5',
public string $deliveryKind = 'электронно',
public string $urgencyCode = 'NORMAL',
public ?string $payerKpp = null,
public ?string $payeeKpp = null,
public ?string $payerBankCorrAccount = null,
public ?string $payeeBankCorrAccount = null,
#[DataCollectionOf(DigestSignatureData::class)]
public ?DataCollection $digestSignatures = null,
public ?array $departmentalInfo = null,
public ?array $vat = null,
) {}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace Gemini\AlfaBank\Data;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\DataCollection;
class WebhookCollectionData extends Data
{
public function __construct(
public PaginationData $pagination,
#[DataCollectionOf(WebhookData::class)]
public DataCollection $items
) {}
}

19
src/Data/WebhookData.php Normal file
View File

@@ -0,0 +1,19 @@
<?php
namespace Gemini\AlfaBank\Data;
use Spatie\LaravelData\Data;
class WebhookData extends Data
{
public function __construct(
public string $id,
public string $object,
public bool $enabled,
public ?string $organizationIdHash,
public ?array $data,
public string $callbackUri,
public int $version,
public ?array $statusDescriptions
) {}
}