Skip to content

Commit 163044a

Browse files
committed
Merge pull request #374 from magento-mpi/MAGETWO-32921
MAGETWO-32921: Adapt Payment\Gateway framework to client requirement
2 parents a8f1eaa + bea42f6 commit 163044a

File tree

59 files changed

+1029
-195
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1029
-195
lines changed

app/code/Magento/Payment/Block/Info.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class Info extends \Magento\Framework\View\Element\Template
1515
*
1616
* @var \Magento\Framework\Object
1717
*/
18-
protected $_paymentSpecificInformation = null;
18+
protected $_paymentSpecificInformation;
1919

2020
/**
2121
* @var string
@@ -152,10 +152,6 @@ protected function _prepareSpecificInformation($transport = null)
152152
} elseif (is_array($transport)) {
153153
$transport = new \Magento\Framework\Object($transport);
154154
}
155-
$this->_eventManager->dispatch(
156-
'payment_info_block_prepare_specific_information',
157-
['transport' => $transport, 'payment' => $this->getInfo(), 'block' => $this]
158-
);
159155
$this->_paymentSpecificInformation = $transport;
160156
}
161157
return $this->_paymentSpecificInformation;

app/code/Magento/Payment/Block/Transparent/Form.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Payment\Block\Transparent;
77

88
use Magento\Framework\Exception\LocalizedException;
9+
use Magento\Payment\Model\Method\Adapter;
910
use Magento\Payment\Model\Method\TransparentInterface;
1011
use Magento\Checkout\Model\Session;
1112
use Magento\Payment\Model\Config;
@@ -168,7 +169,11 @@ public function getCgiUrl()
168169
*/
169170
public function getMethodConfigData($fieldName)
170171
{
171-
return $this->getMethod()->getConfigInterface()->getValue($fieldName);
172+
$method = $this->getMethod();
173+
if ($method instanceof TransparentInterface) {
174+
return $method->getConfigInterface()->getValue($fieldName);
175+
}
176+
return $method->getConfigData($fieldName);
172177
}
173178

174179
/**
@@ -181,7 +186,7 @@ public function getMethod()
181186
{
182187
$method = parent::getMethod();
183188

184-
if (!$method instanceof TransparentInterface) {
189+
if (!$method instanceof TransparentInterface && !$method instanceof Adapter) {
185190
throw new LocalizedException(
186191
__('We cannot retrieve the transparent payment method model object.')
187192
);

app/code/Magento/Payment/Block/Transparent/Iframe.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
*/
1313
class Iframe extends \Magento\Framework\View\Element\Template
1414
{
15+
const REGISTRY_KEY = 'transparent_form_params';
16+
1517
/**
1618
* Core registry
1719
*
@@ -42,10 +44,8 @@ public function __construct(
4244
*/
4345
protected function _prepareLayout()
4446
{
45-
if ($this->hasRegistryKey()) {
46-
$params = $this->coreRegistry->registry($this->getRegistryKey());
47-
$this->setParams($params);
48-
}
47+
$params = $this->coreRegistry->registry(self::REGISTRY_KEY);
48+
$this->setParams($params);
4949
return parent::_prepareLayout();
5050
}
5151
}

app/code/Magento/Payment/Gateway/Command/CommandPool.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,29 @@
88
use Magento\Framework\ObjectManager\TMap;
99
use Magento\Payment\Gateway\CommandInterface;
1010
use Magento\Framework\Exception\NotFoundException;
11+
use Magento\Framework\ObjectManager\TMapFactory;
1112

