diff --git a/vendor/payuindia/payu/Controller/Standard/Cancel.php b/vendor/payuindia/payu/Controller/Standard/Cancel.php
index 73b156e..1aa19e7 100644
--- a/vendor/payuindia/payu/Controller/Standard/Cancel.php
+++ b/vendor/payuindia/payu/Controller/Standard/Cancel.php
@@ -29,12 +29,65 @@ class Cancel extends \PayUIndia\Payu\Controller\PayuAbstract implements CsrfAwar
     }
 
     public function execute() {
-		$paymentMethod = $this->getPaymentMethod();
-		$goto=$this->_cancelPayment('Payment canceld/failed...Order canceled...');
-        $this->messageManager->addErrorMessage(__('Your order has been canceled'));
-        $this->getResponse()->setRedirect(
-                $this->getCheckoutHelper()->getUrl('checkout').'/'.$goto
-        );
-    }
+        $goto="";
+        try {
+            $allParam = $this->getRequest()->getParams();
+            $params = isset($allParam['full_response']) ? json_decode($allParam['full_response'], true): $allParam;
+            $data = [
+                'txnid'      => $params['txnid'] ?? $params['txnId'] ?? null,
+                'status'     => $params['txnStatus'] ?? $params['status'] ?? null,
+                'txnmessage' => $params['txnMessage'] ?? $params['error_Message'] ?? __('Order cancelled')
+            ];
+            if (empty($data['txnid'])) {
+                $this->messageManager->addErrorMessage(__('Invalid transaction details.'));
+                return $this->getResponse()->setRedirect(
+                    $this->getCheckoutHelper()->getUrl('checkout').$goto
+                );
+            }
+            $quoteId = $data['txnid'];
+            if (strpos($quoteId, '-') !== false) {
+                $quoteId = explode('-', $quoteId)[0];
+            }
+            try {
+                $quote = $this->quoteRepository->get($quoteId);
+                $goto="#payment";
+            } catch (\Exception $e) {
+                $this->messageManager->addErrorMessage(__('Unable to restore your cart.'));
+                return $this->getResponse()->setRedirect(
+                    $this->getCheckoutHelper()->getUrl('checkout').$goto
+                );
+            }
+           
+            $incrementId = $quote->getReservedOrderId();
+            if ($incrementId) {
+                $order = $this->_orderFactory->create()->loadByIncrementId($incrementId);
+
+                if ($order && $order->getId() && $order->canCancel()) {
+                    try {
+                        $order->registerCancellation($data['txnmessage'])->save();
+                    } catch (\Exception $e) {
+                        $this->messageManager->addErrorMessage(__('Something went wrong while cancelling your order.'));
+                        return $this->getResponse()->setRedirect(
+                                $this->getCheckoutHelper()->getUrl('checkout').$goto
+                        );
+                    }
+                }
+            }
+            $quote->setIsActive(true);
+            $quote->setReservedOrderId(null);
+            $this->quoteRepository->save($quote);
+            $this->checkoutSession->replaceQuote($quote);
+            $this->messageManager->addErrorMessage(__('Your order has been canceled.'));
+            return $this->getResponse()->setRedirect(
+                    $this->getCheckoutHelper()->getUrl('checkout').$goto
+            );
+        } catch (\Exception $e) {
 
+            $this->messageManager->addErrorMessage(__('Something went wrong while cancelling your order.'));
+            return $this->getResponse()->setRedirect(
+                    $this->getCheckoutHelper()->getUrl('checkout').$goto
+            );
+        }
+    }
+ 
 }
