Преглед на файлове

refactor: order charge response

Gustavo Mantovani преди 1 седмица
родител
ревизия
996ac28fbe

+ 3 - 0
app/Data/Pagarme/Response/OrderResponseData/OrderChargeResponseData/OrderChargeResponseData.php

@@ -13,6 +13,7 @@ final readonly class OrderChargeResponseData extends PagarmeResponseData
         public ?string $currency,
         public ?string $paidAt,
         public ?string $createdAt,
+        public ?string $expiresAt = null,
 
         public ?OrderTransactionResponseData $lastTransaction,
     ) {}
@@ -33,6 +34,7 @@ final readonly class OrderChargeResponseData extends PagarmeResponseData
             currency:  static::arrString($payload, 'currency'),
             paidAt:    static::arrString($payload, 'paid_at'),
             createdAt: static::arrString($payload, 'created_at'),
+            expiresAt: static::arrString($payload, 'expires_at'),
 
             lastTransaction: ! empty($transaction)
                 ? OrderTransactionResponseData::fromArray($transaction)
@@ -49,6 +51,7 @@ final readonly class OrderChargeResponseData extends PagarmeResponseData
             'currency'         => $this->currency,
             'paid_at'          => $this->paidAt,
             'created_at'       => $this->createdAt,
+            'expires_at'       => $this->expiresAt,
             'last_transaction' => $this->lastTransaction?->toArray(),
         ], static fn ($v) => $v !== null);
     }

+ 7 - 2
app/Http/Resources/PaymentResource.php

@@ -67,12 +67,17 @@ class PaymentResource extends JsonResource
             return null;
         }
 
-        $transaction = $this->gateway_payload['charges'][0]['last_transaction'] ?? [];
+        $charge = $this->gateway_payload['charges'][0] ?? [];
+        $transaction = $charge['last_transaction'] ?? [];
+
+        $expiresAt = $charge['expires_at']
+            ?? $transaction['expires_at']
+            ?? $this->expires_at?->toISOString();
 
         return [
             'qr_code'     => $transaction['qr_code'] ?? null,
             'qr_code_url' => $transaction['qr_code_url'] ?? null,
-            'expires_at'  => $transaction['expires_at'] ?? $this->expires_at?->toISOString(),
+            'expires_at'  => $expiresAt,
             'status'      => $transaction['status'] ?? null,
         ];
     }