Closed WinstonN closed 3 years ago
Hello @WinstonN, thank you for this detailed report. It does make sense to use the current order status when calling addStatusHistoryComment
, maybe in some places this was left out intentionally and in others is just an oversight. I've created an internal ticket to work on this ASAP.
hello @acampos1916 I had a quick look, and came up with this patch
If you have any comments, let me know. There still instances - with this diff in place - where the order status reverts to processing, in particular
These seem to be originating from
vendor/adyen/module-payment/Model/Cron.php
in particular \Adyen\Payment\Logger\AdyenLogger::addAdyenNotificationCronjob
diff --git a/vendor/adyen/module-payment/Controller/Process/Redirect.php b/vendor/adyen/module-payment/Controller/Process/Redirect.php
--- a/vendor/adyen/module-payment/Controller/Process/Redirect.php
+++ b/vendor/adyen/module-payment/Controller/Process/Redirect.php
@@ -184,7 +184,7 @@ class Redirect extends \Magento\Framework\App\Action\Action
// check if authorise3d was successful
if ($responseCode == 'Authorised') {
- $order->addStatusHistoryComment(__('3D-secure validation was successful'))->save();
+ $order->addStatusHistoryComment(__('3D-secure validation was successful'), $order->getStatus())->save();
// set back to false so when pressed back button on the success page
// it will reactivate 3D secure
$order->getPayment()->setAdditionalInformation('3dActive', '');
@@ -240,7 +240,8 @@ class Redirect extends \Magento\Framework\App\Action\Action
__(
'3D-secure validation was unsuccessful. This order will be cancelled when the related
notification has been processed.'
- )
+ ),
+ $order->getStatus()
)->save();
$this->messageManager->addErrorMessage("3D-secure validation was unsuccessful");
@@ -280,7 +281,8 @@ class Redirect extends \Magento\Framework\App\Action\Action
The payment can be seen as unsuccessful.
<br />The order can be automatically cancelled based on the OFFER_CLOSED notification.
Please contact Adyen Support to enable this.'
- )
+ ),
+ $order->getStatus()
)->save();
$this->_view->loadLayout();
$this->_view->getLayout()->initMessages();
diff --git a/vendor/adyen/module-payment/Gateway/Response/CheckoutPaymentCommentHistoryHandler.php b/vendor/adyen/module-payment/Gateway/Response/CheckoutPaymentCommentHistoryHandler.php
--- a/vendor/adyen/module-payment/Gateway/Response/CheckoutPaymentCommentHistoryHandler.php
+++ b/vendor/adyen/module-payment/Gateway/Response/CheckoutPaymentCommentHistoryHandler.php
@@ -67,7 +67,7 @@ class CheckoutPaymentCommentHistoryHandler implements HandlerInterface
$comment .= '<br /> ' . __('pspReference:') . ' ' . $pspReference;
}
- $payment->getOrder()->addStatusHistoryComment($comment);
+ $payment->getOrder()->addStatusHistoryComment($comment, $payment->getOrder()->getStatus());
return $this;
}
diff --git a/vendor/adyen/module-payment/Gateway/Response/PaymentCommentHistoryHandler.php b/vendor/adyen/module-payment/Gateway/Response/PaymentCommentHistoryHandler.php
--- a/vendor/adyen/module-payment/Gateway/Response/PaymentCommentHistoryHandler.php
+++ b/vendor/adyen/module-payment/Gateway/Response/PaymentCommentHistoryHandler.php
@@ -68,7 +68,7 @@ class PaymentCommentHistoryHandler implements HandlerInterface
$payment->getOrder()->setAdyenResulturlEventCode($responseCode);
}
- $payment->getOrder()->addStatusHistoryComment($comment);
+ $payment->getOrder()->addStatusHistoryComment($comment, $payment->getOrder()->getStatus());
return $this;
}
diff --git a/vendor/adyen/module-payment/Gateway/Response/PaymentCommentHistoryRefundHandler.php b/vendor/adyen/module-payment/Gateway/Response/PaymentCommentHistoryRefundHandler.php
--- a/vendor/adyen/module-payment/Gateway/Response/PaymentCommentHistoryRefundHandler.php
+++ b/vendor/adyen/module-payment/Gateway/Response/PaymentCommentHistoryRefundHandler.php
@@ -69,7 +69,7 @@ class PaymentCommentHistoryRefundHandler implements HandlerInterface
$payment->getOrder()->setAdyenResulturlEventCode($responseCode);
}
- $payment->getOrder()->addStatusHistoryComment($comment);
+ $payment->getOrder()->addStatusHistoryComment($comment, $payment->getOrder()->getStatus());
}
return $this;
diff --git a/vendor/adyen/module-payment/Helper/Data.php b/vendor/adyen/module-payment/Helper/Data.php
--- a/vendor/adyen/module-payment/Helper/Data.php
+++ b/vendor/adyen/module-payment/Helper/Data.php
@@ -1755,7 +1755,7 @@ class Data extends AbstractHelper
$this->adyenLogger->error("exception: " . $message);
}
- $comment = $order->addStatusHistoryComment($message);
+ $comment = $order->addStatusHistoryComment($message, $order->getStatus());
$order->addRelatedObject($comment);
}
diff --git a/vendor/adyen/module-payment/Model/Cron.php b/vendor/adyen/module-payment/Model/Cron.php
--- a/vendor/adyen/module-payment/Model/Cron.php
+++ b/vendor/adyen/module-payment/Model/Cron.php
@@ -843,7 +843,7 @@ class Cron
return;
}
- $this->_order->addStatusHistoryComment($comment);
+ $this->_order->addStatusHistoryComment($comment, $this->_order->getStatus());
$this->_adyenLogger->addAdyenNotificationCronjob('Created comment history for this notification');
}
@@ -1322,7 +1322,7 @@ class Cron
}
$this->_adyenLogger->addAdyenNotificationCronjob($message);
- $comment = $this->_order->addStatusHistoryComment($message);
+ $comment = $this->_order->addStatusHistoryComment($message, $this->_order->getStatus());
$this->_order->addRelatedObject($comment);
}
//store recurring contract for alternative payments methods
@@ -1463,7 +1463,7 @@ class Cron
$this->_adyenLogger->addAdyenNotificationCronjob(
'Status update to default status or refund_authorized status if this is set'
);
- $this->_order->addStatusHistoryComment(__('Adyen Refund Successfully completed'));
+ $this->_order->addStatusHistoryComment(__('Adyen Refund Successfully completed'), $this->_order->getStatus());
}
/**
@@ -1585,7 +1585,7 @@ class Cron
//capture mode
if (!$this->_isAutoCapture()) {
- $this->_order->addStatusHistoryComment(__('Capture Mode set to Manual'));
+ $this->_order->addStatusHistoryComment(__('Capture Mode set to Manual'), $this->_order->getStatus());
$this->_adyenLogger->addAdyenNotificationCronjob('Capture mode is set to Manual');
// show message if order is in manual review
@@ -2219,7 +2219,7 @@ class Cron
{
$comment = __('The order failed to update: %1', $errorMessage);
if ($this->_order) {
- $this->_order->addStatusHistoryComment($comment);
+ $this->_order->addStatusHistoryComment($comment, $this->_order->getStatus());
$this->_order->save();
}
}
Appreciate it @WinstonN, we'll use this to investigate and provide the fix.
Within our Magento website, we use different order statuses, across the order flow
The order could have a flow as below
Step 6 might occur at any stage where Adyen via a webhook, leaves a comment on the order
I believe the culprit is https://github.com/Adyen/adyen-magento2/blob/develop/Gateway/Response/PaymentCommentHistoryHandler.php#L68
and other places where
getOrder()->addStatusHistoryComment($comment);
is used without an order statusThat method,
addStatusHistoryComment
has a status parameter which by default is false if not suppliedLooking at Magento test code, I can see
Would it be possible to incorporate the order status, when Adyen leaves comments on orders, or is this intentional?
Magento version All versions
Plugin version All versions