From 61ab4d0d2f8d549ca46767dff541fa65a49bf34e Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Thu, 26 Sep 2024 14:06:08 +0200 Subject: [PATCH] Move gateway reference generation to gateway checkout service --- src/Library/Economy/Payment/PaypalGateway.php | 7 +------ src/Service/GatewayCheckoutService.php | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Library/Economy/Payment/PaypalGateway.php b/src/Library/Economy/Payment/PaypalGateway.php index ff4690b..c8d44cc 100644 --- a/src/Library/Economy/Payment/PaypalGateway.php +++ b/src/Library/Economy/Payment/PaypalGateway.php @@ -224,18 +224,13 @@ class PaypalGateway implements GatewayInterface ]; } - private function getPaypalReference(GatewayCheckout $checkout, GatewayCharge $charge): string - { - return sprintf('CO%d-CH%d', $checkout->getId(), $charge->getId()); - } - private function getPaypalPurchaseUnits(GatewayCheckout $checkout): array { $units = []; foreach ($checkout->getCharges() as $charge) { $money = $this->getPaypalMoney($charge); - $reference = $this->getPaypalReference($checkout, $charge); + $reference = $this->checkoutService->getGatewayReference($checkout, $charge); $units[] = [ 'reference_id' => $reference, diff --git a/src/Service/GatewayCheckoutService.php b/src/Service/GatewayCheckoutService.php index 9c6ae9b..0da2e67 100644 --- a/src/Service/GatewayCheckoutService.php +++ b/src/Service/GatewayCheckoutService.php @@ -3,6 +3,8 @@ namespace App\Service; use App\Controller\GatewaysController; +use App\Entity\GatewayCharge; +use App\Entity\GatewayCheckout; use Symfony\Component\Routing\RouterInterface; class GatewayCheckoutService @@ -12,8 +14,7 @@ class GatewayCheckoutService public function __construct( private RouterInterface $router, - ) { - } + ) {} public function generateRedirectUrl(string $gateway, string $type = self::RESPONSE_TYPE_SUCCESS, array $parameters = []): string { @@ -26,4 +27,15 @@ class GatewayCheckoutService RouterInterface::ABSOLUTE_URL ); } + + public function getGatewayReference(GatewayCheckout $checkout, GatewayCharge $charge): string + { + return sprintf( + 'AO%d-CO%d-CH%d-AT%d', + $checkout->getOrigin()->getId(), + $checkout->getId(), + $charge->getId(), + $charge->getTarget()->getId() + ); + } }