$items Itens do pedido (code, amount, quantity, description, etc.) * @param array|null $customer Dados do cliente retornados pela API * @param array $charges Cobrancas do pedido (status, amount, payment_method, last_transaction, etc.) * @param array $checkouts Checkouts do pedido * @param array $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, ]; } }