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 doesn't Newton's third law mean a person bounces back to where they started when they hit the ground?

Is it inappropriate for a student to attend their mentor's dissertation defense?

Modeling an IP Address

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

What defenses are there against being summoned by the Gate spell?

What is the word for reserving something for yourself before others do?

If human space travel is limited by the G force vulnerability, is there a way to counter G forces?

Is it unprofessional to ask if a job posting on GlassDoor is real?

Maximum likelihood parameters deviate from posterior distributions

Why does Kotter return in Welcome Back Kotter?

Can a vampire attack twice with their claws using Multiattack?

Why doesn't H₄O²⁺ exist?

Are the number of citations and number of published articles the most important criteria for a tenure promotion?

Can an x86 CPU running in real mode be considered to be basically an 8086 CPU?

Can I make popcorn with any corn?

What does it mean to describe someone as a butt steak?

Why can't I see bouncing of switch on oscilloscope screen?

Can a Cauchy sequence converge for one metric while not converging for another?

dbcc cleantable batch size explanation

Codimension of non-flat locus

Why are electrically insulating heatsinks so rare? Is it just cost?

Arrow those variables!

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

When a company launches a new product do they "come out" with a new product or do they "come up" with a new product?



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 5 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 5 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 5 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 5 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

            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

            Magento 2 disable Secret Key on URL's from terminal The Next CEO of Stack OverflowMagento 2 Shortcut/GUI tool to perform commandline tasks for windowsIn menu add configuration linkMagento oAuth : Generating access token and access secretMagento 2 security key issue in Third-Party API redirect URIPublic actions in admin controllersHow to Disable Cache in Custom WidgetURL Key not changing in Magento 2Product URL Key gets deleted when importing custom options - Magento 2Problem with reindex terminalMagento 2 - bin/magento Commands not working in Cpanel Terminal

            Aasi (pallopeli) Navigointivalikko