Skip to content

Commit fe46f69

Browse files
author
Spandana Chittimala
committed
Merge branch 'MAGETWO-99035' of https://github.com/magento-mpi/magento2ce into PR-05-29-2019
2 parents 0f2e60c + 7a0776f commit fe46f69

File tree

4 files changed

+248
-367
lines changed

4 files changed

+248
-367
lines changed

app/code/Magento/Paypal/Model/Cart.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
/**
1111
* PayPal-specific model for shopping cart items and totals
12+
*
1213
* The main idea is to accommodate all possible totals into PayPal-compatible 4 totals and line items
1314
*/
1415
class Cart extends \Magento\Payment\Model\Cart
@@ -179,7 +180,7 @@ protected function _applyDiscountTaxCompensationWorkaround(
179180
) {
180181
$dataContainer = $salesEntity->getTaxContainer();
181182
$this->addTax((double)$dataContainer->getBaseDiscountTaxCompensationAmount());
182-
$this->addTax((double)$dataContainer->getBaseShippingDiscountTaxCompensationAmount());
183+
$this->addTax((double)$dataContainer->getBaseShippingDiscountTaxCompensationAmnt());
183184
}
184185

185186
/**

app/code/Magento/Paypal/Model/Payflow/Transparent.php

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
67

78
namespace Magento\Paypal\Model\Payflow;
89

@@ -59,6 +60,11 @@ class Transparent extends Payflowpro implements TransparentInterface
5960
*/
6061
private $paymentExtensionFactory;
6162

63+
/**
64+
* @var \Magento\Paypal\Model\CartFactory
65+
*/
66+
private $payPalCartFactory;
67+
6268
/**
6369
* @param \Magento\Framework\Model\Context $context
6470
* @param \Magento\Framework\Registry $registry
@@ -76,6 +82,7 @@ class Transparent extends Payflowpro implements TransparentInterface
7682
* @param ResponseValidator $responseValidator
7783
* @param PaymentTokenInterfaceFactory $paymentTokenFactory
7884
* @param OrderPaymentExtensionInterfaceFactory $paymentExtensionFactory
85+
* @param \Magento\Paypal\Model\CartFactory $payPalCartFactory
7986
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
8087
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
8188
* @param array $data
@@ -98,6 +105,7 @@ public function __construct(
98105
ResponseValidator $responseValidator,
99106
PaymentTokenInterfaceFactory $paymentTokenFactory,
100107
OrderPaymentExtensionInterfaceFactory $paymentExtensionFactory,
108+
\Magento\Paypal\Model\CartFactory $payPalCartFactory,
101109
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
102110
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
103111
array $data = []
@@ -123,9 +131,12 @@ public function __construct(
123131
$this->responseValidator = $responseValidator;
124132
$this->paymentTokenFactory = $paymentTokenFactory;
125133
$this->paymentExtensionFactory = $paymentExtensionFactory;
134+
$this->payPalCartFactory = $payPalCartFactory;
126135
}
127136

128137
/**
138+
* Gets response validator instance.
139+
*
129140
* @return ResponseValidator
130141
*/
131142
public function getResponceValidator()
@@ -162,13 +173,19 @@ public function authorize(InfoInterface $payment, $amount)
162173
$this->addRequestOrderInfo($request, $order);
163174
$request = $this->fillCustomerContacts($order, $request);
164175

176+
/** @var \Magento\Paypal\Model\Cart $payPalCart */
177+
$payPalCart = $this->payPalCartFactory->create(['salesModel' => $order]);
178+
$payPalCart->getAmounts();
179+
165180
$token = $payment->getAdditionalInformation(self::PNREF);
166181
$request->setData('trxtype', self::TRXTYPE_AUTH_ONLY);
167182
$request->setData('origid', $token);
168183
$request->setData('amt', $this->formatPrice($amount));
169184
$request->setData('currency', $order->getBaseCurrencyCode());
170-
$request->setData('taxamt', $this->formatPrice($order->getBaseTaxAmount()));
171-
$request->setData('freightamt', $this->formatPrice($order->getBaseShippingAmount()));
185+
$request->setData('itemamt', $this->formatPrice($payPalCart->getSubtotal()));
186+
$request->setData('taxamt', $this->formatPrice($payPalCart->getTax()));
187+
$request->setData('freightamt', $this->formatPrice($payPalCart->getShipping()));
188+
$request->setData('discount', $this->formatPrice($payPalCart->getDiscount()));
172189

