# Zahlungsabieterplugins entwickeln

**URL:** <https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [20. Juni 2011 um 10:10 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194 "2011-06-20T10:10:05Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. Juni 2011 um 10:10 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/1 "2011-06-20T10:10:05Z")

</div>

Hey, ich schaue mir gerade das neue Tutorial dazu an. Nun habe ich eine Frage/Problem beim weiterleiten. Die externe Seite wird wie bei Paypal in einem Iframe angezeigt. Sobald die Zahlung erfolgreich war, leite ich auf auf den Payment Controller zurück das EndAction. ` /\*\* \* End action method \*/ public function endAction() { $secret = Shopware()-\>Config()-\>myPaymentSecret; $transactionId = $this-\>Request()-\>getParam('transactionId'); $status = $this-\>Request()-\>getParam('status'); $hash = $this-\>Request()-\>getParam('hash'); if(empty($transactionId) || $status != 'success' || $hash != md5($secret.'|'.$transactionId.'|success')) { return $this-\>forward('error'); } $this-\>saveOrder($transactionId, $hash); return $this-\>forward('finish', 'checkout', null, array('sUniqueID' =\> $hash)); } ` Nun spielt sich das ganze ja immer noch im Iframe ab und der Code return $this-\>forward(‘finish’, ‘checkout’, null, array(‘sUniqueID’ =\> $hash)); wird auch im Iframe ausgeführt bzw. angezeigt. Wie mache ich das für die komplette Seite? Danke

---

<div class="post-metadata">

**Author:** ![avenger](https://avatars.discourse-cdn.com/v4/letter/a/9de0a6/32.png) [@avenger](https://forum.shopware.com/u/avenger)\
**Post date:** [20. Juni 2011 um 10:48 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/2 "2011-06-20T10:48:40Z")

</div>

[quote=“ottscho”]Hey, ich schaue mir gerade das neue Tutorial dazu an. Nun habe ich eine Frage/Problem beim weiterleiten. Die externe Seite wird wie bei Paypal in einem Iframe angezeigt. Sobald die Zahlung erfolgreich war, leite ich auf auf den Payment Controller zurück das EndAction. ` /\*\* \* End action method \*/ public function endAction() { $secret = Shopware()-\>Config()-\>myPaymentSecret; $transactionId = $this-\>Request()-\>getParam('transactionId'); $status = $this-\>Request()-\>getParam('status'); $hash = $this-\>Request()-\>getParam('hash'); if(empty($transactionId) || $status != 'success' || $hash != md5($secret.'|'.$transactionId.'|success')) { return $this-\>forward('error'); } $this-\>saveOrder($transactionId, $hash); return $this-\>forward('finish', 'checkout', null, array('sUniqueID' =\> $hash)); } ` Nun spielt sich das ganze ja immer noch im Iframe ab und der Code return $this-\>forward(‘finish’, ‘checkout’, null, array(‘sUniqueID’ =\> $hash)); wird auch im Iframe ausgeführt bzw. angezeigt. Wie mache ich das für die komplette Seite? Danke[/quote] Warum machst Du das im IFRAME und leitest nicht direkt auf die PayPal-Seite weiter? Oder Du baust im Checkout-Template ein Javascript ein, das die Seite aus dem IFRAME befreit: `<script type="text/javascript"> 
     <!--
     if (parent.frames.length > 0)  
        top.location=self.location;  
     <!-- 
     </script> `

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. Juni 2011 um 10:53 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/3 "2011-06-20T10:53:30Z")

</div>

[quote=“avenger”][quote=“ottscho”]Hey, ich schaue mir gerade das neue Tutorial dazu an. Nun habe ich eine Frage/Problem beim weiterleiten. Die externe Seite wird wie bei Paypal in einem Iframe angezeigt. Sobald die Zahlung erfolgreich war, leite ich auf auf den Payment Controller zurück das EndAction. ` /\*\* \* End action method \*/ public function endAction() { $secret = Shopware()-\>Config()-\>myPaymentSecret; $transactionId = $this-\>Request()-\>getParam('transactionId'); $status = $this-\>Request()-\>getParam('status'); $hash = $this-\>Request()-\>getParam('hash'); if(empty($transactionId) || $status != 'success' || $hash != md5($secret.'|'.$transactionId.'|success')) { return $this-\>forward('error'); } $this-\>saveOrder($transactionId, $hash); return $this-\>forward('finish', 'checkout', null, array('sUniqueID' =\> $hash)); } ` Nun spielt sich das ganze ja immer noch im Iframe ab und der Code return $this-\>forward(‘finish’, ‘checkout’, null, array(‘sUniqueID’ =\> $hash)); wird auch im Iframe ausgeführt bzw. angezeigt. Wie mache ich das für die komplette Seite? Danke[/quote] Warum machst Du das im IFRAME und leitest nicht direkt auf die PayPal-Seite weiter? Oder Du baust im Checkout-Template ein Javascript ein, das die Seite aus dem IFRAME befreit: `<script type="text/javascript"> 
     <!--
     if (parent.frames.length > 0)  
        top.location=self.location;  
     <!-- 
     </script> `[/quote] Ich finde es rein optisch schöner, wenn das Templates des Shops noch angezeigt wird. Den Tipp mit deinem Code werde ich versuchen. Danke dir Paypal war übrigens nur ein Beispiel.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. Juni 2011 um 14:02 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/4 "2011-06-20T14:02:30Z")

