|
|
@@ -8,14 +8,6 @@ use App\Data\Pagarme\Request\PagarmeOrderRequestData\PagarmeOrderPaymentData\Pag
|
|
|
use App\Data\Pagarme\Request\PagarmeOrderRequestData\PagarmeOrderPaymentData\PagarmeOrderPaymentData;
|
|
|
use App\Data\Pagarme\Request\PagarmeOrderRequestData\PagarmeOrderPaymentData\PagarmeOrderPixData;
|
|
|
use App\Data\Pagarme\Request\PagarmeOrderRequestData\PagarmeOrderRequestData;
|
|
|
-use App\Data\Pagarme\Response\PagarmeCustomerResponseData\PagarmeCustomerAddressResponseData;
|
|
|
-use App\Data\Pagarme\Response\PagarmeCustomerResponseData\PagarmeCustomerPhonesResponseData\PagarmeCustomerPhonesResponseData;
|
|
|
-use App\Data\Pagarme\Response\PagarmeCustomerResponseData\PagarmeCustomerPhonesResponseData\PagarmePhoneResponseData;
|
|
|
-use App\Data\Pagarme\Response\PagarmeCustomerResponseData\PagarmeCustomerResponseData;
|
|
|
-use App\Data\Pagarme\Response\PagarmeOrderResponseData\PagarmeOrderChargeResponseData\PagarmeOrderChargeResponseData;
|
|
|
-use App\Data\Pagarme\Response\PagarmeOrderResponseData\PagarmeOrderChargeResponseData\PagarmeOrderTransactionResponseData;
|
|
|
-use App\Data\Pagarme\Response\PagarmeOrderResponseData\PagarmeOrderCheckoutResponseData;
|
|
|
-use App\Data\Pagarme\Response\PagarmeOrderResponseData\PagarmeOrderItemResponseData;
|
|
|
use App\Data\Pagarme\Response\PagarmeOrderResponseData\PagarmeOrderResponseData;
|
|
|
use App\Enums\PaymentSplitStatusEnum;
|
|
|
use App\Enums\PaymentStatusEnum;
|
|
|
@@ -93,15 +85,13 @@ class PagarmePaymentService
|
|
|
channel: $options['channel'] ?? null,
|
|
|
);
|
|
|
|
|
|
- $raw = $this->pagarmeRequest(
|
|
|
+ $order = PagarmeOrderResponseData::fromArray($this->pagarmeRequest(
|
|
|
method: 'POST',
|
|
|
path: '/orders',
|
|
|
payload: $requestData,
|
|
|
idempotencyKey: $this->idempotencyKey($payment),
|
|
|
errorMessage: 'Erro ao criar pedido de pagamento no Pagar.me.',
|
|
|
- );
|
|
|
-
|
|
|
- $order = $this->buildOrderResponse($raw);
|
|
|
+ ));
|
|
|
|
|
|
$order->requireId();
|
|
|
|
|
|
@@ -132,7 +122,7 @@ class PagarmePaymentService
|
|
|
|
|
|
public function applyGatewayResponseToPayment(Payment $payment, array $orderResponse): Payment
|
|
|
{
|
|
|
- $order = $this->buildOrderResponse($orderResponse);
|
|
|
+ $order = PagarmeOrderResponseData::fromArray($orderResponse);
|
|
|
$newStatus = $order->paymentStatus();
|
|
|
$failureCode = null;
|
|
|
$failureMessage = null;
|
|
|
@@ -170,124 +160,4 @@ class PagarmePaymentService
|
|
|
|
|
|
return $payment->fresh();
|
|
|
}
|
|
|
-
|
|
|
- //
|
|
|
-
|
|
|
- private function buildOrderResponse(array $raw): PagarmeOrderResponseData
|
|
|
- {
|
|
|
- return new PagarmeOrderResponseData(
|
|
|
- id: $raw['id'] ?? null,
|
|
|
- code: $raw['code'] ?? null,
|
|
|
- amount: isset($raw['amount']) ? (int) $raw['amount'] : null,
|
|
|
- currency: $raw['currency'] ?? null,
|
|
|
- closed: $raw['closed'] ?? null,
|
|
|
- status: $raw['status'] ?? null,
|
|
|
-
|
|
|
- items: array_map(
|
|
|
- fn (array $item) => new PagarmeOrderItemResponseData(
|
|
|
- id: $item['id'] ?? null,
|
|
|
- code: $item['code'] ?? null,
|
|
|
- amount: isset($item['amount']) ? (int) $item['amount'] : null,
|
|
|
- quantity: isset($item['quantity']) ? (int) $item['quantity'] : null,
|
|
|
- description: $item['description'] ?? null,
|
|
|
- status: $item['status'] ?? null,
|
|
|
- ),
|
|
|
- $raw['items'] ?? [],
|
|
|
- ),
|
|
|
-
|
|
|
- customer: ! empty($raw['customer'])
|
|
|
- ? $this->buildCustomerResponse($raw['customer'])
|
|
|
- : null,
|
|
|
-
|
|
|
- charges: array_map(
|
|
|
- fn (array $charge) => $this->buildChargeResponse($charge),
|
|
|
- $raw['charges'] ?? [],
|
|
|
- ),
|
|
|
-
|
|
|
- checkouts: array_map(
|
|
|
- fn (array $checkout) => new PagarmeOrderCheckoutResponseData(
|
|
|
- id: $checkout['id'] ?? null,
|
|
|
- status: $checkout['status'] ?? null,
|
|
|
- url: $checkout['url'] ?? null,
|
|
|
- ),
|
|
|
- $raw['checkouts'] ?? [],
|
|
|
- ),
|
|
|
-
|
|
|
- metadata: $raw['metadata'] ?? [],
|
|
|
- createdAt: $raw['created_at'] ?? null,
|
|
|
- updatedAt: $raw['updated_at'] ?? null,
|
|
|
- closedAt: $raw['closed_at'] ?? null,
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- private function buildChargeResponse(array $raw): PagarmeOrderChargeResponseData
|
|
|
- {
|
|
|
- return new PagarmeOrderChargeResponseData(
|
|
|
- id: $raw['id'] ?? null,
|
|
|
- status: $raw['status'] ?? null,
|
|
|
- amount: isset($raw['amount']) ? (int) $raw['amount'] : null,
|
|
|
- currency: $raw['currency'] ?? null,
|
|
|
- paidAt: $raw['paid_at'] ?? null,
|
|
|
- createdAt: $raw['created_at'] ?? null,
|
|
|
- lastTransaction: ! empty($raw['last_transaction'])
|
|
|
- ? new PagarmeOrderTransactionResponseData(
|
|
|
- id: $raw['last_transaction']['id'] ?? null,
|
|
|
- status: $raw['last_transaction']['status'] ?? null,
|
|
|
- amount: isset($raw['last_transaction']['amount']) ? (int) $raw['last_transaction']['amount'] : null,
|
|
|
- createdAt: $raw['last_transaction']['created_at'] ?? null,
|
|
|
- acquirerMessage: $raw['last_transaction']['acquirer_message'] ?? null,
|
|
|
- gatewayResponse: $raw['last_transaction']['gateway_response'] ?? [],
|
|
|
- )
|
|
|
- : null,
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- private function buildCustomerResponse(array $raw): PagarmeCustomerResponseData
|
|
|
- {
|
|
|
- return new PagarmeCustomerResponseData(
|
|
|
- id: $raw['id'] ?? null,
|
|
|
- name: $raw['name'] ?? null,
|
|
|
- email: $raw['email'] ?? null,
|
|
|
- code: $raw['code'] ?? null,
|
|
|
- document: $raw['document'] ?? null,
|
|
|
- documentType: $raw['document_type'] ?? null,
|
|
|
- type: $raw['type'] ?? null,
|
|
|
- delinquent: $raw['delinquent'] ?? null,
|
|
|
-
|
|
|
- address: ! empty($raw['address'])
|
|
|
- ? new PagarmeCustomerAddressResponseData(
|
|
|
- id: $raw['address']['id'] ?? null,
|
|
|
- line1: $raw['address']['line_1'] ?? null,
|
|
|
- line2: $raw['address']['line_2'] ?? null,
|
|
|
- zipCode: $raw['address']['zip_code'] ?? null,
|
|
|
- city: $raw['address']['city'] ?? null,
|
|
|
- state: $raw['address']['state'] ?? null,
|
|
|
- country: $raw['address']['country'] ?? null,
|
|
|
- status: $raw['address']['status'] ?? null,
|
|
|
- createdAt: $raw['address']['created_at'] ?? null,
|
|
|
- updatedAt: $raw['address']['updated_at'] ?? null,
|
|
|
- )
|
|
|
- : null,
|
|
|
-
|
|
|
- phones: new PagarmeCustomerPhonesResponseData(
|
|
|
- homePhone: ! empty($raw['phones']['home_phone'])
|
|
|
- ? new PagarmePhoneResponseData(
|
|
|
- countryCode: $raw['phones']['home_phone']['country_code'] ?? null,
|
|
|
- areaCode: $raw['phones']['home_phone']['area_code'] ?? null,
|
|
|
- number: $raw['phones']['home_phone']['number'] ?? null,
|
|
|
- )
|
|
|
- : null,
|
|
|
- mobilePhone: ! empty($raw['phones']['mobile_phone'])
|
|
|
- ? new PagarmePhoneResponseData(
|
|
|
- countryCode: $raw['phones']['mobile_phone']['country_code'] ?? null,
|
|
|
- areaCode: $raw['phones']['mobile_phone']['area_code'] ?? null,
|
|
|
- number: $raw['phones']['mobile_phone']['number'] ?? null,
|
|
|
- )
|
|
|
- : null,
|
|
|
- ),
|
|
|
-
|
|
|
- createdAt: $raw['created_at'] ?? null,
|
|
|
- updatedAt: $raw['updated_at'] ?? null,
|
|
|
- );
|
|
|
- }
|
|
|
}
|