173190
$response = $this->postRequest($request, $this->getConfig());
174191
$this->processErrors($response);
@@ -178,6 +195,7 @@ public function authorize(InfoInterface $payment, $amount)
178195
} catch (LocalizedException $exception) {
179196
$payment->setParentTransactionId($response->getData(self::PNREF));
180197
$this->void($payment);
198+
// phpcs:ignore Magento2.Exceptions.DirectThrow
181199
throw new LocalizedException(__("The payment couldn't be processed at this time. Please try again later."));
182200
}
183201

@@ -200,10 +218,12 @@ public function getConfigInterface()
200218
}
201219

202220
/**
221+
* Creates vault payment token.
222+
*
203223
* @param Payment $payment
204224
* @param string $token
205-
* @throws LocalizedException
206225
* @return void
226+
* @throws \Exception
207227
*/
208228
protected function createPaymentToken(Payment $payment, $token)
209229
{
@@ -222,8 +242,11 @@ protected function createPaymentToken(Payment $payment, $token)
222242
}
223243

224244
/**
245+
* Generates CC expiration date by year and month provided in payment.
246+
*
225247
* @param Payment $payment
226248
* @return string
249+
* @throws \Exception
227250
*/
228251
private function getExpirationDate(Payment $payment)
229252
{
@@ -242,6 +265,8 @@ private function getExpirationDate(Payment $payment)
242265
}
243266

244267
/**
268+
* Returns payment extension attributes instance.
269+
*
245270
* @param Payment $payment
246271
* @return \Magento\Sales\Api\Data\OrderPaymentExtensionInterface
247272
*/

app/code/Magento/Paypal/Test/Unit/Model/CartTest.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
use Magento\Paypal\Model\Cart;
99

10+
/**
11+
* @see \Magento\Paypal\Model\Cart
12+
*/
1013
class CartTest extends \PHPUnit\Framework\TestCase
1114
{
1215
/**
@@ -70,7 +73,7 @@ protected function setUp()
7073
public function testInvalidGetAllItems($items)
7174
{
7275
$taxContainer = new \Magento\Framework\DataObject(
73-
['base_discount_tax_compensation_amount' => 0.2, 'base_shipping_discount_tax_compensation_amount' => 0.1]
76+
['base_discount_tax_compensation_amount' => 0.2, 'base_shipping_discount_tax_compensation_amnt' => 0.1]
7477
);
7578
$this->_salesModel->expects($this->once())->method('getTaxContainer')->will($this->returnValue($taxContainer));
7679
$this->_salesModel->expects($this->once())->method('getAllItems')->will($this->returnValue($items));
@@ -146,7 +149,7 @@ public function testInvalidTotalsGetAllItems($values, $transferDiscount)
146149
$this->assertEquals(
147150
$values['base_tax_amount'] +
148151
$values['base_discount_tax_compensation_amount'] +
149-
$values['base_shipping_discount_tax_compensation_amount'],
152+
$values['base_shipping_discount_tax_compensation_amnt'],
150153
$this->_model->getTax()
151154
);
152155
$this->assertEquals($values['base_shipping_amount'], $this->_model->getShipping());
@@ -162,7 +165,7 @@ public function invalidTotalsGetAllItemsDataProvider()
162165
[
163166
[
164167
'base_discount_tax_compensation_amount' => 0,
165-
'base_shipping_discount_tax_compensation_amount' => 0,
168+
'base_shipping_discount_tax_compensation_amnt' => 0,
166169
'base_subtotal' => 0,
167170
'base_tax_amount' => 0,
168171
'base_shipping_amount' => 0,
@@ -174,7 +177,7 @@ public function invalidTotalsGetAllItemsDataProvider()
174177
[
175178
[
176179
'base_discount_tax_compensation_amount' => 1,
177-
'base_shipping_discount_tax_compensation_amount' => 2,
180+
'base_shipping_discount_tax_compensation_amnt' => 2,
178181
'base_subtotal' => 3,
179182
'base_tax_amount' => 4,
180183
'base_shipping_amount' => 5,
@@ -255,8 +258,8 @@ protected function _prepareInvalidModelData($values, $transferDiscount)
255258
[
256259
'base_discount_tax_compensation_amount' =>
257260
$values['base_discount_tax_compensation_amount'],
258-
'base_shipping_discount_tax_compensation_amount' =>
259-
$values['base_shipping_discount_tax_compensation_amount'],
261+
'base_shipping_discount_tax_compensation_amnt' =>
262+
$values['base_shipping_discount_tax_compensation_amnt'],
260263
]
261264
);
262265
$expectedSubtotal = $values['base_subtotal'];

0 commit comments

Comments
 (0)