Geschrieben von Christian Schnettelker

Schlagwörter:

Steuerkiste – Teil 3: Bezahlsysteme

Im dritten und letzten Teil zu meinem sommerlichen Großprojekt „Steuerkiste“ geht es ums liebe Geld, speziell um die technische Einbindung verschiedener Bezahlsysteme.

Gleichwohl sicher viele auf Rechnung bestellen werden sollte es natürlich auch möglich sein, die gewünschte Kiste direkt online mit einem der gängigsten Zahlungsmethoden bezahlen zu können.

Steuerkiste Zahlungsart
In der alten Webseite stand, neben dem Kauf auf Rechnung, lediglich der relativ unbekannte Zahlungsdienst „VR-Pay“ der Volks- und Raiffeisenbanken zur Verfügung. Schon vorab war klar, dass in der neuen Fassung unbedingt auch der „Platzhirsch“ PayPal eingebunden werden musste.

Aber auch diese Alternative gefällt nicht allen, hat das US-Unternehmen doch in der Vergangenheit durch rigide Geschäftspolitik manche Kunden verärgert. Da ich persönlich bei meinen Einkäufen gute Erfahrungen mit der Sofortüberweisung gemacht hatte, gelang es mir, die Inhaber zu überzeugen, diesen Dienst ebenfalls einzubinden.

PayPal

Hier konnte ich auf den Code des damaligen Creme Royale Shops zurückgreifen, den ich ca. 2007 programmierte und der bis ca. 2010 online war, das Vorgehen ist nahezu unverändert. Kurz gesagt werden die Daten beim Aufruf der PayPal-Seite innerhalb eines Formulars als versteckte Felder per „Post“ übergeben:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
 
/* Block 1 */
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="#######@steuerkiste.de">

/* Block 2 */
<input type="hidden" name="item_name_1" value="Steuerkiste Bestell-Nr. ' . $iBestellNr . '">
<input type="hidden" name="amount_1" value="' . number_format( $fPreis,2,'.','') . '">
<input type="hidden" name="shipping_1" value="' . VERSANDKOSTEN . '">

/* Block 3 */ 
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="email" value="">

/* Block 4 */ 
<input type="hidden" name="cancel_return" value="########/zahlung-abbruch.html">
<input type="hidden" name="return" value="#########/zahlung-erfolg.html">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="rm" value="2">
 
<button type="submit" class="skform-next flexybutton" id="next">
Jetzt per PayPal bezahlen&nbsp;&nbsp;<i class="fa fa-external-link"></i>
</button>
</form>

Hinweis: aus Sicherheitsgründen sind vertrauliche Angaben mit #### überschrieben. In Block 1 werden einige Basis-Parameter angegeben und in Block 2 der Artikel „_1″ definiert, welcher aus der Steuerkiste selber nebst Bestellnummer, dem Preis und den Versandkosten besteht.

Block 3 legt die Währung (EUR) fest und Block 4 beschreibt, welche Seiten aufgerufen werden, wenn die Zahlung erfolgreich war oder abgebrochen wird.

Das war es eigentlich schon, sämtliche möglichen Parameter und deren Bedeutung sind auf der Seite „PayPal-Kaufabwicklung in den Warenkorb eines Drittanbieters integrieren“ beschrieben. Zu beachten wäre unbedingt, dass es einen Unterschied macht, ob ein kompletter Warenkorb (cmd = _xclick) oder einzelne Artikel (cmd = _cart) übergeben werden.

Es gibt auch noch andere und teils modernere Methoden, PayPal aufzurufen, damit habe ich mich aber nicht beschäftigt. Der Benutzer sieht die folgende Seite:

Zahlung per PayPal
Nach Klick auf „Jetzt per PayPal bezahlen“ werden die Formulardaten „gepostet“ und der Kunde erreicht die PayPal-Seiten, um die Zahlung dort auszuführen. Anschließend landet er wieder auf einer Bestätigungsseite der Steuerkiste.

Im Notfall

Der gesamte Zahlungsvorgang ist so programmiert, dass der Benutzer, sollte es mit einer Zahlung Schwierigkeiten geben, notfalls auf eine andere Zahlungsmethoden wechseln kann:

Zahlungsvorgang abgebrochen
Hier ist auch vorgesehen, den Vorgang zu wiederholen, Hilfe anzufordern oder die Bestellung zu stornieren – der Plan war, dem Betreiber telefonische Anfragen soweit als möglich zu ersparen und dem Kunden maximalen Komfort zu bieten und jederzeit zu informieren, was gerade passiert.

Sofortüberweisung

Die Zahlung per Sofortüberweisung läuft etwas anders. Dazu muss, wenn man PHP benutzt, eine kleine Bibliothek namens „SOFORTlib“ eingebunden werden:

require_once( './sofort/payment/sofortLibSofortueberweisung.inc.php' );

Diese ist auf der Seite sofort.com als Download erhältlich. Anschließend erzeugt man ein Objekt vom Typ „Sofortueberweisung“, definiert einige Parameter und ruft die Objektfunktion sendRequest() auf, inetwa so:

$configkey = '########################################';
$Sofort = new Sofortueberweisung( $configkey );

$Sofort->setAmount( $fPreis + VERSANDKOSTEN );
$Sofort->setCurrencyCode( 'EUR' );

$Sofort->setReason( 'Steuerkiste','Bestell-Nr. ' . $iBestellNr );
$Sofort->setSuccessUrl( ##########/zahlung-erfolg.html',true );
$Sofort->setAbortUrl( ##########/zahlung-abbruch.html' );

$Sofort->sendRequest();
if ( $Sofort->isError() ) header( "Location:  ##########/zahlung-abbruch.html" );
else { $paymentUrl = $Sofort->getPaymentUrl();
       header( 'Location: '.$paymentUrl );
     }

Nähere Informationen finden Sie im Netz, beispielsweise unter https://github.com/asgoodasnu/SofortLib-PHP-Payment. Den notwendigen „Config-Key“ erhalten Sie, wenn Sie sich über sofort.com anmelden und ein Projekt anlegen.

Dort gibt es übrigens auch die Möglichkeit, den Zahlungsvorgang zu testen, ohne dass tatsächlich Geld fließt – sehr schön! Der Kunde sieht, ähnlich Paypal, die folgende Seite:

Zahlung Sofortüberweisung
Nach Klick auf „Jetzt über Sofortüberweisung zahlen“ startet der dortige Zahlvorgang.

Das war’s

Zur Zeit fehlt der Steuerkiste noch die Einbindung von VR-Pay, der entsprechende Menüpunkt ist ausgegraut und folgt in Kürze.

Bei der Auswahl „Zahlung auf Rechnung“ passiert übrigens technisch schlicht gar nichts, der Kunde wird sich aber sicherlich genau überlegen, ob er die anschließend per Post erhaltene Rechnung nicht zahlt und sich mit der dahinter stehenden Rechtsanwaltskanzlei anlegt.

Pin on PinterestShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedIn

Kommentare

Kommentare

Kommentar schreiben

Allgemeiner Hinweis: Bitte kommentieren Sie zum Thema unter Vermeidung von Allgemeinplätzen und Einzeilern. Eine korrekte Rechtschreibung wird erwartet.

Hinweis für SEO-Kommentarschreiber: alle Links sind nofollow und steigern Eure Linkpopularität nicht. Die Kommentare werden moderiert, offensichtliche SEO-Kommentare nicht veröffentlicht.