| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <?php
- namespace App\Data\Pagarme\Response\PagarmeOrderResponseData;
- /**
- * @param array<int, array> $items Itens do pedido (code, amount, quantity, description, etc.)
- * @param array<string, mixed>|null $customer Dados do cliente retornados pela API
- * @param array<int, array> $charges Cobrancas do pedido (status, amount, payment_method, last_transaction, etc.)
- * @param array<int, array> $checkouts Checkouts do pedido
- * @param array<string, mixed> $metadata Metadados retornados pela API
- */
- readonly class PagarmeOrderResponseData
- {
- public function __construct(
- public ?string $id,
- public ?string $code,
- public ?int $amount,
- public ?string $currency,
- public ?bool $closed,
- public ?string $status,
- public array $items,
- public ?array $customer,
- public array $charges,
- public array $checkouts,
- public array $metadata,
- public ?string $createdAt = null,
- public ?string $updatedAt = null,
- public ?string $closedAt = null,
- ) {}
- public static function fromArray(array $payload): self
- {
- return new self(
- id: $payload['id'] ?? null,
- code: $payload['code'] ?? null,
- amount: isset($payload['amount']) ? (int) $payload['amount'] : null,
- currency: $payload['currency'] ?? null,
- closed: $payload['closed'] ?? null,
- status: $payload['status'] ?? null,
- items: $payload['items'] ?? [],
- customer: ! empty($payload['customer']) ? $payload['customer'] : null,
- charges: $payload['charges'] ?? [],
- checkouts: $payload['checkouts'] ?? [],
- metadata: $payload['metadata'] ?? [],
- createdAt: $payload['created_at'] ?? null,
- updatedAt: $payload['updated_at'] ?? null,
- closedAt: $payload['closed_at'] ?? null,
- );
- }
- public function id(): ?string
- {
- return $this->id;
- }
- public function toArray(): array
- {
- return [
- 'id' => $this->id,
- 'code' => $this->code,
- 'amount' => $this->amount,
- 'currency' => $this->currency,
- 'closed' => $this->closed,
- 'items' => $this->items,
- 'customer' => $this->customer,
- 'status' => $this->status,
- 'created_at' => $this->createdAt,
- 'updated_at' => $this->updatedAt,
- 'closed_at' => $this->closedAt,
- 'charges' => $this->charges,
- 'checkouts' => $this->checkouts,
- 'metadata' => $this->metadata,
- ];
- }
- }
|