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

            Disable / Remove link to Product Items in Cart 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?How can I limit products that can be bought / added to cart?Remove item from cartHide “Add to Cart” button if specific products are already in cart“Prettifying” the custom options in cart pageCreate link in cart sidebar to view all added items After limit reachedLink products together in checkout/cartHow to Get product from cart and add it againHide action-edit on cart page if simple productRemoving Cart items - ObserverRemove wishlist items when added to cart

            Helsingin valtaus Sisällysluettelo Taustaa | Yleistä sotatoimista | Osapuolet | Taistelut Helsingin ympäristössä | Punaisten antautumissuunnitelma | Taistelujen kulku Helsingissä | Valtauksen jälkeen | Tappiot | Muistaminen | Kirjallisuutta | Lähteet | Aiheesta muualla | NavigointivalikkoTeoksen verkkoversioTeoksen verkkoversioGoogle BooksSisällissota Helsingissä päättyi tasan 95 vuotta sittenSaksalaisten ylivoima jyräsi punaisen HelsinginSuomalaiset kuvaavat sotien jälkiä kaupungeissa – katso kuvat ja tarinat tutuilta kulmiltaHelsingin valtaus 90 vuotta sittenSaksalaiset valtasivat HelsinginHyökkäys HelsinkiinHelsingin valtaus 12.–13.4. 1918Saksalaiset käyttivät ihmiskilpiä Helsingin valtauksessa 1918Teoksen verkkoversioTeoksen verkkoversioSaksalaiset hyökkäävät Etelä-SuomeenTaistelut LeppävaarassaSotilaat ja taistelutLeppävaara 1918 huhtikuussa. KapinatarinaHelsingin taistelut 1918Saksalaisten voitonparaati HelsingissäHelsingin valtausta juhlittiinSaksalaisten Helsinki vuonna 1918Helsingin taistelussa kaatuneet valkokaartilaisetHelsinkiin haudatut taisteluissa kaatuneet punaiset12.4.1918 Helsingin valtauksessa saksalaiset apujoukot vapauttavat kaupunginVapaussodan muistomerkkejä Helsingissä ja pääkaupunkiseudullaCrescendo / Vuoden 1918 Kansalaissodan uhrien muistomerkkim

            Adjektiivitarina Tarinan tekeminen | Esimerkki: ennen | Esimerkki: jälkeen | Navigointivalikko