forked from apoloz/alfa-bank-sdk
feat: Add Laravel tinker examples and update nominal accounts functionality
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
@@ -14,6 +14,7 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Beneficiaries;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components for complex nested data structures.">
|
||||
// <BELIEF_STATE "This DTO has several nested DTOs and collections (`AddressData`, `DigestSignatureData`, `DocumentData`, `PersonalInformationData`). `DataCollectionOf` and `Data` ensure that these are all correctly typed and mapped.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Attributes\Validation\Email;
|
||||
use Spatie\LaravelData\Attributes\Validation\Numeric;
|
||||
@@ -25,6 +26,8 @@ use Spatie\LaravelData\DataCollection;
|
||||
// <BELIEF_STATE "This DTO serves as a robust contract for the complex payload required to create a beneficiary. Type-safety here prevents malformed requests from even being constructed.">
|
||||
class CreateBeneficiaryRequestData extends Data
|
||||
{
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the beneficiary creation request, including nested DTOs and collections.">
|
||||
// <BELIEF_STATE "The constructor meticulously lists all possible fields, making it clear what data is expected. Mandatory fields are non-nullable, while optional ones are nullable. Collections like `addresses` and `digestSignatures` are type-hinted with `DataCollection` and use `#[DataCollectionOf]` to ensure each item is itself a DTO.">
|
||||
public function __construct(
|
||||
@@ -33,7 +36,7 @@ class CreateBeneficiaryRequestData extends Data
|
||||
#[DataCollectionOf(AddressData::class)]
|
||||
public DataCollection $addresses,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $accountNumber = null,
|
||||
public ?bool $taxResidentUS = null,
|
||||
public ?bool $foreignTaxResident = null,
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components.">
|
||||
// <BELIEF_STATE "This DTO requires `DigestSignatureData` as a collection for security, utilizing `DataCollectionOf` for type safety.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
@@ -23,12 +24,14 @@ use Spatie\LaravelData\DataCollection;
|
||||
// <BELIEF_STATE "This DTO ensures the request payload for creating a requisite is strictly typed and complete, preventing malformed requests for a critical financial operation.">
|
||||
class CreateRequisiteRequestData extends Data
|
||||
{
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the requisite creation request.">
|
||||
// <BELIEF_STATE "The constructor includes mandatory fields like `type` and `digestSignatures`. Optional fields cover various payment methods (`pan`, `phoneNumber`, `accountNumber`) and identifiers (`bankId`, `bik`, `name`, `inn`, `kpp`, `beneficiaryId`, `isMain`).">
|
||||
public function __construct(
|
||||
public string $type,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $beneficiaryId = null,
|
||||
public ?string $pan = null,
|
||||
public ?string $phoneNumber = null,
|
||||
|
||||
@@ -14,22 +14,26 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Beneficiaries\Requisites;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components.">
|
||||
// <BELIEF_STATE "This DTO requires `DigestSignatureData` as a collection for security, utilizing `DataCollectionOf` for type safety.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Attributes\Validation\Numeric;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
// </SECTION>
|
||||
|
||||
// <SECTION name="class_definition" intent="Define a DTO for updating an existing requisite.">
|
||||
// <BELIEF_STATE "This DTO ensures the request payload for updating a requisite is strictly typed and complete, supporting partial updates through nullable fields.">
|
||||
// <BELIEF_STATE "This DTO provides a structured format for updating requisite details. It supports partial updates by making all fields except signatures optional.">
|
||||
class UpdateRequisiteRequestData extends Data
|
||||
{
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the requisite update request.">
|
||||
// <BELIEF_STATE "The constructor includes mandatory `digestSignatures` for security. Optional fields allow for specific updates to `pan`, `keyId`, `phoneNumber`, `bankId`, `accountNumber`, `bik`, `isMain` status, and `isActive` status. The flexibility with nullable fields allows partial updates.">
|
||||
public function __construct(
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $pan = null,
|
||||
public ?string $keyId = null, // Specific identifier for some requisite types
|
||||
public ?string $keyId = null,
|
||||
public ?string $phoneNumber = null,
|
||||
public ?string $bankId = null,
|
||||
public ?string $accountNumber = null,
|
||||
|
||||
@@ -14,31 +14,28 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Beneficiaries;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components.">
|
||||
// <BELIEF_STATE "This DTO handles complex nested structures (`DigestSignatureData`, `AddressData`, `DocumentData`, `PersonalInformationData`), requiring `DataCollectionOf` for typed arrays.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Attributes\Validation\Email;
|
||||
use Spatie\LaravelData\Attributes\Validation\Numeric;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
// </SECTION>
|
||||
|
||||
// <SECTION name="class_definition" intent="Define a DTO for updating an existing beneficiary.">
|
||||
// <BELIEF_STATE "This DTO provides a robust contract for updating beneficiary details. By making most fields nullable, it supports partial updates (PATCH-like behavior) even if the API uses PUT.">
|
||||
// <BELIEF_STATE "This DTO provides a structured format for updating beneficiary details. By mirroring the structure of the creation DTO but making most fields optional, it supports partial updates while maintaining type safety.">
|
||||
class UpdateBeneficiaryRequestData extends Data
|
||||
{
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the beneficiary update request, including nested DTOs and collections.">
|
||||
// <BELIEF_STATE "Similar to `CreateBeneficiaryRequestData`, this constructor lists all updatable fields. Mandatory fields are `type` and `digestSignatures`. Most other fields are nullable to allow for partial updates, reflecting the flexibility often needed in update operations.">
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the beneficiary update request.">
|
||||
// <BELIEF_STATE "The constructor includes mandatory `digestSignatures`. Most other fields are nullable to allow for partial updates, reflecting the flexibility often needed in update operations.">
|
||||
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,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $type = null,
|
||||
public ?string $countryOfTaxResidence = null,
|
||||
#[DataCollectionOf(AddressData::class)]
|
||||
public ?DataCollection $addresses = null,
|
||||
#[DataCollectionOf(DocumentData::class)]
|
||||
public ?DataCollection $documents = null,
|
||||
public ?bool $isActive = null,
|
||||
) {}
|
||||
// </SECTION>
|
||||
}
|
||||
public ?string $accountNumber = null,
|
||||
public ?bool $taxResidentUS = null,
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Deals\Steps;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components for complex nested data structures.">
|
||||
// <BELIEF_STATE "This DTO orchestrates several other DTOs and collections (`DigestSignatureData`, `ContractorAmountData`), requiring `DataCollectionOf` for typed arrays.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
@@ -23,6 +24,8 @@ use Spatie\LaravelData\DataCollection;
|
||||
// <BELIEF_STATE "This DTO provides a robust contract for managing contractors within deal steps. It ensures that critical financial and security-related data is strictly typed and correctly structured for actions like adding funds or changing status.">
|
||||
class ContractorActionRequestData extends Data
|
||||
{
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the contractor action request.">
|
||||
// <BELIEF_STATE "The constructor includes mandatory fields like `action`, `dealId`, `stepId`, `beneficiaryId`, and `digestSignatures`. Optional fields like `amount`, `purpose`, `amounts` (for detailed distribution), `keepOnNominalAccount`, and `requisiteId` provide flexibility for various contractor management scenarios.">
|
||||
public function __construct(
|
||||
@@ -31,7 +34,7 @@ class ContractorActionRequestData extends Data
|
||||
public string $stepId,
|
||||
public string $beneficiaryId,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $amount = null,
|
||||
public ?string $purpose = null,
|
||||
#[DataCollectionOf(ContractorAmountData::class)]
|
||||
|
||||
@@ -14,22 +14,25 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Deals\Steps;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components.">
|
||||
// <BELIEF_STATE "This DTO requires `DigestSignatureData` as a collection for security, utilizing `DataCollectionOf` for type safety.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
// </SECTION>
|
||||
|
||||
// <SECTION name="class_definition" intent="Define a DTO for performing an action on a deal step.">
|
||||
// <BELIEF_STATE "This DTO provides a robust contract for managing the lifecycle of deal steps. It ensures that critical operational and security data is strictly typed and correctly structured for actions like completion or cancellation.">
|
||||
// <BELIEF_STATE "This DTO encapsulates the data required to transition a deal step to a new state (e.g., COMPLETE, CANCEL). It handles the action type, identifiers, and necessary signatures.">
|
||||
class StepActionRequestData extends Data
|
||||
{
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the step action request.">
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define the properties of the step action request.">
|
||||
// <BELIEF_STATE "The constructor includes mandatory fields like `dealId`, `action` (e.g., 'COMPLETE', 'CANCEL'), and `digestSignatures`. Optional fields like `stepId` (if targeting a specific step within the deal) and `description` provide flexibility and context for the action.">
|
||||
public function __construct(
|
||||
public string $dealId,
|
||||
public string $action, // e.g., COMPLETE, CANCEL
|
||||
public string $action,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $stepId = null,
|
||||
public ?string $description = null,
|
||||
) {}
|
||||
|
||||
@@ -14,16 +14,19 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Identification;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components for complex nested structures.">
|
||||
// <BELIEF_STATE "This DTO orchestrates several other DTOs and collections (`AmountDistributionData`, `DigestSignatureData`), requiring `DataCollectionOf` for typed arrays.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
// </SECTION>
|
||||
|
||||
// <SECTION name="class_definition" intent="Define a DTO for identifying an unidentified transaction.">
|
||||
// <BELIEF_STATE "This DTO provides a robust contract for the complex payload required to identify a transaction. It ensures that critical financial and cryptographic data is correctly structured.">
|
||||
// <SECTION name="class_definition" intent="Define a DTO for identifying a transaction.">
|
||||
// <BELIEF_STATE "This DTO encapsulates the data required to link an incoming transaction to a specific beneficiary and distribute the funds. It serves as the payload for the IdentifyTransactionRequest. ">
|
||||
class IdentifyRequestData extends Data
|
||||
{
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the transaction identification request.">
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define the properties of the identification request.">
|
||||
// <BELIEF_STATE "The constructor meticulously lists all mandatory fields. `transactionId` and `accountNumber` pinpoint the transaction. `amountDistribution` and `digestSignatures` are critical for the financial and security aspects of the identification process, each being a typed collection.">
|
||||
public function __construct(
|
||||
public string $transactionId,
|
||||
@@ -31,7 +34,7 @@ class IdentifyRequestData extends Data
|
||||
#[DataCollectionOf(AmountDistributionData::class)]
|
||||
public DataCollection $amountDistribution,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
) {}
|
||||
// </SECTION>
|
||||
}
|
||||
|
||||
@@ -14,22 +14,25 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Identification;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components.">
|
||||
// <BELIEF_STATE "This DTO requires `DigestSignatureData` as a collection, so `DataCollectionOf` is used.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
// </SECTION>
|
||||
|
||||
// <SECTION name="class_definition" intent="Define a DTO for refunding an unidentified transaction.">
|
||||
// <BELIEF_STATE "This DTO ensures the refund request payload is strictly typed and complete, preventing malformed requests for a critical financial operation.">
|
||||
// <BELIEF_STATE "This DTO encapsulates the necessary information to process a refund for a transaction that could not be identified or processed normally.">
|
||||
class RefundUnidentifiedTransactionRequestData extends Data
|
||||
{
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the refund request.">
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define the properties of the refund request.">
|
||||
// <BELIEF_STATE "The constructor includes mandatory fields: `accountNumber` and `id` to target the transaction, and `digestSignatures` for security and authorization.">
|
||||
public function __construct(
|
||||
public string $accountNumber,
|
||||
public string $id,
|
||||
public string $id, // Transaction ID
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
) {}
|
||||
// </SECTION>
|
||||
}
|
||||
|
||||
@@ -13,7 +13,12 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Payouts;
|
||||
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components for complex nested data structures.">
|
||||
// <BELIEF_STATE "This DTO orchestrates several other DTOs and collections (`RecipientData`, `PayoutRequisiteData`, `DigestSignatureData`), requiring `DataCollectionOf` for typed arrays.">
|
||||
use Apoloz\AlfaBank\Data\Common\PayoutRequisiteData;
|
||||
use Apoloz\AlfaBank\Data\Common\RecipientData;
|
||||
use Apoloz\AlfaBank\Data\Common\TaxData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Attributes\Validation\Numeric;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
// </SECTION>
|
||||
@@ -22,6 +27,8 @@ use Spatie\LaravelData\DataCollection;
|
||||
// <BELIEF_STATE "This DTO provides a robust contract for the complex payload required to initiate a payment. It ensures that all financial and security-critical data is strictly typed and correctly structured.">
|
||||
class PayoffRequestData extends Data
|
||||
{
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the payoff request.">
|
||||
// <BELIEF_STATE "The constructor includes mandatory fields like `type`, `accountNumber`, `recipient`, `payoutRequisite`, `amount`, `purpose`, and `digestSignatures`. Nested DTOs (`RecipientData`, `PayoutRequisiteData`) ensure detailed sub-structures are also type-safe. Optional fields like `deponent`, `requisites`, and `tax` provide flexibility for different payment scenarios.">
|
||||
public function __construct(
|
||||
@@ -29,13 +36,15 @@ class PayoffRequestData extends Data
|
||||
public string $accountNumber,
|
||||
public RecipientData $recipient,
|
||||
public PayoutRequisiteData $payoutRequisite,
|
||||
#[Numeric]
|
||||
public string $amount,
|
||||
public string $purpose,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $deponent = null,
|
||||
public ?array $requisites = null, // Can be nested DTOs if defined
|
||||
public ?array $tax = null, // Can be nested DTOs if defined
|
||||
#[DataCollectionOf(PayoutRequisiteData::class)]
|
||||
public ?DataCollection $requisites = null,
|
||||
public ?TaxData $tax = null,
|
||||
) {}
|
||||
// </SECTION>
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\Payouts;
|
||||
|
||||
// <SECTION name="module_imports" intent="Import necessary classes for cryptographic signatures, data collection, and Laravel Data.">
|
||||
// <BELIEF_STATE "These imports are essential for constructing a secure and structured tax refund request. `DigestSignatureData` ensures the integrity and authenticity of the request, `DataCollectionOf` and `DataCollection` facilitate handling multiple signatures, and `Data` provides the foundational capabilities for data object mapping and validation.">
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Data;
|
||||
@@ -23,6 +24,8 @@ use Spatie\LaravelData\DataCollection;
|
||||
// <BELIEF_STATE "The `TaxRefundRequestData` DTO encapsulates all the necessary information to process a tax refund. It includes critical financial and beneficiary identifiers, along with a mechanism to handle remaining funds and mandatory cryptographic signatures to ensure request security and non-repudiation.">
|
||||
class TaxRefundRequestData extends Data
|
||||
{
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define the properties of the tax refund request DTO.">
|
||||
// <BELIEF_STATE "Properties are defined directly in the constructor, leveraging PHP 8's property promotion for conciseness. Mandatory fields like `beneficiaryId`, `amount`, `purpose`, and `digestSignatures` ensure a complete request. `keepOnNominalAccount` provides control over fund disposition, and `requisiteId` allows for specific payout instructions.">
|
||||
public function __construct(
|
||||
@@ -31,7 +34,7 @@ class TaxRefundRequestData extends Data
|
||||
public string $purpose,
|
||||
public bool $keepOnNominalAccount,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $requisiteId = null,
|
||||
) {}
|
||||
// </SECTION>
|
||||
|
||||
@@ -14,22 +14,33 @@ namespace Apoloz\AlfaBank\Data\NominalAccounts\UniversalRecipients;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components.">
|
||||
// <BELIEF_STATE "This DTO requires `DigestSignatureData` as a collection, so `DataCollectionOf` is used.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Attributes\Validation\Numeric;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
// </SECTION>
|
||||
|
||||
// <SECTION name="class_definition" intent="Define a DTO for creating a new universal recipient.">
|
||||
// <BELIEF_STATE "This DTO ensures the request payload is strictly typed and complete for creating a universal recipient.">
|
||||
// <SECTION name="class_definition" intent="Define a DTO for creating a universal recipient.">
|
||||
// <BELIEF_STATE "This DTO handles the data for universal recipients, which are a specialized type of counterparty. It ensures all necessary identification and banking details are provided.">
|
||||
class CreateUniversalRecipientRequestData extends Data
|
||||
{
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the universal recipient creation request.">
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define the properties of the universal recipient creation request.">
|
||||
// <BELIEF_STATE "The constructor includes mandatory fields: `accountNumber` and `type` to identify the recipient and its context, and `digestSignatures` for security and authorization.">
|
||||
public function __construct(
|
||||
public string $accountNumber,
|
||||
public string $type,
|
||||
#[DataCollectionOf(DigestSignatureData::class)]
|
||||
public DataCollection $digestSignatures,
|
||||
public ?DataCollection $digestSignatures = null,
|
||||
public ?string $inn = null,
|
||||
public ?string $kpp = null,
|
||||
public ?string $ogrn = null,
|
||||
public ?string $name = null,
|
||||
public ?string $bankName = null,
|
||||
public ?string $bankBic = null,
|
||||
public ?string $bankCorrespondentAccount = null,
|
||||
) {}
|
||||
// </SECTION>
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Apoloz\AlfaBank\Data\Sandbox\Payments;
|
||||
// <SECTION name="module_imports" intent="Import necessary DTOs and Spatie Laravel Data components.">
|
||||
// <BELIEF_STATE "This DTO can include `DigestSignatureData` as a collection, so `DataCollectionOf` is used for type safety.">
|
||||
use Apoloz\AlfaBank\Data\NominalAccounts\Payouts\DigestSignatureData;
|
||||
use Apoloz\AlfaBank\Traits\SignableData;
|
||||
use Spatie\LaravelData\Attributes\DataCollectionOf;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\DataCollection;
|
||||
@@ -23,6 +24,8 @@ use Spatie\LaravelData\DataCollection;
|
||||
// <BELIEF_STATE "This DTO provides a robust contract for simulating payments, ensuring all test payment data is strictly typed and correctly structured.">
|
||||
class CreateRubPaymentRequestData extends Data
|
||||
{
|
||||
use SignableData;
|
||||
|
||||
// <SECTION name="constructor_properties" intent="Define all properties for the test RUB payment request.">
|
||||
// <BELIEF_STATE "The constructor includes comprehensive payment details covering `externalId`, `amount`, `date`, `number`, `operationCode`, full payer/payee information (`payeeAccount`, `payeeBankBic`, etc.), `purpose`, and default values for `priority` and `deliveryKind`. Optional fields like `digestSignatures` and departmental/VAT info provide flexibility for detailed testing.">
|
||||
public function __construct(
|
||||
|
||||
Reference in New Issue
Block a user