# Bestellung vor Payment speichern

**URL:** <https://forum.shopware.com/t/bestellung-vor-payment-speichern/53316>\
**Category:** Programmierung\
**Created:** [6. Juni 2018 um 17:14 UTC](https://forum.shopware.com/t/bestellung-vor-payment-speichern/53316 "2018-06-06T17:14:24Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![rreimche](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@rreimche](https://forum.shopware.com/u/rreimche)\
**Post date:** [6. Juni 2018 um 17:14 UTC](https://forum.shopware.com/t/bestellung-vor-payment-speichern/53316/1 "2018-06-06T17:14:24Z")

</div>

Hallo Zusammen,

soweit ich verstehe, Shopware speichert die Bestellung nachdem die Bezahlung erfolgreich durchgeführt wird. Ich brauche aber, dass die Bestellung sofort nach dem Klicken von&nbsp;„Kostenpflichtig bestellen“ gespeichert werden, also vor der Bezahlung. Wie könnte ich das erledigen?

&nbsp;

LG

---

<div class="post-metadata">

**Author:** ![rreimche](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@rreimche](https://forum.shopware.com/u/rreimche)\
**Post date:** [6. Juni 2018 um 17:32 UTC](https://forum.shopware.com/t/bestellung-vor-payment-speichern/53316/2 "2018-06-06T17:32:15Z")

</div>

Im Controller für Payment ich habe das folgende gefunden:

```
            $user = $this->getUser();
            $basket = $this->getBasket();

            $order = Shopware()->Modules()->Order();
            $order->sUserData = $user;
            $order->sComment = Shopware()->Session()->sComment;
            $order->sBasketData = $basket;
            $order->sAmount = $basket['sAmount'];
            $order->sAmountWithTax = !empty($basket['AmountWithTaxNumeric']) ? $basket['AmountWithTaxNumeric'] : $basket['AmountNumeric'];
            $order->sAmountNet = $basket['AmountNetNumeric'];
            $order->sShippingcosts = $basket['sShippingcosts'];
            $order->sShippingcostsNumeric = $basket['sShippingcostsWithTax'];
            $order->sShippingcostsNumericNet = $basket['sShippingcostsNet'];
            // I don't need this at this point: $order->bookingId = $transactionId;
            $order->dispatchId = Shopware()->Session()->sDispatch; // DO I NEED THIS?
            $order->sNet = empty($user['additional']['charge_vat']);
            // I suppose I don't need this at this point: $order->uniqueID = $paymentUniqueId;
            $order->deviceType = $this->Request()->getDeviceType();
            $orderNumber = $order->sSaveOrder();

```

Kann ich das so bei&nbsp;Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Checkout vor&nbsp;paymentAction benutzen? Oder wie soll ich es anpassen?

---

<div class="post-metadata">

**Author:** ![rreimche](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@rreimche](https://forum.shopware.com/u/rreimche)\
**Post date:** [6. Juni 2018 um 17:42 UTC](https://forum.shopware.com/t/bestellung-vor-payment-speichern/53316/3 "2018-06-06T17:42:50Z")

</div>

Eigentlich habe ich eine etwa bessere option bei Shopware\_Controllers\_Frontend\_Checkout::saveOrder() gefunden:

&nbsp;

```
        $order = Shopware()->Modules()->Order();
        $order->sUserData = $this->View()->sUserData;
        $order->sComment = isset($this->session['sComment']) ? $this->session['sComment'] : '';
        $order->sBasketData = $this->View()->sBasket;
        $order->sAmount = $this->View()->sBasket['sAmount'];
        $order->sAmountWithTax = !empty($this->View()->sBasket['AmountWithTaxNumeric']) ? $this->View()->sBasket['AmountWithTaxNumeric'] : $this->View()->sBasket['AmountNumeric'];
        $order->sAmountNet = $this->View()->sBasket['AmountNetNumeric'];
        $order->sShippingcosts = $this->View()->sBasket['sShippingcosts'];
        $order->sShippingcostsNumeric = $this->View()->sBasket['sShippingcostsWithTax'];
        $order->sShippingcostsNumericNet = $this->View()->sBasket['sShippingcostsNet'];
        $order->dispatchId = $this->session['sDispatch'];
        $order->sNet = !$this->View()->sUserData['additional']['charge_vat'];
        $order->deviceType = $this->Request()->getDeviceType();

        return $order->sSaveOrder();

```

Wenn ich das an dem genannten Zeitpunkt verwende, zerstört das irgendwie das Checkout-Prozess irgendwo später?

---

<div class="post-metadata">

**Author:** ![rreimche](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@rreimche](https://forum.shopware.com/u/rreimche)\
**Post date:** [6. Juni 2018 um 17:57 UTC](https://forum.shopware.com/t/bestellung-vor-payment-speichern/53316/4 "2018-06-06T17:57:34Z")

</div>

Oder wäre es besser die oben genannte Methode einfach so aufrufen?

```
$controller = $args->get('subject');
$controller->saveOrder();

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![derwunner](https://avatars.discourse-cdn.com/v4/letter/d/e5b9ba/32.png) [@derwunner](https://forum.shopware.com/u/derwunner)\
**Post date:** [8. Juni 2018 um 10:55 UTC](https://forum.shopware.com/t/bestellung-vor-payment-speichern/53316/5 "2018-06-08T10:55:55Z")

</div>

Hallo,

&nbsp;

nein, falsch. Shopware speichert jede Bestellung immer sofort nach dem Klick auf “kostenpflichtig bestellen”. Die Stati, also Zahlungssatus und Bestellungsstatus ändern sich dann nur noch.

&nbsp;

&nbsp;

MFG

&nbsp;

derwunner

---

<div class="post-metadata">

**Author:** ![rreimche](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@rreimche](https://forum.shopware.com/u/rreimche)\
**Post date:** [17. Juni 2018 um 16:09 UTC](https://forum.shopware.com/t/bestellung-vor-payment-speichern/53316/6 "2018-06-17T16:09:53Z")

</div>

> [@derwunner schrieb:](https://forum.shopware.com/profile/25468/derwunner "derwunner")
> 
> Hallo,
> 
> &nbsp;
> 
> nein, falsch. Shopware speichert jede Bestellung immer sofort nach dem Klick auf „kostenpflichtig bestellen“. Die Stati, also Zahlungssatus und Bestellungsstatus ändern sich dann nur noch.
> 
> &nbsp;
> 
> &nbsp;
> 
> MFG
> 
> &nbsp;
> 
> derwunner

[Hier](https://developers.shopware.com/developers-guide/payment-plugin/) steht, dass OrderNumber wird normalerweise nur nach Bezahlung generiert und gespeichert. Und vor dem Zeitpunkt wird die Bestellung als temporär gespeichert, sodass sie im Backend unsichtbar ist.
