Skip to content

Commit

Permalink
Merge branch 'hotfix/2.4.8'
Browse files Browse the repository at this point in the history
  • Loading branch information
Nabil Berhouche committed Jul 20, 2020
2 parents 17290cd + 36387c3 commit edd2fb5
Show file tree
Hide file tree
Showing 25 changed files with 124 additions and 81 deletions.
8 changes: 8 additions & 0 deletions Block/Payment/Info.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,16 @@ public function getResultDescHtml()
];

$labels = [];

$restError = $this->getInfo()->getAdditionalInformation(\Lyranetwork\Payzen\Helper\Payment::REST_ERROR_MESSAGE);
if ($restError) {
$labels[] = $restError;
unset($keys[0]);
}

foreach ($keys as $key) {
$label = $this->translate($allResults[$key], $key, true);

if (! $label) {
continue;
}
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
2.4.8, 2020-07-20:
- [embedded] Bug fix: Error due to strongAuthentication field renaming in REST token creation.
- [embedded] Bug fix: Do not cancel orders in status "Fraud suspected" when new failed IPN calls are made.
- Update payment means logos.
- Improve logged information.

2.4.7, 2020-06-19:
- [embedded] Bug fix: Amount did not include shipping fees when using embedded payment fields in some cases.
- [embedded] Bug fix: Compatibility of payment with embedded fields with Internet Explorer 11.
Expand Down
Empty file modified CONTRIBUTING.md
100755 → 100644
Empty file.
4 changes: 2 additions & 2 deletions Controller/Adminhtml/Payment/Redirect.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,14 @@ private function getAndCheckOrder()

// Check that there is products in cart.
if (! $order->getTotalDue()) {
$this->dataHelper->log("Payment attempt with no amount. [Order = {$order->getId()}]"
$this->dataHelper->log("Payment attempt with no amount. [Order = {$order->getIncrementId()}]"
. " [IP = {$this->dataHelper->getIpAddress()}].");
throw new OrderException('Order total is empty.');
}

// Check that order is not processed yet.
if (! $this->dataHelper->getCheckout()->getLastSuccessQuoteId()) {
$this->dataHelper->log("Payment attempt with a quote already processed. [Order = {$order->getId()}]"
$this->dataHelper->log("Payment attempt with a quote already processed. [Order = {$order->getIncrementId()}]"
. " [IP = {$this->dataHelper->getIpAddress()}].");
throw new OrderException('Order payment already processed.');
}
Expand Down
4 changes: 2 additions & 2 deletions Controller/Adminhtml/Payment/Response.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ private function redirectError($order = null)
$this->messageManager->getMessages(true);
$this->messageManager->addError(__('An error has occurred during the payment process.'));

$this->dataHelper->log('Redirecting to order creation page.' . ($order ? " Order #{$order->getId()}." : ''));
$this->dataHelper->log('Redirecting to order creation page.' . ($order ? " Order #{$order->getIncrementId()}." : ''));

/**
* @var \Magento\Framework\Controller\Result\Redirect $resultRedirect
Expand Down Expand Up @@ -131,7 +131,7 @@ private function redirectResponse($order, $case, $checkUrlWarn = false)
$this->messageManager->addWarning(__('Your payment was not accepted. Please, try to re-order.'));
}

$this->dataHelper->log("Redirecting to order view or order index page for order #{$order->getId()}.");
$this->dataHelper->log("Redirecting to order view or order index page for order #{$order->getIncrementId()}.");

/**
* @var \Magento\Framework\Controller\Result\Redirect $resultRedirect
Expand Down
8 changes: 5 additions & 3 deletions Controller/Payment/Iframe/Loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,12 @@ public function execute()
{
// Check if it is a canceled order.
if ($this->getRequest()->getParam('mode', false) === 'cancel') {
$this->dataHelper->log('Payment within iframe is canceled.');

// Load order.
$checkout = $this->dataHelper->getCheckout();
$lastIncrementId = $checkout->getData('payzen_last_real_id');

$this->dataHelper->log("Payment within iframe is canceled for order #{$lastIncrementId}.");

$lastIncrementId = $checkout->getData('payzen_last_real_id');
$order = $this->orderFactory->create();
$order->loadByIncrementId($lastIncrementId);
Expand All @@ -55,7 +57,7 @@ public function execute()
$order->registerCancellation(__('Payment cancelled.'))->save();
$checkout->setData('payzen_last_real_id', null);

$this->dataHelper->log("Restore cart for order #{$order->getId()} to allow re-order quicker.");
$this->dataHelper->log("Restore cart for order #{$order->getIncrementId()} to allow re-order quicker.");

$quote = $this->quoteRepository->get($order->getQuoteId());
if ($quote->getId()) {
Expand Down
4 changes: 2 additions & 2 deletions Controller/Payment/Redirect.php
Original file line number Diff line number Diff line change
Expand Up @@ -97,14 +97,14 @@ private function getAndCheckOrder()

// Check that there is products in cart.
if (! $order->getTotalDue()) {
$this->dataHelper->log("Payment attempt with no amount. [Order = {$order->getId()}]" .
$this->dataHelper->log("Payment attempt with no amount. [Order = {$order->getIncrementId()}]" .
" [IP = {$this->dataHelper->getIpAddress()}].");
throw new OrderException('Order total is empty.');
}

// Check that order is not processed yet.
if (! $checkout->getLastSuccessQuoteId()) {
$this->dataHelper->log("Payment attempt with a quote already processed. [Order = {$order->getId()}]" .
$this->dataHelper->log("Payment attempt with a quote already processed. [Order = {$order->getIncrementId()}]" .
" [IP = {$this->dataHelper->getIpAddress()}].");
throw new OrderException('Order payment already processed.');
}
Expand Down
8 changes: 4 additions & 4 deletions Controller/Payment/Response.php
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ protected function redirectError($order = null)
->setLastOrderId($order->getId());
}

$this->dataHelper->log('Redirecting to one page checkout failure page.' . ($order ? " Order #{$order->getId()}." : ''));
$this->dataHelper->log('Redirecting to one page checkout failure page.' . ($order ? " Order #{$order->getIncrementId()}." : ''));
return $this->createResult('checkout/onepage/failure', ['_scope' => $this->dataHelper->getCheckoutStoreId()]);
}

Expand Down Expand Up @@ -155,14 +155,14 @@ protected function redirectResponse($order, $case, $checkUrlWarn = false)
->setLastRealOrderId($order->getIncrementId())
->setLastOrderStatus($order->getStatus());

$this->dataHelper->log("Redirecting to one page checkout success page for order #{$order->getId()}.");
$this->dataHelper->log("Redirecting to one page checkout success page for order #{$order->getIncrementId()}.");
$resultRedirect = $this->createResult('checkout/onepage/success', ['_scope' => $storeId]);
} else {
if ($case === Payment::FAILURE) {
$this->messageManager->addWarning(__('Your payment was not accepted. Please, try to re-order.'));
}

$this->dataHelper->log("Restore cart for order #{$order->getId()} to allow re-order quicker.");
$this->dataHelper->log("Restore cart for order #{$order->getIncrementId()} to allow re-order quicker.");
$quote = $this->quoteRepository->get($order->getQuoteId());
if ($quote->getId()) {
$quote->setIsActive(true)->setReservedOrderId(null);
Expand All @@ -171,7 +171,7 @@ protected function redirectResponse($order, $case, $checkUrlWarn = false)
$checkout->replaceQuote($quote);
}

$this->dataHelper->log("Redirecting to cart page for order #{$order->getId()}.");
$this->dataHelper->log("Redirecting to cart page for order #{$order->getIncrementId()}.");
$resultRedirect = $this->createResult('checkout/cart', ['_scope' => $storeId]);
}

Expand Down
19 changes: 10 additions & 9 deletions Controller/Payment/Rest/Check.php
Original file line number Diff line number Diff line change
Expand Up @@ -118,16 +118,17 @@ protected function prepareResponse($params)
throw new ResponseException($response->getOutputForGateway('order_not_found'));
}

// Case of failure or expiration when retries are enabled, do nothing before last attempt.
if (! $response->isAcceptedPayment() && ($answer['orderCycle'] !== 'CLOSED')) {
$this->dataHelper->log("Payment is not accepted but buyer can try to re-order. Do not create order at this time.
Quote ID: #{$quoteId}, reserved order ID: #{$quote->getReservedOrderId()}.");
throw new ResponseException($response->getOutputForGateway('payment_ko_bis'));
}

// Token is created before order creation, search order by quote.
$order = $this->orderFactory->create();
$order->loadByIncrementId($quote->getReservedOrderId());
if (! $order->getId()) {
// Case of failure when retries are enabled, do nothing before last attempt.
if (! $response->isAcceptedPayment() && ($answer['orderCycle'] !== 'CLOSED')) {
$this->dataHelper->log("Payment is not accepted but buyer can try to re-order. Do not create order at this time. Quote ID: #{$quoteId}.");
throw new ResponseException($response->getOutputForGateway('payment_ko_bis'));
}

$this->getOnepageForQuote($quote)->saveOrder();

// Dispatch save order event.
Expand All @@ -146,13 +147,13 @@ protected function prepareResponse($params)
// Load newly created order.
$order->loadByIncrementId($quote->getReservedOrderId());
if (! $order->getId()) {
$this->dataHelper->log("Order cannot be created for quote #{$quoteId}.", \Psr\Log\LogLevel::ERROR);
$this->dataHelper->log("Order cannot be created. Quote ID: #{$quoteId}, reserved order ID: #{$quote->getReservedOrderId()}.", \Psr\Log\LogLevel::ERROR);
throw new ResponseException($response->getOutputForGateway('ko', 'Error when trying to create order.'));
}

$this->dataHelper->log("Order #{$order->getId()} has been created for quote #{$quoteId}.");
$this->dataHelper->log("Order #{$order->getIncrementId()} has been created for quote #{$quoteId}.");
} else {
$this->dataHelper->log("Found order #{$order->getId()} for quote #{$quoteId}.");
$this->dataHelper->log("Found order #{$order->getIncrementId()} for quote #{$quoteId}.");
}

// Get store id from order.
Expand Down
4 changes: 2 additions & 2 deletions Controller/Payment/Rest/Response.php
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,9 @@ protected function prepareResponse($params)
throw new ResponseException("Order cannot be created for quote #{$quoteId}.");
}

$this->dataHelper->log("Order #{$order->getId()} has been created for quote #{$quoteId}.");
$this->dataHelper->log("Order #{$order->getIncrementId()} has been created for quote #{$quoteId}.");
} else {
$this->dataHelper->log("Found order #{$order->getId()} for quote #{$quoteId}.");
$this->dataHelper->log("Found order #{$order->getIncrementId()} for quote #{$quoteId}.");
}

$storeId = $order->getStore()->getId();
Expand Down
16 changes: 8 additions & 8 deletions Controller/Processor/CheckProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public function execute(
\Magento\Sales\Model\Order $order,
\Lyranetwork\Payzen\Model\Api\PayzenResponse $response
) {
$this->dataHelper->log("Request authenticated for order #{$order->getId()}.");
$this->dataHelper->log("Request authenticated for order #{$order->getIncrementId()}.");

$reviewStatuses = [
'payment_review',
Expand All @@ -90,11 +90,11 @@ public function execute(

if ($order->getStatus() == 'pending_payment' || in_array($order->getStatus(), $reviewStatuses)) {
// Order waiting for payment.
$this->dataHelper->log("Order #{$order->getId()} is waiting payment update.");
$this->dataHelper->log("Payment result for order #{$order->getId()}: " . $response->getLogMessage());
$this->dataHelper->log("Order #{$order->getIncrementId()} is waiting payment update.");
$this->dataHelper->log("Payment result for order #{$order->getIncrementId()}: " . ($response->get('error_message') ?: $response->getLogMessage()));

if ($response->isAcceptedPayment()) {
$this->dataHelper->log("Payment for order #{$order->getId()} has been confirmed by notification URL.");
$this->dataHelper->log("Payment for order #{$order->getIncrementId()} has been confirmed by notification URL.");

$stateObject = $this->paymentHelper->nextOrderState($order, $response);
if ($order->getStatus() == $stateObject->getStatus()) {
Expand All @@ -108,7 +108,7 @@ public function execute(
return 'payment_ok';
}
} else {
$this->dataHelper->log("Payment for order #{$order->getId()} has been invalidated by notification URL.");
$this->dataHelper->log("Payment for order #{$order->getIncrementId()} has been invalidated by notification URL.");

// Cancel order.
$this->paymentHelper->cancelOrder($order, $response);
Expand All @@ -126,7 +126,7 @@ public function execute(
];

if ($response->isAcceptedPayment() && in_array($order->getStatus(), $successStatuses)) {
$this->dataHelper->log("Order #{$order->getId()} is confirmed.");
$this->dataHelper->log("Order #{$order->getIncrementId()} is confirmed.");

if ($response->get('operation_type') == 'CREDIT') {
// This is a refund: create credit memo?
Expand Down Expand Up @@ -189,11 +189,11 @@ public function execute(

return 'payment_ok_already_done';
} elseif ($order->isCanceled() && ! $response->isAcceptedPayment()) {
$this->dataHelper->log("Order #{$order->getId()} cancelation is confirmed.");
$this->dataHelper->log("Order #{$order->getIncrementId()} cancelation is confirmed.");
return 'payment_ko_already_done';
} else {
// Error case, the payment result and the order status do not match.
$msg = "Invalid payment result received for already saved order #{$order->getId()}.";
$msg = "Invalid payment result received for already saved order #{$order->getIncrementId()}.";
$msg .= " Payment result: {$response->getTransStatus()}, order status : {$order->getStatus()}.";
$this->dataHelper->log($msg, \Psr\Log\LogLevel::ERROR);

Expand Down
2 changes: 1 addition & 1 deletion Controller/Processor/RedirectProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public function execute(\Magento\Sales\Model\Order $order)
);

// Log action before redirect.
$this->dataHelper->log("Client {$order->getCustomerEmail()} sent to payment page for order #{$order->getId()}.");
$this->dataHelper->log("Client {$order->getCustomerEmail()} sent to payment page for order #{$order->getIncrementId()}.");
}

public function getDataHelper()
Expand Down
18 changes: 9 additions & 9 deletions Controller/Processor/ResponseProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,15 @@ public function execute(
\Magento\Sales\Model\Order $order,
\Lyranetwork\Payzen\Model\Api\PayzenResponse $response
) {
$this->dataHelper->log("Request authenticated for order #{$order->getId()}.");
$this->dataHelper->log("Request authenticated for order #{$order->getIncrementId()}.");

if ($order->getStatus() === 'pending_payment') {
// Order waiting for payment.
$this->dataHelper->log("Order #{$order->getId()} is waiting payment.");
$this->dataHelper->log("Payment result for order #{$order->getId()}: " . $response->getLogMessage());
$this->dataHelper->log("Order #{$order->getIncrementId()} is waiting payment.");
$this->dataHelper->log("Payment result for order #{$order->getIncrementId()}: " . ($response->get('error_message') ?: $response->getLogMessage()));

if ($response->isAcceptedPayment()) {
$this->dataHelper->log("Payment for order #{$order->getId()} has been confirmed by client return !" .
$this->dataHelper->log("Payment for order #{$order->getIncrementId()} has been confirmed by client return !" .
" This means the notification URL did not work.", \Psr\Log\LogLevel::WARNING);

// Save order and optionally create invoice.
Expand All @@ -81,7 +81,7 @@ public function execute(
'warn' => true // Notification URL warn in TEST mode.
];
} else {
$this->dataHelper->log("Payment for order #{$order->getId()} has failed.");
$this->dataHelper->log("Payment for order #{$order->getIncrementId()} has failed.");

// Cancel order.
$this->paymentHelper->cancelOrder($order, $response);
Expand All @@ -95,7 +95,7 @@ public function execute(
}
} else {
// Payment already processed.
$this->dataHelper->log("Order #{$order->getId()} has already been processed.");
$this->dataHelper->log("Order #{$order->getIncrementId()} has already been processed.");

$storeId = $this->dataHelper->getCheckoutStoreId();
$acceptedStatus = $this->dataHelper->getCommonConfigData('registered_order_status', $storeId);
Expand All @@ -109,14 +109,14 @@ public function execute(
];

if ($response->isAcceptedPayment() && in_array($order->getStatus(), $successStatuses)) {
$this->dataHelper->log("Order #{$order->getId()} is confirmed.");
$this->dataHelper->log("Order #{$order->getIncrementId()} is confirmed.");

return [
'case' => Payment::SUCCESS,
'warn' => false
];
} elseif ($order->isCanceled() && ! $response->isAcceptedPayment()) {
$this->dataHelper->log("Order #{$order->getId()} cancelation is confirmed.");
$this->dataHelper->log("Order #{$order->getIncrementId()} cancelation is confirmed.");

$case = $response->isCancelledPayment() ? Payment::CANCEL : Payment::FAILURE;
return [
Expand All @@ -125,7 +125,7 @@ public function execute(
];
} else {
// Error case, the payment result and the order status do not match.
$msg = "Invalid payment result received for already saved order #{$order->getId()}.";
$msg = "Invalid payment result received for already saved order #{$order->getIncrementId()}.";
$msg .= " Payment result: {$response->getTransStatus()}, order status : {$order->getStatus()}.";

throw new ResponseException($msg);
Expand Down
Loading

0 comments on commit edd2fb5

Please sign in to comment.