1213
class CommandPool implements CommandPoolInterface
1314
{
1415
/**
15-
* @var CommandInterface[]
16+
* @var CommandInterface[] | TMap
1617
*/
1718
private $commands;
1819

1920
/**
20-
* @param TMap $commands
21+
* @param array $commands
22+
* @param TMapFactory $tmapFactory
2123
*/
2224
public function __construct(
23-
TMap $commands
25+
array $commands,
26+
TMapFactory $tmapFactory
2427
) {
25-
$this->commands = $commands;
28+
$this->commands = $tmapFactory->create(
29+
[
30+
'array' => $commands,
31+
'type' => 'Magento\Payment\Gateway\CommandInterface'
32+
]
33+
);
2634
}
2735

2836
/**

app/code/Magento/Payment/Gateway/Command/GatewayCommand.php

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,66 +7,83 @@
77

88
use Magento\Payment\Gateway\CommandInterface;
99
use Magento\Payment\Gateway\Http\ClientInterface;
10+
use Magento\Payment\Gateway\Http\TransferFactoryInterface;
1011
use Magento\Payment\Gateway\Request;
12+
use Magento\Payment\Gateway\Request\BuilderInterface;
1113
use Magento\Payment\Gateway\Response;
14+
use Magento\Payment\Gateway\Response\HandlerInterface;
15+
use Magento\Payment\Gateway\Validator\ValidatorInterface;
1216

1317
class GatewayCommand implements CommandInterface
1418
{
1519
/**
16-
* @var \Magento\Payment\Gateway\Request\BuilderInterface
20+
* @var BuilderInterface
1721
*/
1822
private $requestBuilder;
1923

2024
/**
21-
* @var \Magento\Payment\Gateway\Http\TransferBuilderInterface
25+
* @var TransferFactoryInterface
2226
*/
23-
private $transferBuilder;
27+
private $transferFactory;
2428

2529
/**
26-
* @var \Magento\Payment\Gateway\Http\ClientInterface
30+
* @var ClientInterface
2731
*/
28-
private $gateway;
32+
private $client;
2933

3034
/**
31-
* @var \Magento\Payment\Gateway\Response\HandlerInterface
35+
* @var HandlerInterface
3236
*/
33-
private $responseHandler;
37+
private $handler;
3438

3539
/**
36-
* @param \Magento\Payment\Gateway\Request\BuilderInterface $requestBuilder
37-
* @param \Magento\Payment\Gateway\Http\TransferBuilderInterface $transferBuilder
38-
* @param \Magento\Payment\Gateway\Http\ClientInterface $gateway
39-
* @param \Magento\Payment\Gateway\Response\HandlerInterface $responseHandler
40+
* @var ValidatorInterface
41+
*/
42+
private $validator;
43+
44+
/**
45+
* @param BuilderInterface $requestBuilder
46+
* @param TransferFactoryInterface $transferFactory
47+
* @param ClientInterface $client
48+
* @param HandlerInterface $handler
49+
* @param ValidatorInterface $validator
4050
*/
4151
public function __construct(
42-
\Magento\Payment\Gateway\Request\BuilderInterface $requestBuilder,
43-
\Magento\Payment\Gateway\Http\TransferBuilderInterface $transferBuilder,
44-
ClientInterface $gateway,
45-
\Magento\Payment\Gateway\Response\HandlerInterface $responseHandler
52+
BuilderInterface $requestBuilder,
53+
TransferFactoryInterface $transferFactory,
54+
ClientInterface $client,
55+
HandlerInterface $handler,
56+
ValidatorInterface $validator
4657
) {
47-
4858
$this->requestBuilder = $requestBuilder;
49-
$this->transferBuilder = $transferBuilder;
50-
$this->gateway = $gateway;
51-
$this->responseHandler = $responseHandler;
59+
$this->transferFactory = $transferFactory;
60+
$this->client = $client;
61+
$this->handler = $handler;
62+
$this->validator = $validator;
5263
}
5364

5465
/**
5566
* Executes command basing on business object
5667
*
5768
* @param array $commandSubject
58-
* @return void
69+
* @return null
5970
*/
6071
public function execute(array $commandSubject)
6172
{
6273
// @TODO implement exceptions catching
63-
$transferO = $this->transferBuilder->build(
74+
$transferO = $this->transferFactory->create(
6475
$this->requestBuilder->build($commandSubject)
6576
);
6677

67-
$response = $this->gateway->placeRequest($transferO);
78+
$response = $this->client->placeRequest($transferO);
79+
80+
$result = $this->validator->validate(array_merge($commandSubject, ['response' => $response]));
81+
if ($result !== null && !$result->isValid()) {
82+
$commandSubject['payment']->getPayment()->setIsTransactionPending(true);
83+
return;
84+
}
6885

69-
$this->responseHandler->handle(
86+
$this->handler->handle(
7087
$commandSubject,
7188
$response
7289
);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Payment\Gateway\Command\Result;
7+
8+
use Magento\Payment\Gateway\Command\ResultInterface;
9+
10+
class ArrayResult implements ResultInterface
11+
{
12+
/**
13+
* @var array
14+
*/
15+
private $array;
16+
17+
/**
18+
* @param array $array
19+
*/
20+
public function __construct(array $array = [])
21+
{
22+
$this->array = $array;
23+
}
24+
25+
/**
26+
* Returns result interpretation
27+
*
28+
* @return array
29+
*/
30+
public function get()
31+
{
32+
return $this->array;
33+
}
34+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Payment\Gateway\Command;
7+
8+
interface ResultInterface
9+
{
10+
/**
11+
* Returns result interpretation
12+
*
13+
* @return mixed
14+
*/
15+
public function get();
16+
}

app/code/Magento/Payment/Gateway/CommandInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ interface CommandInterface
1111
* Executes command basing on business object
1212
*
1313
* @param array $commandSubject
14-
* @return void
14+
* @return null|Command\ResultInterface
1515
*/
1616
public function execute(array $commandSubject);
1717
}

app/code/Magento/Payment/Gateway/Config/ValueHandlerPool.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Payment\Gateway\Config;
77

88
use Magento\Framework\ObjectManager\TMap;
9+
use Magento\Framework\ObjectManager\TMapFactory;
910

1011
class ValueHandlerPool implements \Magento\Payment\Gateway\Config\ValueHandlerPoolInterface
1112
{
@@ -15,21 +16,28 @@ class ValueHandlerPool implements \Magento\Payment\Gateway\Config\ValueHandlerPo
1516
const DEFAULT_HANDLER = 'default';
1617

1718
/**
18-
* @var ValueHandlerInterface[]
19+
* @var ValueHandlerInterface[] | TMap
1920
*/
2021
private $handlers;
2122

2223
/**
23-
* @param TMap $handlers
24+
* @param array $handlers
25+
* @param TMapFactory $tmapFactory
2426
*/
2527
public function __construct(
26-
TMap $handlers
28+
array $handlers,
29+
TMapFactory $tmapFactory
2730
) {
2831
if (!isset($handlers[self::DEFAULT_HANDLER])) {
2932
throw new \LogicException('Default handler should be provided.');
3033
}
3134

32-
$this->handlers = $handlers;
35+
$this->handlers = $tmapFactory->create(
36+
[
37+
'array' => $handlers,
38+
'type' => 'Magento\Payment\Gateway\Config\ValueHandlerInterface'
39+
]
40+
);
3341
}
3442

3543
/**

app/code/Magento/Payment/Gateway/Data/AddressAdapterInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface AddressAdapterInterface
1212
*
1313
* @return string
1414
*/
15-
public function getRegion();
15+
public function getRegionCode();
1616

1717
/**
1818
* Get country id

0 commit comments

Comments
 (0)