diff --git a/Gateway/Response/ApplePay/VaultDetailsHandler.php b/Gateway/Response/ApplePay/VaultDetailsHandler.php new file mode 100755 index 0000000..1db8ab1 --- /dev/null +++ b/Gateway/Response/ApplePay/VaultDetailsHandler.php @@ -0,0 +1,63 @@ +subjectReader->readPayment($handlingSubject); + $transaction = $this->subjectReader->readTransaction($response); + $payment = $paymentDO->getPayment(); + + // add vault payment token entity to extension attributes + $paymentToken = $this->getVaultPaymentToken($transaction); + if (null !== $paymentToken) { + $extensionAttributes = $this->getExtensionAttributes($payment); + $extensionAttributes->setVaultPaymentToken($paymentToken); + } + } + + /** + * Get vault payment token entity + * + * @param Transaction $transaction + * @return PaymentTokenInterface|null + * @throws InputException + * @throws NoSuchEntityException + */ + protected function getVaultPaymentToken(Transaction $transaction) + { + // Check token existing in gateway response + $token = $transaction->creditCardDetails->token; + if (empty($token)) { + return null; + } + + /** @var PaymentTokenInterface $paymentToken */ + $paymentToken = $this->paymentTokenFactory->create(); + $paymentToken->setGatewayToken($token); + + + return $paymentToken; + } +} diff --git a/etc/config.xml b/etc/config.xml index 318de38..12daff1 100644 --- a/etc/config.xml +++ b/etc/config.xml @@ -176,7 +176,7 @@ 1 1 1 - 0 + 1 1 1 1 diff --git a/etc/di.xml b/etc/di.xml index a84eab9..970f451 100755 --- a/etc/di.xml +++ b/etc/di.xml @@ -661,6 +661,7 @@ BraintreeApplePayAuthorizeCommand BraintreeApplePaySaleCommand BraintreeApplePayCaptureStrategyCommand + BraintreeVaultCaptureCommand BraintreeCaptureCommand BraintreeVoidCommand BraintreeRefundCommand @@ -686,12 +687,19 @@ Magento\Braintree\Gateway\Validator\ResponseValidator + + + + Magento\Vault\Model\CreditCardTokenFactory + + Magento\Braintree\Model\ApplePay\PaymentDetailsHandler Magento\Braintree\Gateway\Response\CardDetailsHandler Magento\Braintree\Gateway\Response\TransactionIdHandler + Magento\Braintree\Gateway\Response\ApplePay\VaultDetailsHandler @@ -701,6 +709,7 @@ Magento\Braintree\Gateway\Request\CustomerDataBuilder Magento\Braintree\Gateway\Request\PaymentDataBuilder Magento\Braintree\Gateway\Request\ChannelDataBuilder + Magento\Braintree\Gateway\Request\VaultDataBuilder Magento\Braintree\Gateway\Request\AddressDataBuilder Magento\Braintree\Gateway\Request\DescriptorDataBuilder Magento\Braintree\Gateway\Request\Level23ProcessingDataBuilder