</div>

Irgendwie komme ich hier allgemein nicht weiter. Im Beispiel wird mit saveOrder die Bestellung gespeichert. Versuche ich das so ` saveOrder('testid','testhash') ` erhalte ich den Fehler: Fatal error: Uncaught exception ‘PDOException’ with message ‘SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’ 0, 0, 0, 0, now(), 0, 17, , ‘testid’, ‘’ at line 3’ in /kunden/117539\_78141/webseiten/testshop/engine/Enlight/Vendor/Zend/library/Zend/Db/Adapter/Pdo/Abstract.php:263 Stack trace:

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. Juni 2011 um 15:25 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/5 "2011-06-20T15:25:41Z")

</div>

Hey Stefan, hast du als Verfasser des Tutorial eine Idee woran das liegen könnte? Die beiden Werte können ja zum Test irgendwelche Informationen tragen, oder?

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [20. Juni 2011 um 15:52 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/6 "2011-06-20T15:52:51Z")

</div>

Hey, nein, das muss ein numerischer Wert sein, deshalb knallt die SQL-Abfrage auch.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. Juni 2011 um 16:10 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/7 "2011-06-20T16:10:30Z")

</div>

Irgendwie bin ich zu blöd für das Tutorial. Oder ich habe es einfach noch nicht verstanden. Mit dem Code wird dich die Bestellung abgespeichert und dazu einen beliebige ID (welche normalerweise vom Zahlungsanbieter kommt, zur externen Zuordnung). Ich habe es jetzt mit allen Möglichen Variationen versucht: ` $this-\>saveOrder('666666','irgendwas'); $this-\>saveOrder(666666,'irgendwas'); ` Leider immer mit der gleichen PDO Fehlermeldung. Außerdem ist mir aufgefallen, dass die Paymentmethoden bei mir leer sind. Evtl. habe ich allgemein ein Problem. [code]\<?php class Shopware\_Controllers\_Frontend\_PaymentTest extends Shopware\_Controllers\_Frontend\_Payment

{

```
public function indexAction()

{

	//Versuch 1
            die($this->getPaymentShortName()); //Versuch 2 $this-\>saveOrder(666666,'hash'); } } ?\> [/code]
```

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [20. Juni 2011 um 16:13 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/8 "2011-06-20T16:13:42Z")

</div>

Im Anhang mal eine komplette Beispiel-Schnittstelle (EOS) auf Basis der neuen API - eventuell bringt dich das weiter.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. Juni 2011 um 19:57 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/9 "2011-06-20T19:57:16Z")

</div>

Hey Stefan, der EOS Code funktioniertbei euch, oder? Wenn ich auf Zahlung durchführe lande ich auf: [http://www.shopware.vm/shopware.php/sVi … ayment\_eos](http://www.shopware.vm/shopware.php/sViewport,payment%5C_eos) Und die Startseite wird angezeigt. Der Controller heißt ja auch “Shopware\_Controllers\_Frontend\_PaymentEos” Sollte dann nicht auch [http://www.shopware.vm/shopware.php/sVi … PaymentEos](http://www.shopware.vm/shopware.php/sViewport,PaymentEos) aufgerufen werden?

---

<div class="post-metadata">

**Author:** ![SebastianKloepper](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sebastiankloepper/32/21435_2.png) [@SebastianKloepper](https://forum.shopware.com/u/SebastianKloepper)\
**Post date:** [20. Juni 2011 um 20:00 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/10 "2011-06-20T20:00:57Z")

</div>

Ist dein Shop von extern erreichbar? Für die Schnittstelle muss dieser nach außer erreichbar sein.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. Juni 2011 um 20:03 UTC](https://forum.shopware.com/t/zahlungsabieterplugins-entwickeln/3194/11 "2011-06-20T20:03:07Z")

</div>

Der Shop läuft auf meinem PC unter VMWARE unter (shopware.vm). Die Domain ist von draußen natürlich nicht errreichbar… mhhh, okay!
