Skip to content

Commit 3a18ed0

Browse files
author
Prabhu Ram
committed
MC-36554: Customer should be able to re-use the payflowPro_cc_vault as payment method for subsequent orders
- minor fixes
1 parent 068ef60 commit 3a18ed0

File tree

3 files changed

+37
-25
lines changed

3 files changed

+37
-25
lines changed

app/code/Magento/PaypalGraphQl/Model/PayflowProCcVaultAdditionalDataProvider.php

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,41 @@
77

88
namespace Magento\PaypalGraphQl\Model;
99

10-
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
10+
use Magento\Framework\Stdlib\ArrayManager;
1111
use Magento\QuoteGraphQl\Model\Cart\Payment\AdditionalDataProviderInterface;
1212

1313
/**
14-
* Get payment additional data for Payflow pro payment
14+
* Get payment additional data for Payflow pro cc vault payment
1515
*/
1616
class PayflowProCcVaultAdditionalDataProvider implements AdditionalDataProviderInterface
1717
{
18-
private const PATH_ADDITIONAL_DATA = 'payflowpro_cc_vault';
18+
const CC_VAULT_CODE = 'payflowpro_cc_vault';
19+
20+
/**
21+
* @var ArrayManager
22+
*/
23+
private $arrayManager;
24+
1925
/**
20-
* Format Payflow input into value expected when setting payment method
26+
* @param ArrayManager $arrayManager
27+
*/
28+
public function __construct(
29+
ArrayManager $arrayManager
30+
) {
31+
$this->arrayManager = $arrayManager;
32+
}
33+
34+
/**
35+
* Returns additional data
2136
*
2237
* @param array $args
2338
* @return array
2439
*/
2540
public function getData(array $args): array
2641
{
27-
if (!isset($args[self::PATH_ADDITIONAL_DATA])) {
28-
throw new GraphQlInputException(
29-
__('Required parameter "payflowpro_cc_vault" for "payment_method" is missing.')
30-
);
42+
if (isset($args[self::CC_VAULT_CODE])) {
43+
return $args[self::CC_VAULT_CODE];
3144
}
32-
33-
if (!isset($args[self::PATH_ADDITIONAL_DATA]['public_hash'])) {
34-
throw new GraphQlInputException(
35-
__('Required parameter "public_hash" for "payflowpro_cc_vault" is missing.')
36-
);
37-
}
38-
39-
return $args[self::PATH_ADDITIONAL_DATA];
45+
return [];
4046
}
4147
}

app/code/Magento/PaypalGraphQl/Model/Plugin/Cart/PayflowProCcVault/SetPaymentMethodOnCart.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ public function afterExecute(
7070
$additionalData = $this->additionalDataProviderPool->getData(self::CC_VAULT_CODE, $additionalData);
7171
$customerId = (int) $cart->getCustomer()->getId();
7272
$payment = $cart->getPayment();
73-
if (!is_array($additionalData) || !isset($additionalData[PaymentTokenInterface::PUBLIC_HASH])) {
73+
if (!is_array($additionalData)
74+
|| !isset($additionalData[PaymentTokenInterface::PUBLIC_HASH])
75+
|| $customerId === 0
76+
) {
7477
return;
7578
}
7679
$tokenPublicHash = $additionalData[PaymentTokenInterface::PUBLIC_HASH];

app/code/Magento/PaypalGraphQl/Observer/PayflowProSetCcData.php

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
1414
use Magento\Payment\Observer\AbstractDataAssignObserver;
1515
use Magento\Quote\Api\Data\PaymentInterface;
16+
use Magento\Quote\Model\Quote\Payment;
1617

1718
/**
1819
* Class PayflowProSetCcData set CcData to quote payment
@@ -50,21 +51,23 @@ public function execute(Observer $observer)
5051
{
5152
$dataObject = $this->readDataArgument($observer);
5253
$additionalData = $dataObject->getData(PaymentInterface::KEY_ADDITIONAL_DATA);
54+
/**
55+
* @var Payment $paymentModel
56+
*/
5357
$paymentModel = $this->readPaymentModelArgument($observer);
58+
$customerId = (int)$paymentModel->getQuote()->getCustomer()->getId();
5459

5560
if (!isset($additionalData['cc_details'])) {
5661
return;
5762
}
5863

59-
if ($this->isPayflowProVaultEnable()) {
60-
if (!isset($additionalData[self::IS_ACTIVE_PAYMENT_TOKEN_ENABLER])) {
61-
$paymentModel->setData(self::IS_ACTIVE_PAYMENT_TOKEN_ENABLER, false);
64+
if ($this->isPayflowProVaultEnable() && $customerId !== 0) {
65+
if (isset($additionalData[self::IS_ACTIVE_PAYMENT_TOKEN_ENABLER])) {
66+
$paymentModel->setData(
67+
self::IS_ACTIVE_PAYMENT_TOKEN_ENABLER,
68+
$additionalData[self::IS_ACTIVE_PAYMENT_TOKEN_ENABLER]
69+
);
6270
}
63-
64-
$paymentModel->setData(
65-
self::IS_ACTIVE_PAYMENT_TOKEN_ENABLER,
66-
$additionalData[self::IS_ACTIVE_PAYMENT_TOKEN_ENABLER]
67-
);
6871
} else {
6972
$paymentModel->setData(self::IS_ACTIVE_PAYMENT_TOKEN_ENABLER, false);
7073
}

0 commit comments

Comments
 (0)