diff --git a/src/Action/ConvertPaymentAction.php b/src/Action/ConvertPaymentAction.php index e65e2e3..24ddde9 100644 --- a/src/Action/ConvertPaymentAction.php +++ b/src/Action/ConvertPaymentAction.php @@ -38,19 +38,9 @@ public function execute($request): void /** @var PaymentInterface $payment */ $payment = $request->getSource(); $details = Model::ensureArrayObject($payment->getDetails()); - $details->replace( - [ - ModelFields::TOTAL_AMOUNT => $payment->getTotalAmount(), - ModelFields::CURRENCY => $payment->getCurrencyCode(), - ModelFields::EXT_ORDER_ID => $details->extOrderId() ?? $payment->getNumber(), - ModelFields::DESCRIPTION => $payment->getDescription(), - ModelFields::CLIENT_EMAIL => $payment->getClientEmail(), - ModelFields::CLIENT_ID => $payment->getClientId(), - ModelFields::CUSTOMER_IP => $this->userIpService->getIp(), - ModelFields::CREDIT_CARD_MASKED_NUMBER => $payment->getCreditCard() ? $payment->getCreditCard()->getMaskedNumber() : null, - ModelFields::VALIDITY_TIME => $details->validityTime() ?? self::DEFAULT_VALIDITY_TIME, - ] - ); + + $this->replaceModelFields($details, $payment); + if ($payment instanceof Payment) { $details->setConfigKey($payment->getConfigKey()); @@ -105,4 +95,28 @@ public function supports($request): bool && $request->getSource() instanceof PaymentInterface && 'array' === $request->getTo(); } + + private function replaceModelFields(Model $details, PaymentInterface $payment): void + { + if (null === $details->customerIp()) { + $details->replace( + [ + ModelFields::CUSTOMER_IP => $this->userIpService->getIp(), + ] + ); + } + + $details->replace( + [ + ModelFields::TOTAL_AMOUNT => $payment->getTotalAmount(), + ModelFields::CURRENCY => $payment->getCurrencyCode(), + ModelFields::EXT_ORDER_ID => $details->extOrderId() ?? $payment->getNumber(), + ModelFields::DESCRIPTION => $payment->getDescription(), + ModelFields::CLIENT_EMAIL => $payment->getClientEmail(), + ModelFields::CLIENT_ID => $payment->getClientId(), + ModelFields::CREDIT_CARD_MASKED_NUMBER => $payment->getCreditCard() ? $payment->getCreditCard()->getMaskedNumber() : null, + ModelFields::VALIDITY_TIME => $details->validityTime() ?? self::DEFAULT_VALIDITY_TIME, + ] + ); + } }