Magento 2 - redirect to final checkout page (checkout success/failed)Adding Message before Magento Payment redirectPayPal order review page redirectMagento Success page, only half or less being reported in Google Analyticsmagento coupen redirect to home page?Can't Access Quote from checkout session after returning from payment GatewayMagento 2 Restore Quote/Cart after order is cancelled/FailedGetOrderPlaceRedirectUrl Doesn't redirect to the gateway secure pageHow do you maintain checkout data and state after a failed payment in Magento 2?Magento2 checkout/onepage/success redirects to cartMagento 2.1 redirects in Observer after payment

Why is 150k or 200k jobs considered good when there's 300k+ births a month?

LWC SFDX source push error TypeError: LWC1009: decl.moveTo is not a function

Why is consensus so controversial in Britain?

Is it tax fraud for an individual to declare non-taxable revenue as taxable income? (US tax laws)

Maximum likelihood parameters deviate from posterior distributions

Does detail obscure or enhance action?

Rock identification in KY

Can a vampire attack twice with their claws using Multiattack?

What's the point of deactivating Num Lock on login screens?

Add text to same line using sed

Has there ever been an airliner design involving reducing generator load by installing solar panels?

Perform and show arithmetic with LuaLaTeX

What typically incentivizes a professor to change jobs to a lower ranking university?

What's that red-plus icon near a text?

Is it possible to run Internet Explorer on OS X El Capitan?

Is it legal for company to use my work email to pretend I still work there?

Watching something be written to a file live with tail

How much RAM could one put in a typical 80386 setup?

Codimension of non-flat locus

Modeling an IP Address

