PagarmeOrderResponseData.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Data\Pagarme\Response\PagarmeOrderResponseData;
  3. /**
  4. * @param array<int, array> $items Itens do pedido (code, amount, quantity, description, etc.)
  5. * @param array<string, mixed>|null $customer Dados do cliente retornados pela API
  6. * @param array<int, array> $charges Cobrancas do pedido (status, amount, payment_method, last_transaction, etc.)
  7. * @param array<int, array> $checkouts Checkouts do pedido
  8. * @param array<string, mixed> $metadata Metadados retornados pela API
  9. */
  10. readonly class PagarmeOrderResponseData
  11. {
  12. public function __construct(
  13. public ?string $id,
  14. public ?string $code,
  15. public ?int $amount,
  16. public ?string $currency,
  17. public ?bool $closed,
  18. public ?string $status,
  19. public array $items,
  20. public ?array $customer,
  21. public array $charges,
  22. public array $checkouts,
  23. public array $metadata,
  24. public ?string $createdAt = null,
  25. public ?string $updatedAt = null,
  26. public ?string $closedAt = null,
  27. ) {}
  28. public static function fromArray(array $payload): self
  29. {
  30. return new self(
  31. id: $payload['id'] ?? null,
  32. code: $payload['code'] ?? null,
  33. amount: isset($payload['amount']) ? (int) $payload['amount'] : null,
  34. currency: $payload['currency'] ?? null,
  35. closed: $payload['closed'] ?? null,
  36. status: $payload['status'] ?? null,
  37. items: $payload['items'] ?? [],
  38. customer: ! empty($payload['customer']) ? $payload['customer'] : null,
  39. charges: $payload['charges'] ?? [],
  40. checkouts: $payload['checkouts'] ?? [],
  41. metadata: $payload['metadata'] ?? [],
  42. createdAt: $payload['created_at'] ?? null,
  43. updatedAt: $payload['updated_at'] ?? null,
  44. closedAt: $payload['closed_at'] ?? null,
  45. );
  46. }
  47. public function id(): ?string
  48. {
  49. return $this->id;
  50. }
  51. public function toArray(): array
  52. {
  53. return [
  54. 'id' => $this->id,
  55. 'code' => $this->code,
  56. 'amount' => $this->amount,
  57. 'currency' => $this->currency,
  58. 'closed' => $this->closed,
  59. 'items' => $this->items,
  60. 'customer' => $this->customer,
  61. 'status' => $this->status,
  62. 'created_at' => $this->createdAt,
  63. 'updated_at' => $this->updatedAt,
  64. 'closed_at' => $this->closedAt,
  65. 'charges' => $this->charges,
  66. 'checkouts' => $this->checkouts,
  67. 'metadata' => $this->metadata,
  68. ];
  69. }
  70. }