# subscribeEvent-&gt;sOrder::setPaymentStatus

**URL:** https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898
**Category:** Shopware 3.5
**Tags:** programming
**Created:** [1. Dezember 2014 um 12:40 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898 "2014-12-01T12:40:26Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![klausstangl](https://avatars.discourse-cdn.com/v4/letter/k/919ad9/32.png) [@klausstangl](https://forum.shopware.com/u/klausstangl)
#### Post date: [1. Dezember 2014 um 12:40 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/1 "2014-12-01T12:40:26Z")

</div>

Hallo! Ich schreibe gerade an einem Plugin das sobald sich der PaymentStatus ändert ausgeführt werden soll. Leider funktioniert das ganze nur z.B. wenn man per Paypal zahlt. Verändert man “händisch” im Backend bzw per Batch-Processing den Status tut sich leider nichts. Kann es sein das die Backendfunktionen setPaymentStatus umgehen? Viele Grüße, Klaus

---

<div class="post-metadata">

### Author: ![mbdus](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/mbdus/32/12997_2.png) [@mbdus](https://forum.shopware.com/u/mbdus)
#### Post date: [1. Dezember 2014 um 13:56 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/2 "2014-12-01T13:56:44Z")

</div>

Wie sieht denn dein subscribeEvent genau aus? Kannst du die Syntax mal posten.

---

<div class="post-metadata">

### Author: ![waldicom](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/waldicom/32/12881_2.png) [@waldicom](https://forum.shopware.com/u/waldicom)
#### Post date: [1. Dezember 2014 um 14:10 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/3 "2014-12-01T14:10:13Z")

</div>

Das Backend arbeitet schon mit Doctrine, daher kann man die sogenannten Doctrine Events verwenden. Hier mehr dazu: [http://wiki.shopware.com/Shopware-4-Mod … del\_Events](http://wiki.shopware.com/Shopware-4-Models%5C_detail%5C_982.html#Model%5C_Events) Speziell in Deinem Fall kann man folgendes verwenden ` $this-\>subscribeEvent( 'Shopware\Models\Order\Order::postUpdate', 'postUpdateOrder' ); `

---

<div class="post-metadata">

### Author: ![klausstangl](https://avatars.discourse-cdn.com/v4/letter/k/919ad9/32.png) [@klausstangl](https://forum.shopware.com/u/klausstangl)
#### Post date: [1. Dezember 2014 um 14:44 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/4 "2014-12-01T14:44:09Z")

</div>

[quote=„mbdus“]Wie sieht denn dein subscribeEvent genau aus? Kannst du die Syntax mal posten.[/quote] public function install() { $this-\>subscribeEvent(‚sOrder::setPaymentStatus::after‘,‚xyz‘ ); return array(‚success‘ =\> true, ‚invalidateCache‘ =\> array(‚frontend‘)); } Wie geschrieben funktioniert mit Paypal ohne Probleme. -klaus

---

<div class="post-metadata">

### Author: ![klausstangl](https://avatars.discourse-cdn.com/v4/letter/k/919ad9/32.png) [@klausstangl](https://forum.shopware.com/u/klausstangl)
#### Post date: [1. Dezember 2014 um 15:08 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/5 "2014-12-01T15:08:25Z")

</div>

[quote=“waldicom”]Das Backend arbeitet schon mit Doctrine, daher kann man die sogenannten Doctrine Events verwenden. Hier mehr dazu: [http://wiki.shopware.com/Shopware-4-Mod … del\_Events](http://wiki.shopware.com/Shopware-4-Models%5C_detail%5C_982.html#Model%5C_Events) Speziell in Deinem Fall kann man folgendes verwenden ` $this-\>subscribeEvent( 'Shopware\Models\Order\Order::postPersist', 'postPersistOrder' ); `[/quote] Müsste man nicht auf den Update-Event schauen? -klaus

---

<div class="post-metadata">

### Author: ![waldicom](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/waldicom/32/12881_2.png) [@waldicom](https://forum.shopware.com/u/waldicom)
#### Post date: [1. Dezember 2014 um 15:10 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/6 "2014-12-01T15:10:28Z")

</div>

Jupp, natürlich auf Update. Copy/paste von der o.g. Seite, daher der Fehler. Verzeihung für die Verwirrung.

---

<div class="post-metadata">

### Author: ![klausstangl](https://avatars.discourse-cdn.com/v4/letter/k/919ad9/32.png) [@klausstangl](https://forum.shopware.com/u/klausstangl)
#### Post date: [1. Dezember 2014 um 15:35 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/7 "2014-12-01T15:35:51Z")

</div>

[quote=“waldicom”]Jupp, natürlich auf Update. Copy/paste von der o.g. Seite, daher der Fehler. Verzeihung für die Verwirrung.[/quote] Macht nix, danke für den Tipp! Mir ist ehrlich gesagt nicht ganz klar wie man damit umgeht. Soweit ich das sehe muss ich irgendwie prüfen was sich geändert hat und darauf reagieren. Wenn ich das wie oben (sOrder::setPaymentStatus) definiere bekomme ich die Enlight\_Hook\_HookArgs und kann von dort die orderID usw auslesen und weiter verarbeiten. Wie kommt man bei den Enlight\_Event\_EventArgs an die Daten ran? Ich hab da nur das das Verfügbarkeitsprüfungs-Beispiel gefunden was mir da nicht wirklich hilft. -klaus

---

<div class="post-metadata">

### Author: ![waldicom](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/waldicom/32/12881_2.png) [@waldicom](https://forum.shopware.com/u/waldicom)
#### Post date: [1. Dezember 2014 um 15:39 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/8 "2014-12-01T15:39:30Z")

</div>

Etwa so kann man auf die Bestellung zugreifen: Event ` $this-\>subscribeEvent( 'Shopware\Models\Order\Order::postUpdate', 'onOrderPostUpdate' ); ` Listener ` public function onOrderPostUpdate(Enlight\_Event\_EventArgs $arguments) { $model = $arguments-\>get('entity'); // Bestellung selbst (das Model) $orderId = $model-\>getId(); //Bestellungs ID $newStatusId = $model-\>getOrderStatus()-\>getId(); // neuer Status ..... ... prüfen, aktualisieren, was anderes machen .... ..... }`

---

<div class="post-metadata">

### Author: ![klausstangl](https://avatars.discourse-cdn.com/v4/letter/k/919ad9/32.png) [@klausstangl](https://forum.shopware.com/u/klausstangl)
#### Post date: [1. Dezember 2014 um 15:43 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/9 "2014-12-01T15:43:53Z")

</div>

Danke :thumbup:

---

<div class="post-metadata">

### Author: ![HolleWolle](https://avatars.discourse-cdn.com/v4/letter/h/e95f7d/32.png) [@HolleWolle](https://forum.shopware.com/u/HolleWolle)
#### Post date: [22. März 2017 um 08:14 UTC](https://forum.shopware.com/t/subscribeevent-gt-sorder-setpaymentstatus/23898/10 "2017-03-22T08:14:20Z")

</div>

> [@waldicom schrieb:](https://forum.shopware.com/profile/2006/waldicom "waldicom")
> 
> Etwa so kann man auf die Bestellung zugreifen:
> 
> Event
> 
> $this-\>subscribeEvent( ‚Shopware\Models\Order\Order::postUpdate‘, ‚onOrderPostUpdate‘ );
> 
> Listener
> 
> public function onOrderPostUpdate(Enlight\_Event\_EventArgs $arguments) { $model = $arguments-\>get(‚entity‘); // Bestellung selbst (das Model) $orderId = $model-\>getId(); //Bestellungs ID $newStatusId = $model-\>getOrderStatus()-\>getId(); // neuer Status … … prüfen, aktualisieren, was anderes machen … … }

Sorry, dass ich mich hier in den alten thread einklinke, aber vielleicht kann mir ja hier jemand weiterhelfen. Wenn ich das oben zitierte so anwende erhalte ich immer folgende Fehlermeldung:

SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

Woran kann das liegen?
