OrderTransactionResponseData.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Data\Pagarme\Response\OrderResponseData\OrderChargeResponseData;
  3. use App\Data\Pagarme\PagarmeResponseData;
  4. final readonly class OrderTransactionResponseData extends PagarmeResponseData
  5. {
  6. public function __construct(
  7. public ?string $id,
  8. public ?string $status,
  9. public ?int $amount,
  10. public ?string $createdAt,
  11. public ?string $acquirerMessage,
  12. public array $gatewayResponse,
  13. public ?string $qrCode = null,
  14. public ?string $qrCodeUrl = null,
  15. public ?string $expiresAt = null,
  16. ) {}
  17. public static function fromArray(array $payload): static
  18. {
  19. return new self(
  20. id: static::arrString($payload, 'id'),
  21. status: static::arrString($payload, 'status'),
  22. amount: static::arrInt($payload, 'amount'),
  23. createdAt: static::arrString($payload, 'created_at'),
  24. acquirerMessage: static::arrString($payload, 'acquirer_message'),
  25. gatewayResponse: static::arrArray($payload, 'gateway_response'),
  26. qrCode: static::arrString($payload, 'qr_code'),
  27. qrCodeUrl: static::arrString($payload, 'qr_code_url'),
  28. expiresAt: static::arrString($payload, 'expires_at'),
  29. );
  30. }
  31. public function toArray(): array
  32. {
  33. return array_filter([
  34. 'id' => $this->id,
  35. 'status' => $this->status,
  36. 'amount' => $this->amount,
  37. 'created_at' => $this->createdAt,
  38. 'acquirer_message' => $this->acquirerMessage,
  39. 'gateway_response' => $this->gatewayResponse,
  40. 'qr_code' => $this->qrCode,
  41. 'qr_code_url' => $this->qrCodeUrl,
  42. 'expires_at' => $this->expiresAt,
  43. ], static fn ($v) => $v !== null);
  44. }
  45. }