Magento 2 - Refill cart after refused from payment page












1















I want cart to be refilled after customer return back to my controller with some error. Here is my controller code, I can access increment_id here



public function execute()
{
if(array_key_exists("req_reference_number",$_POST)) {
$increment_id = $_POST["req_reference_number"];
$status = $_POST["decision"];
$message = $_POST["message"];
$order = $this->order->loadByIncrementId($increment_id);
if ($status == "CANCEL") {
//Cancel previous order
$this->statusCanceled($order);

/*************
** Want to refill cart here
**************/

//redirect to checkout page with restoring cart
$redirectionUrl = $this->url->getUrl('checkout/cart/');
$this->response->create()->setRedirect($redirectionUrl)->sendResponse();
}
}else{
$redirectionUrl = $this->url->getUrl('/');
$this->response->create()->setRedirect($redirectionUrl)->sendResponse();
}
die();
}


My question is, how can I refill my cart using order increment id that is placed and cancelled.










share|improve this question























  • Take a look at the "Reorder" button logic in customer order history. It does exactly what you need.

    – Lorenzo
    59 mins ago











  • let me check. Thanks

    – Shoaib Munir
    58 mins ago
















1















I want cart to be refilled after customer return back to my controller with some error. Here is my controller code, I can access increment_id here



public function execute()
{
if(array_key_exists("req_reference_number",$_POST)) {
$increment_id = $_POST["req_reference_number"];
$status = $_POST["decision"];
$message = $_POST["message"];
$order = $this->order->loadByIncrementId($increment_id);
if ($status == "CANCEL") {
//Cancel previous order
$this->statusCanceled($order);

/*************
** Want to refill cart here
**************/

//redirect to checkout page with restoring cart
$redirectionUrl = $this->url->getUrl('checkout/cart/');
$this->response->create()->setRedirect($redirectionUrl)->sendResponse();
}
}else{
$redirectionUrl = $this->url->getUrl('/');
$this->response->create()->setRedirect($redirectionUrl)->sendResponse();
}
die();
}


My question is, how can I refill my cart using order increment id that is placed and cancelled.










share|improve this question























  • Take a look at the "Reorder" button logic in customer order history. It does exactly what you need.

    – Lorenzo
    59 mins ago











  • let me check. Thanks

    – Shoaib Munir
    58 mins ago














1












1








1








I want cart to be refilled after customer return back to my controller with some error. Here is my controller code, I can access increment_id here



public function execute()
{
if(array_key_exists("req_reference_number",$_POST)) {
$increment_id = $_POST["req_reference_number"];
$status = $_POST["decision"];
$message = $_POST["message"];
$order = $this->order->loadByIncrementId($increment_id);
if ($status == "CANCEL") {
//Cancel previous order
$this->statusCanceled($order);

/*************
** Want to refill cart here
**************/

//redirect to checkout page with restoring cart
$redirectionUrl = $this->url->getUrl('checkout/cart/');
$this->response->create()->setRedirect($redirectionUrl)->sendResponse();
}
}else{
$redirectionUrl = $this->url->getUrl('/');
$this->response->create()->setRedirect($redirectionUrl)->sendResponse();
}
die();
}


My question is, how can I refill my cart using order increment id that is placed and cancelled.










share|improve this question














I want cart to be refilled after customer return back to my controller with some error. Here is my controller code, I can access increment_id here



public function execute()
{
if(array_key_exists("req_reference_number",$_POST)) {
$increment_id = $_POST["req_reference_number"];
$status = $_POST["decision"];
$message = $_POST["message"];
$order = $this->order->loadByIncrementId($increment_id);
if ($status == "CANCEL") {
//Cancel previous order
$this->statusCanceled($order);

/*************
** Want to refill cart here
**************/

//redirect to checkout page with restoring cart
$redirectionUrl = $this->url->getUrl('checkout/cart/');
$this->response->create()->setRedirect($redirectionUrl)->sendResponse();
}
}else{
$redirectionUrl = $this->url->getUrl('/');
$this->response->create()->setRedirect($redirectionUrl)->sendResponse();
}
die();
}


My question is, how can I refill my cart using order increment id that is placed and cancelled.







magento2 cart






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 1 hour ago









Shoaib MunirShoaib Munir

1,473525




1,473525













  • Take a look at the "Reorder" button logic in customer order history. It does exactly what you need.

    – Lorenzo
    59 mins ago











  • let me check. Thanks

    – Shoaib Munir
    58 mins ago



















  • Take a look at the "Reorder" button logic in customer order history. It does exactly what you need.

    – Lorenzo
    59 mins ago











  • let me check. Thanks

    – Shoaib Munir
    58 mins ago

















Take a look at the "Reorder" button logic in customer order history. It does exactly what you need.

– Lorenzo
59 mins ago





Take a look at the "Reorder" button logic in customer order history. It does exactly what you need.

– Lorenzo
59 mins ago













let me check. Thanks

– Shoaib Munir
58 mins ago





let me check. Thanks

– Shoaib Munir
58 mins ago










1 Answer
1






active

oldest

votes


















0














You can try to reactivate the old quote, delete payment and reserved order id and reuse it. In that way you preserve also address data.



$quote = $objectManager->create('MagentoQuoteModelQuoteFactory')->create()->load($order->getQuoteId());

$quote->setReservedOrderId(null);
$quote->setIsActive(true);
$quote->removePayment();
$quote->save();




share























    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%2f263961%2fmagento-2-refill-cart-after-refused-from-payment-page%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 try to reactivate the old quote, delete payment and reserved order id and reuse it. In that way you preserve also address data.



    $quote = $objectManager->create('MagentoQuoteModelQuoteFactory')->create()->load($order->getQuoteId());

    $quote->setReservedOrderId(null);
    $quote->setIsActive(true);
    $quote->removePayment();
    $quote->save();




    share




























      0














      You can try to reactivate the old quote, delete payment and reserved order id and reuse it. In that way you preserve also address data.



      $quote = $objectManager->create('MagentoQuoteModelQuoteFactory')->create()->load($order->getQuoteId());

      $quote->setReservedOrderId(null);
      $quote->setIsActive(true);
      $quote->removePayment();
      $quote->save();




      share


























        0












        0








        0







        You can try to reactivate the old quote, delete payment and reserved order id and reuse it. In that way you preserve also address data.



        $quote = $objectManager->create('MagentoQuoteModelQuoteFactory')->create()->load($order->getQuoteId());

        $quote->setReservedOrderId(null);
        $quote->setIsActive(true);
        $quote->removePayment();
        $quote->save();




        share













        You can try to reactivate the old quote, delete payment and reserved order id and reuse it. In that way you preserve also address data.



        $quote = $objectManager->create('MagentoQuoteModelQuoteFactory')->create()->load($order->getQuoteId());

        $quote->setReservedOrderId(null);
        $quote->setIsActive(true);
        $quote->removePayment();
        $quote->save();





        share











        share


        share










        answered 5 mins ago









        HelgeBHelgeB

        1,713314




        1,713314






























            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%2f263961%2fmagento-2-refill-cart-after-refused-from-payment-page%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

            What other Star Trek series did the main TNG cast show up in?

            Berlina muro

            Berlina aerponto