Accidentally leaked the solution to an assignment, what to do now? (I'm the prof)

RSA: Danger of using p to create q

High voltage LED indicator 40-1000 VDC without additional power supply

How does one intimidate enemies without having the capacity for violence?



Magento 2 - redirect to final checkout page (checkout success/failed)


Adding Message before Magento Payment redirectPayPal order review page redirectMagento Success page, only half or less being reported in Google Analyticsmagento coupen redirect to home page?Can't Access Quote from checkout session after returning from payment GatewayMagento 2 Restore Quote/Cart after order is cancelled/FailedGetOrderPlaceRedirectUrl Doesn't redirect to the gateway secure pageHow do you maintain checkout data and state after a failed payment in Magento 2?Magento2 checkout/onepage/success redirects to cartMagento 2.1 redirects in Observer after payment






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















I have a custom payment module. When the user select this payment method at checkout, he is redirected to custom module controller, which redirects him to payment gateway. Then he fills his credit card info and is redirected back to custom module controller. Here I process the gateway reply to see if payment was success or not and update the order status. But currently, the user stays on this page.



How do I redirect him to Checkout Success page (where the order ID tracking and create account buttons are displayed)? It works if I simply redirect him to /checkout/onepage/success, but is this a correct way how to do it?



And how do I redirect him to Checkout failed page? In Magento 1, I restored the cart and redirected him to cart view with error message like this:



//restore cart
$session = Mage::getSingleton('checkout/session');
$lastQuoteId = $session->getLastQuoteId();
$quote = Mage::getModel('sales/quote')->load($lastQuoteId);
$quote->setIsActive(true)->save();

//redirect to cart with error message
$failMsg = $this->__('Payment failed. Please try again.') . " " . $orderReplyStatus->resultText;
Mage::getSingleton('core/session')->addError($failMsg);
$this->_redirect('checkout/cart');


Do I have to do the same in Magento 2 or does Magento 2 have a checkout failed page?










share|improve this question














bumped to the homepage by Community 7 hours ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.















  • Which payment method you are using ?

    – Keyur Shah
    Oct 15 '17 at 13:41











  • @KeyurShah Custom module I created

    – Adam Ježek
    Oct 15 '17 at 13:47











  • Yes but which payment method ?

    – Keyur Shah
    Oct 15 '17 at 13:48











  • @KeyurShah I'm not sure what you mean

    – Adam Ježek
    Oct 15 '17 at 13:49











  • I mean which payment gateway you are using ?

    – Keyur Shah
    Oct 15 '17 at 13:49

















1















I have a custom payment module. When the user select this payment method at checkout, he is redirected to custom module controller, which redirects him to payment gateway. Then he fills his credit card info and is redirected back to custom module controller. Here I process the gateway reply to see if payment was success or not and update the order status. But currently, the user stays on this page.



How do I redirect him to Checkout Success page (where the order ID tracking and create account buttons are displayed)? It works if I simply redirect him to /checkout/onepage/success, but is this a correct way how to do it?



And how do I redirect him to Checkout failed page? In Magento 1, I restored the cart and redirected him to cart view with error message like this:



//restore cart
$session = Mage::getSingleton('checkout/session');
$lastQuoteId = $session->getLastQuoteId();
$quote = Mage::getModel('sales/quote')->load($lastQuoteId);
$quote->setIsActive(true)->save();

//redirect to cart with error message
$failMsg = $this->__('Payment failed. Please try again.') . " " . $orderReplyStatus->resultText;
Mage::getSingleton('core/session')->addError($failMsg);
$this->_redirect('checkout/cart');


Do I have to do the same in Magento 2 or does Magento 2 have a checkout failed page?










share|improve this question














bumped to the homepage by Community 7 hours ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.















  • Which payment method you are using ?

    – Keyur Shah
    Oct 15 '17 at 13:41











  • @KeyurShah Custom module I created

    – Adam Ježek
    Oct 15 '17 at 13:47











  • Yes but which payment method ?

    – Keyur Shah
    Oct 15 '17 at 13:48











  • @KeyurShah I'm not sure what you mean

    – Adam Ježek
    Oct 15 '17 at 13:49











  • I mean which payment gateway you are using ?

    – Keyur Shah
    Oct 15 '17 at 13:49













1












1








1


1






I have a custom payment module. When the user select this payment method at checkout, he is redirected to custom module controller, which redirects him to payment gateway. Then he fills his credit card info and is redirected back to custom module controller. Here I process the gateway reply to see if payment was success or not and update the order status. But currently, the user stays on this page.



How do I redirect him to Checkout Success page (where the order ID tracking and create account buttons are displayed)? It works if I simply redirect him to /checkout/onepage/success, but is this a correct way how to do it?



And how do I redirect him to Checkout failed page? In Magento 1, I restored the cart and redirected him to cart view with error message like this:



//restore cart
$session = Mage::getSingleton('checkout/session');
$lastQuoteId = $session->getLastQuoteId();
$quote = Mage::getModel('sales/quote')->load($lastQuoteId);
$quote->setIsActive(true)->save();

//redirect to cart with error message
$failMsg = $this->__('Payment failed. Please try again.') . " " . $orderReplyStatus->resultText;
Mage::getSingleton('core/session')->addError($failMsg);
$this->_redirect('checkout/cart');


Do I have to do the same in Magento 2 or does Magento 2 have a checkout failed page?










share|improve this question














I have a custom payment module. When the user select this payment method at checkout, he is redirected to custom module controller, which redirects him to payment gateway. Then he fills his credit card info and is redirected back to custom module controller. Here I process the gateway reply to see if payment was success or not and update the order status. But currently, the user stays on this page.



How do I redirect him to Checkout Success page (where the order ID tracking and create account buttons are displayed)? It works if I simply redirect him to /checkout/onepage/success, but is this a correct way how to do it?



And how do I redirect him to Checkout failed page? In Magento 1, I restored the cart and redirected him to cart view with error message like this:



//restore cart
$session = Mage::getSingleton('checkout/session');
$lastQuoteId = $session->getLastQuoteId();
$quote = Mage::getModel('sales/quote')->load($lastQuoteId);
$quote->setIsActive(true)->save();

//redirect to cart with error message
$failMsg = $this->__('Payment failed. Please try again.') . " " . $orderReplyStatus->resultText;
Mage::getSingleton('core/session')->addError($failMsg);
$this->_redirect('checkout/cart');


Do I have to do the same in Magento 2 or does Magento 2 have a checkout failed page?







magento2 checkout redirect






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Oct 15 '17 at 12:31









Adam JežekAdam Ježek

4218




4218





bumped to the homepage by Community 7 hours ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.







bumped to the homepage by Community 7 hours ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.














  • Which payment method you are using ?

    – Keyur Shah
    Oct 15 '17 at 13:41











  • @KeyurShah Custom module I created

    – Adam Ježek
    Oct 15 '17 at 13:47











  • Yes but which payment method ?

    – Keyur Shah
    Oct 15 '17 at 13:48











  • @KeyurShah I'm not sure what you mean

    – Adam Ježek
    Oct 15 '17 at 13:49











  • I mean which payment gateway you are using ?

    – Keyur Shah
    Oct 15 '17 at 13:49

















  • Which payment method you are using ?

    – Keyur Shah
    Oct 15 '17 at 13:41











  • @KeyurShah Custom module I created

    – Adam Ježek
    Oct 15 '17 at 13:47











  • Yes but which payment method ?

    – Keyur Shah
    Oct 15 '17 at 13:48











  • @KeyurShah I'm not sure what you mean

    – Adam Ježek
    Oct 15 '17 at 13:49











  • I mean which payment gateway you are using ?

    – Keyur Shah
    Oct 15 '17 at 13:49
















Which payment method you are using ?

– Keyur Shah
Oct 15 '17 at 13:41





Which payment method you are using ?

– Keyur Shah
Oct 15 '17 at 13:41













@KeyurShah Custom module I created

– Adam Ježek
Oct 15 '17 at 13:47





@KeyurShah Custom module I created

– Adam Ježek
Oct 15 '17 at 13:47













Yes but which payment method ?

– Keyur Shah
Oct 15 '17 at 13:48





Yes but which payment method ?

– Keyur Shah
Oct 15 '17 at 13:48













@KeyurShah I'm not sure what you mean

– Adam Ježek
Oct 15 '17 at 13:49





@KeyurShah I'm not sure what you mean

– Adam Ježek
Oct 15 '17 at 13:49













I mean which payment gateway you are using ?

– Keyur Shah
Oct 15 '17 at 13:49





I mean which payment gateway you are using ?

– Keyur Shah
Oct 15 '17 at 13:49










1 Answer
1






active

oldest

votes


















0














You can follow this to achieve your target.



In your cancel controller, I'm naming this Cancel.php



<?php


namespace MagentoSamplePaymentGatewayControllerPayment;
class Cancel extends MagentoFrameworkAppActionAction

protected $checkoutSession;
protected $orderRepository;

/**
* Constructor
*
* @param MagentoFrameworkAppActionContext $context
* @param MagentoFrameworkViewResultPageFactory $resultPageFactory
*/
public function __construct(
MagentoFrameworkAppActionContext $context,
MagentoSalesApiOrderRepositoryInterface $orderRepository,
MagentoCheckoutModelSession $checkoutSession
)

$this->checkoutSession = $checkoutSession;
$this->orderRepository = $orderRepository;

parent::__construct($context);


/**
* Execute view action
*
* @return MagentoFrameworkControllerResultInterface
*/
public function execute()

$this->messageManager->addError(__('Payment has been cancelled.'));
/** @var MagentoFrameworkControllerResultRedirect $resultRedirect */
//change order status to cancel
$order = $this->orderRepository->get($this->checkoutSession->getLastOrderId());
if ($order)
$order->cancel();
$order->addStatusToHistory(MagentoSalesModelOrder::STATE_CANCELED, __('Canceled by customer.'));
$order->save();


$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('checkout/cart');
return $resultRedirect;
//return $this->resultPageFactory->create();




And your success controller will be more simpler. I'm just showing you the execute() method. Success.php



 public function execute()

$this->messageManager->addError(__('Payment has been successful.'));
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('checkout/onepage/success');
return $resultRedirect;
//return $this->resultPageFactory->create();






share|improve this answer























    Your Answer








    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "479"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f197310%2fmagento-2-redirect-to-final-checkout-page-checkout-success-failed%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    You can follow this to achieve your target.



    In your cancel controller, I'm naming this Cancel.php



    <?php


    namespace MagentoSamplePaymentGatewayControllerPayment;
    class Cancel extends MagentoFrameworkAppActionAction

    protected $checkoutSession;
    protected $orderRepository;

    /**
    * Constructor
    *
    * @param MagentoFrameworkAppActionContext $context
    * @param MagentoFrameworkViewResultPageFactory $resultPageFactory
    */
    public function __construct(
    MagentoFrameworkAppActionContext $context,
    MagentoSalesApiOrderRepositoryInterface $orderRepository,
    MagentoCheckoutModelSession $checkoutSession
    )

    $this->checkoutSession = $checkoutSession;
    $this->orderRepository = $orderRepository;

    parent::__construct($context);


    /**
    * Execute view action
    *
    * @return MagentoFrameworkControllerResultInterface
    */
    public function execute()

    $this->messageManager->addError(__('Payment has been cancelled.'));
    /** @var MagentoFrameworkControllerResultRedirect $resultRedirect */
    //change order status to cancel
    $order = $this->orderRepository->get($this->checkoutSession->getLastOrderId());
    if ($order)
    $order->cancel();
    $order->addStatusToHistory(MagentoSalesModelOrder::STATE_CANCELED, __('Canceled by customer.'));
    $order->save();


    $resultRedirect = $this->resultRedirectFactory->create();
    $resultRedirect->setPath('checkout/cart');
    return $resultRedirect;
    //return $this->resultPageFactory->create();




    And your success controller will be more simpler. I'm just showing you the execute() method. Success.php



     public function execute()

    $this->messageManager->addError(__('Payment has been successful.'));
    $resultRedirect = $this->resultRedirectFactory->create();
    $resultRedirect->setPath('checkout/onepage/success');
    return $resultRedirect;
    //return $this->resultPageFactory->create();






    share|improve this answer



























      0














      You can follow this to achieve your target.



      In your cancel controller, I'm naming this Cancel.php



      <?php


      namespace MagentoSamplePaymentGatewayControllerPayment;
      class Cancel extends MagentoFrameworkAppActionAction

      protected $checkoutSession;
      protected $orderRepository;

      /**
      * Constructor
      *
      * @param MagentoFrameworkAppActionContext $context
      * @param MagentoFrameworkViewResultPageFactory $resultPageFactory
      */
      public function __construct(
      MagentoFrameworkAppActionContext $context,
      MagentoSalesApiOrderRepositoryInterface $orderRepository,
      MagentoCheckoutModelSession $checkoutSession
      )

      $this->checkoutSession = $checkoutSession;
      $this->orderRepository = $orderRepository;

      parent::__construct($context);


      /**
      * Execute view action
      *
      * @return MagentoFrameworkControllerResultInterface
      */
      public function execute()

      $this->messageManager->addError(__('Payment has been cancelled.'));
      /** @var MagentoFrameworkControllerResultRedirect $resultRedirect */
      //change order status to cancel
      $order = $this->orderRepository->get($this->checkoutSession->getLastOrderId());
      if ($order)
      $order->cancel();
      $order->addStatusToHistory(MagentoSalesModelOrder::STATE_CANCELED, __('Canceled by customer.'));
      $order->save();


      $resultRedirect = $this->resultRedirectFactory->create();
      $resultRedirect->setPath('checkout/cart');
      return $resultRedirect;
      //return $this->resultPageFactory->create();




      And your success controller will be more simpler. I'm just showing you the execute() method. Success.php



       public function execute()

      $this->messageManager->addError(__('Payment has been successful.'));
      $resultRedirect = $this->resultRedirectFactory->create();
      $resultRedirect->setPath('checkout/onepage/success');
      return $resultRedirect;
      //return $this->resultPageFactory->create();






      share|improve this answer

























        0












        0








        0







        You can follow this to achieve your target.



        In your cancel controller, I'm naming this Cancel.php



        <?php


        namespace MagentoSamplePaymentGatewayControllerPayment;
        class Cancel extends MagentoFrameworkAppActionAction

        protected $checkoutSession;
        protected $orderRepository;

        /**
        * Constructor
        *
        * @param MagentoFrameworkAppActionContext $context
        * @param MagentoFrameworkViewResultPageFactory $resultPageFactory
        */
        public function __construct(
        MagentoFrameworkAppActionContext $context,
        MagentoSalesApiOrderRepositoryInterface $orderRepository,
        MagentoCheckoutModelSession $checkoutSession
        )

        $this->checkoutSession = $checkoutSession;
        $this->orderRepository = $orderRepository;

        parent::__construct($context);


        /**
        * Execute view action
        *
        * @return MagentoFrameworkControllerResultInterface
        */
        public function execute()

        $this->messageManager->addError(__('Payment has been cancelled.'));
        /** @var MagentoFrameworkControllerResultRedirect $resultRedirect */
        //change order status to cancel
        $order = $this->orderRepository->get($this->checkoutSession->getLastOrderId());
        if ($order)
        $order->cancel();
        $order->addStatusToHistory(MagentoSalesModelOrder::STATE_CANCELED, __('Canceled by customer.'));
        $order->save();


        $resultRedirect = $this->resultRedirectFactory->create();
        $resultRedirect->setPath('checkout/cart');
        return $resultRedirect;
        //return $this->resultPageFactory->create();




        And your success controller will be more simpler. I'm just showing you the execute() method. Success.php



         public function execute()

        $this->messageManager->addError(__('Payment has been successful.'));
        $resultRedirect = $this->resultRedirectFactory->create();
        $resultRedirect->setPath('checkout/onepage/success');
        return $resultRedirect;
        //return $this->resultPageFactory->create();






        share|improve this answer













        You can follow this to achieve your target.



        In your cancel controller, I'm naming this Cancel.php



        <?php


        namespace MagentoSamplePaymentGatewayControllerPayment;
        class Cancel extends MagentoFrameworkAppActionAction

        protected $checkoutSession;
        protected $orderRepository;

        /**
        * Constructor
        *
        * @param MagentoFrameworkAppActionContext $context
        * @param MagentoFrameworkViewResultPageFactory $resultPageFactory
        */
        public function __construct(
        MagentoFrameworkAppActionContext $context,
        MagentoSalesApiOrderRepositoryInterface $orderRepository,
        MagentoCheckoutModelSession $checkoutSession
        )

        $this->checkoutSession = $checkoutSession;
        $this->orderRepository = $orderRepository;

        parent::__construct($context);


        /**
        * Execute view action
        *
        * @return MagentoFrameworkControllerResultInterface
        */
        public function execute()

        $this->messageManager->addError(__('Payment has been cancelled.'));
        /** @var MagentoFrameworkControllerResultRedirect $resultRedirect */
        //change order status to cancel
        $order = $this->orderRepository->get($this->checkoutSession->getLastOrderId());
        if ($order)
        $order->cancel();
        $order->addStatusToHistory(MagentoSalesModelOrder::STATE_CANCELED, __('Canceled by customer.'));
        $order->save();


        $resultRedirect = $this->resultRedirectFactory->create();
        $resultRedirect->setPath('checkout/cart');
        return $resultRedirect;
        //return $this->resultPageFactory->create();




        And your success controller will be more simpler. I'm just showing you the execute() method. Success.php



         public function execute()

        $this->messageManager->addError(__('Payment has been successful.'));
        $resultRedirect = $this->resultRedirectFactory->create();
        $resultRedirect->setPath('checkout/onepage/success');
        return $resultRedirect;
        //return $this->resultPageFactory->create();







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 3 '18 at 8:43









        Purushotam SangroulaPurushotam Sangroula

        1,098925




        1,098925



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Magento Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f197310%2fmagento-2-redirect-to-final-checkout-page-checkout-success-failed%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Magento 2 duplicate PHPSESSID cookie when using session_start() in custom php scriptMagento 2: User cant logged in into to account page, no error showing!Magento duplicate on subdomainGrabbing storeview from cookie (after using language selector)How do I run php custom script on magento2Magento 2: Include PHP script in headerSession lock after using Cm_RedisSessionscript php to update stockMagento set cookie popupMagento 2 session id cookie - where to find it?How to import Configurable product from csv with custom attributes using php scriptMagento 2 run custom PHP script

            Can not update quote_id field of “quote_item” table magento 2Magento 2.1 - We can't remove the item. (Shopping Cart doesnt allow us to remove items before becomes empty)Add value for custom quote item attribute using REST apiREST API endpoint v1/carts/cartId/items always returns error messageCorrect way to save entries to databaseHow to remove all associated quote objects of a customer completelyMagento 2 - Save value from custom input field to quote_itemGet quote_item data using quote id and product id filter in Magento 2How to set additional data to quote_item table from controller in Magento 2?What is the purpose of additional_data column in quote_item table in magento2Set Custom Price to Quote item magento2 from controller

            How to solve knockout JS error in Magento 2 Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?(Magento2) knockout.js:3012 Uncaught ReferenceError: Unable to process bindingUnable to process binding Knockout.js magento 2Cannot read property `scopeLabel` of undefined on Product Detail PageCan't get Customer Data on frontend in Magento 2Magento2 Order Summary - unable to process bindingKO templates are not loading in Magento 2.1 applicationgetting knockout js error magento 2Product grid not load -— Unable to process binding Knockout.js magento 2Product form not loaded in magento2Uncaught ReferenceError: Unable to process binding “if: function()return (isShowLegend()) ” magento 2