diff --git a/Block/Vault/CardRenderer.php b/Block/Vault/CardRenderer.php index a74fddcc..8f196528 100644 --- a/Block/Vault/CardRenderer.php +++ b/Block/Vault/CardRenderer.php @@ -4,7 +4,6 @@ use Magento\Vault\Api\Data\PaymentTokenInterface; use Magento\Vault\Block\AbstractCardRenderer; -use Swarming\SubscribePro\Gateway\Config\ApplePayConfigProvider; use Swarming\SubscribePro\Gateway\Config\ConfigProvider; use Swarming\SubscribePro\Helper\Vault as VaultHelper; @@ -12,11 +11,11 @@ class CardRenderer extends AbstractCardRenderer { /** * @param \Magento\Vault\Api\Data\PaymentTokenInterface $token - * @return boolean + * @return bool */ public function canRender(PaymentTokenInterface $token) { - return ($token->getPaymentMethodCode() === ConfigProvider::CODE); + return $token->getPaymentMethodCode() === ConfigProvider::CODE; } /** @@ -67,16 +66,4 @@ public function isPending() $state = $this->getTokenDetails()['state'] ?? null; return $state === VaultHelper::STATE_PENDING; } - - /** - * @return string - */ - public function getApplePayLabel() - { - $label = ''; - if ($this->getToken()->getPaymentMethodCode() === ApplePayConfigProvider::CODE) { - $label = '(' . __('ApplePay') . ')'; - } - return $label; - } } diff --git a/Model/Quote/Payment/GetPaymentProfileId.php b/Model/Quote/Payment/GetPaymentProfileId.php index e22d71ee..fb68a3e3 100644 --- a/Model/Quote/Payment/GetPaymentProfileId.php +++ b/Model/Quote/Payment/GetPaymentProfileId.php @@ -10,6 +10,7 @@ use SubscribePro\Service\Address\AddressInterface; use SubscribePro\Service\PaymentProfile\PaymentProfileInterface; use Swarming\SubscribePro\Gateway\Config\ConfigProvider as SubscribeProConfigProvider; +use Swarming\SubscribePro\Gateway\Config\ApplePayConfigProvider; class GetPaymentProfileId { @@ -28,6 +29,14 @@ class GetPaymentProfileId */ private $paymentProfileDataBuilder; + /** + * @var string[] + */ + private $sproPaymentMethods = [ + SubscribeProConfigProvider::CODE, + ApplePayConfigProvider::CODE + ]; + /** * @param \Magento\Vault\Api\PaymentTokenManagementInterface $tokenManagement * @param \Swarming\SubscribePro\Platform\Service\PaymentProfile $platformPaymentProfileService @@ -56,7 +65,7 @@ public function execute(OrderPaymentInterface $payment, int $platformCustomerId) throw new \UnexpectedValueException('The vault is not found.'); } - return $paymentToken->getPaymentMethodCode() === SubscribeProConfigProvider::CODE + return in_array($paymentToken->getPaymentMethodCode(), $this->sproPaymentMethods, true) ? $paymentToken->getGatewayToken() : $this->getExternalProfileId($paymentToken, $payment->getOrder(), $platformCustomerId); } diff --git a/Observer/Payment/TokenAssigner.php b/Observer/Payment/TokenAssigner.php index 85c1cda2..f23b852f 100644 --- a/Observer/Payment/TokenAssigner.php +++ b/Observer/Payment/TokenAssigner.php @@ -1,14 +1,16 @@ getData(PaymentInterface::KEY_ADDITIONAL_DATA); - if (!is_array($additionalData) || !isset($additionalData[VaultDataBuilder::PAYMENT_PROFILE_ID])) { + $paymentProfileId = $additionalData['profile_id'] ?? null; + if (empty($paymentProfileId)) { return; } - $profileId = $additionalData[VaultDataBuilder::PAYMENT_PROFILE_ID]; - /** @var \Magento\Quote\Model\Quote\Payment $paymentModel */ $paymentModel = $this->readPaymentModelArgument($observer); if (!$paymentModel instanceof QuotePayment) { @@ -54,7 +55,11 @@ public function execute(Observer $observer) return; } - $paymentToken = $this->paymentTokenManagement->getByGatewayToken($profileId, ConfigProvider::CODE, $customerId); + $paymentToken = $this->paymentTokenManagement->getByGatewayToken( + $paymentProfileId, + $this->getPaymentMethodCode($additionalData), + $customerId + ); if ($paymentToken === null) { return; } @@ -76,4 +81,26 @@ public function execute(Observer $observer) ); } } + + /** + * @param array $additionalData + * @return string + */ + private function getPaymentMethodCode(array $additionalData): string + { + $paymentMethodType = $additionalData['payment_method_type'] ?? ''; + + switch ($paymentMethodType) { + case 'apple_pay': + $paymentMethodCode = ApplePayConfigProvider::CODE; + break; + case 'credit_card': + default: + $paymentMethodCode = ConfigProvider::CODE; + break; + + } + + return $paymentMethodCode; + } } diff --git a/Service/OrderCallback/DataBuilder.php b/Service/OrderCallback/DataBuilder.php index 478f58cd..7f1e985d 100644 --- a/Service/OrderCallback/DataBuilder.php +++ b/Service/OrderCallback/DataBuilder.php @@ -151,6 +151,7 @@ public function importPaymentData( $quotePayment->setMethod($paymentMethodVault); $quotePayment->getMethodInstance(); + $paymentAdditionalData['payment_method_type'] = $this->getValue($paymentData, 'paymentMethodType'); $paymentAdditionalData['profile_id'] = $this->getValue($paymentData, 'paymentProfileId'); $paymentAdditionalData['cc_type'] = $this->getValue($paymentData, 'creditcardType'); $paymentAdditionalData['cc_number'] = $this->getValue($paymentData, 'creditcardLastDigits'); @@ -180,7 +181,7 @@ private function getPaymentTokenObject( $paymentToken = null; foreach ($allowedPaymentCodes as $paymentCode) { - /** @var Magento\Vault\Api\Data\PaymentTokenInterface $paymentToken */ + /** @var \Magento\Vault\Api\Data\PaymentTokenInterface $paymentToken */ $paymentToken = $this->paymentTokenManagement->getByGatewayToken( $paymentTokenValue, $paymentCode, diff --git a/etc/di.xml b/etc/di.xml old mode 100755 new mode 100644 index 36ba2e72..3a3bcd9c --- a/etc/di.xml +++ b/etc/di.xml @@ -543,17 +543,12 @@ Swarming\SubscribePro\Model\VirtualLogger - + Swarming\SubscribePro\Model\VirtualLogger - - - Swarming\SubscribePro\Model\VirtualLogger - - - + Swarming\SubscribePro\Model\VirtualLogger diff --git a/view/frontend/templates/vault/card_render.phtml b/view/frontend/templates/vault/card_render.phtml index f5ac2275..072db185 100644 --- a/view/frontend/templates/vault/card_render.phtml +++ b/view/frontend/templates/vault/card_render.phtml @@ -12,7 +12,6 @@ $ccNumberView = $block->escapeHtml($block->getNumberLast4Digits()); isPending()): ?> escapeHtml(__('pending')) ?> - escapeHtml($block->getApplePayLabel()) ?> escapeHtml($block->getExpDate()) ?>