Skip to content

Commit 1b58d9d

Browse files
author
Prabhu Ram
committed
MC-17411: Add plugins/update existing ones to support the Payflow Pro
- review comments
1 parent ddf85bf commit 1b58d9d

File tree

4 files changed

+23
-20
lines changed

4 files changed

+23
-20
lines changed

app/code/Magento/PaypalGraphQl/Model/PaypalAdditionalDataProvider.php renamed to app/code/Magento/PaypalGraphQl/Model/PayflowProAdditionalDataProvider.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@
99

1010
use Magento\Framework\Stdlib\ArrayManager;
1111
use Magento\QuoteGraphQl\Model\Cart\Payment\AdditionalDataProviderInterface;
12+
use Magento\Paypal\Model\Config;
1213

1314
/**
14-
* Get payment additional data for Paypal Express payment
15+
* Get payment additional data for Payflow pro payment
1516
*/
16-
class PaypalAdditionalDataProvider implements AdditionalDataProviderInterface
17+
class PayflowProAdditionalDataProvider implements AdditionalDataProviderInterface
1718
{
1819

19-
private const PATH_ADDITIONAL_DATA = 'input/payment_method/additional_data';
20-
2120
/**
2221
* @var ArrayManager
2322
*/
@@ -40,8 +39,9 @@ public function __construct(
4039
*/
4140
public function getData(array $args): array
4241
{
43-
$additionalData = $this->arrayManager->get(self::PATH_ADDITIONAL_DATA, $args) ?? [];
44-
45-
return $additionalData;
42+
if (isset($args[Config::METHOD_PAYFLOWPRO])) {
43+
return $args[Config::METHOD_PAYFLOWPRO];
44+
}
45+
return [];
4646
}
4747
}

app/code/Magento/PaypalGraphQl/Model/Plugin/Resolver/SetPaymentMethodOnCart.php

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use Magento\Framework\GraphQl\Config\Element\Field;
1515
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
1616
use Magento\Paypal\Model\Express\Checkout\Factory as CheckoutFactory;
17-
use Magento\PaypalGraphQl\Model\PaypalAdditionalDataProvider;
1817
use Magento\Framework\Stdlib\ArrayManager;
1918
use Magento\PaypalGraphQl\Model\Provider\Checkout as CheckoutProvider;
2019
use Magento\PaypalGraphQl\Model\Provider\Config as ConfigProvider;
@@ -26,18 +25,15 @@ class SetPaymentMethodOnCart
2625
{
2726
private const PATH_CODE = 'input/payment_method/code';
2827

28+
private const PATH_ADDITIONAL_DATA = 'input/payment_method/additional_data';
29+
2930
private $allowedPaymentMethodCodes = [];
3031

3132
/**
3233
* @var CheckoutFactory
3334
*/
3435
private $checkoutFactory;
3536

36-
/**
37-
* @var PaypalAdditionalDataProvider
38-
*/
39-
private $paypalAdditionalDataProvider;
40-
4137
/**
4238
* @var ArrayManager
4339
*/
@@ -55,22 +51,19 @@ class SetPaymentMethodOnCart
5551

5652
/**
5753
* @param CheckoutFactory $checkoutFactory
58-
* @param PaypalAdditionalDataProvider $paypalAdditionalDataProvider
5954
* @param ArrayManager $arrayManager
6055
* @param CheckoutProvider $checkoutProvider
6156
* @param ConfigProvider $configProvider
6257
* @param array $allowedPaymentMethodCodes
6358
*/
6459
public function __construct(
6560
CheckoutFactory $checkoutFactory,
66-
PaypalAdditionalDataProvider $paypalAdditionalDataProvider,
6761
ArrayManager $arrayManager,
6862
CheckoutProvider $checkoutProvider,
6963
ConfigProvider $configProvider,
7064
array $allowedPaymentMethodCodes = []
7165
) {
7266
$this->checkoutFactory = $checkoutFactory;
73-
$this->paypalAdditionalDataProvider = $paypalAdditionalDataProvider;
7467
$this->arrayManager = $arrayManager;
7568
$this->checkoutProvider = $checkoutProvider;
7669
$this->configProvider = $configProvider;
@@ -105,7 +98,7 @@ public function afterResolve(
10598
return $resolvedValue;
10699
}
107100

108-
$paypalAdditionalData = $this->paypalAdditionalDataProvider->getData($args);
101+
$paypalAdditionalData = $this->arrayManager->get(self::PATH_ADDITIONAL_DATA, $args) ?? [];
109102
$payerId = $paypalAdditionalData[$paymentCode]['payer_id'] ?? null;
110103
$token = $paypalAdditionalData[$paymentCode]['token'] ?? null;
111104
$cart = $resolvedValue['cart']['model'];

app/code/Magento/PaypalGraphQl/Model/Resolver/PayflowProResponse.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Magento\Framework\Exception\LocalizedException;
2020
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
2121
use Magento\Framework\Stdlib\Parameters;
22+
use Magento\Framework\DataObjectFactory;
2223

2324
/**
2425
* Resolver for handling PayflowPro response
@@ -62,13 +63,20 @@ class PayflowProResponse implements ResolverInterface
6263
private $parameters;
6364

6465
/**
66+
* @var DataObjectFactory
67+
*/
68+
private $dataObjectFactory;
69+
70+
/**
71+
* PayflowProResponse constructor.
6572
* @param Transaction $transaction
6673
* @param ResponseValidator $responseValidator
6774
* @param PaymentFailuresInterface $paymentFailures
6875
* @param Json $json
6976
* @param Transparent $transparent
7077
* @param GetCartForUser $getCartForUser
7178
* @param Parameters $parameters
79+
* @param DataObjectFactory $dataObjectFactory
7280
*/
7381
public function __construct(
7482
Transaction $transaction,
@@ -77,7 +85,8 @@ public function __construct(
7785
Json $json,
7886
Transparent $transparent,
7987
GetCartForUser $getCartForUser,
80-
Parameters $parameters
88+
Parameters $parameters,
89+
DataObjectFactory $dataObjectFactory
8190
) {
8291
$this->transaction = $transaction;
8392
$this->responseValidator = $responseValidator;
@@ -86,6 +95,7 @@ public function __construct(
8695
$this->transparent = $transparent;
8796
$this->getCartForUser = $getCartForUser;
8897
$this->parameters = $parameters;
98+
$this->dataObjectFactory = $dataObjectFactory;
8999
}
90100

91101
/**
@@ -115,7 +125,7 @@ public function resolve(
115125
$this->parameters->fromString(urldecode($paypalPayload));
116126
$data = $this->parameters->toArray();
117127
try {
118-
$do = new \Magento\Framework\DataObject(array_change_key_case($data, CASE_LOWER));
128+
$do = $this->dataObjectFactory->create(['data' => array_change_key_case($data, CASE_LOWER)]);
119129
$this->responseValidator->validate($do, $this->transparent);
120130
$this->transaction->savePaymentInQuote($do, $cart->getId());
121131
} catch (LocalizedException $exception) {

app/code/Magento/PaypalGraphQl/etc/graphql/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<type name="Magento\QuoteGraphQl\Model\Cart\Payment\AdditionalDataProviderPool">
4040
<arguments>
4141
<argument name="dataProviders" xsi:type="array">
42-
<item name="payflowpro" xsi:type="object">\Magento\PaypalGraphQl\Model\PaypalAdditionalDataProvider</item>
42+
<item name="payflowpro" xsi:type="object">\Magento\PaypalGraphQl\Model\PayflowProAdditionalDataProvider</item>
4343
</argument>
4444
</arguments>
4545
</type>

0 commit comments

Comments
 (0)