Abonnement Zahlungssysteme

Zahlungssysteme mit Abonnement-Funktion

Letzte Woche las ich in einem Forum, dass der Zahlungssystemanbieter PayPal die bisher mögliche Zahlungsfunktion eines Abonnements für Deutschland eingestellt hat. Mich traf es deshalb auch praktisch, da ich gerade mit einem Script, eine derartige Zahlung testete.

Wenn Sie Zahlungssysteme anschließen, dann müssen Sie immer eine Fülle von Coding für Schnittstellen stiften, die einmal den Auftrag an das Zahlungssystem senden, andererseits, wenn die Zahlung erfolgreich war, diese Daten in Ihrer Datenbank speichern, um zu wissen, dass der Kunde gezahlt hat.

Die meisten Zahlungssysteme haben so etwas wie eine Sandbox – eine Testumgebung – wo man seine Programmierung zunächst testen kann. Genau dort ist  es dann auch der Fall, dass auch Sie eine Fehlermeldung erhalten, Sie hätten eine Falsche Parameterliste abgesendet.

Das Zahlungssystem PayPal hat für den deutschen Raum die Abonnement-Funktion ausgeschaltet. Das bedeutet der Fehler!

Nachdem ich mich bei dem Zahlungsanbieter erkundigt hatte, kann ich  eine kleine Entwarnung geben:

Richtig ist:

  • Die Abonnement-Zahlung soll und ist für Deutschland eingestellt werden!
  • Mit der sog. Sandbox funktioniert die Schnittstelle für deutsche Konten nicht mehr!
  • Im Echtlauf soll die Funktion aber noch funktionieren! D.h. es sollen echte Zahlungen als Abo funktionieren.

Abhilfe: (lt. Auskunft des Helpdesk)

Erstellen Sie sich in der Sandbox ein ausländisches Konto als Verkaufskonto. Sie müssen dazu Ihr Sandbox-Verkaufskonto auf eine nicht-deutsche Verbindung legen. Dann funktioniert die Schnittstelle.

Warum PayPal diesen Schritt getan hat, konnte ich nicht finden.

Es gibt aber auch noch andere Abonnement-Zahlungssysteme, die allerdings ungünstigere Gebühren kosten, da sie meist mit einer monatlichen Gebühr behaftet sind. Gerade am Anfang Ihres Internetgeschäftes, ist dieser Umstand natürlich enorm ungünstig, da Sie bei PayPal ja nur für die echten Transaktionen zahlen.

Trotz allem möchte ich unter Bezug auf meinen letzten Artikel „Dynamische Linkshrinks“ auf die Situation bei Zahlungssystemen eingehen.

Wie funktioniert PayPal:

PayPal-Zahlungsprozess

Hier sieht man den sog. „dunklen“ (IPN) Zahlungsprozess bei der „sofortigen Zahlungsbestätigung“ von PayPal. Sie brauchen also 2 Seiten:

  1. die Danke-Seite, wo Sie bestätigen, dass der Kauf getätigt wurde und PayPal bald eine Mail mit der Bestätigung der Transaktion sendet.
  2. die Abbruch (Cancel)-Seite, die dann erscheint, wenn der Käufer die Transaktion abbricht.

Der eigentliche Verarbeitungsprozess auf Ihrer Seite geschieht „dunkel„. Gleich wenn Ihr IPN-Programm startet, müssen Sie die von PayPal übergebenen Daten,  sofort wieder an PayPal senden. Das ist die Bestätigung für PayPal. Sie erhalten dann die Transaktionsdaten und können sie verarbeiten.

Sie müssen in dem dunklen Prozess also alle Speicherungen vornehmen, um in Ihrer Umgebung festzuhalten, dass der Kunde bezahlt hat.

Merken Sie die Bedeutung des Wortes „dunkel“? Dieser Prozess hat keinerlei Bildschirmausgabe, er läuft parallel, während die Danke-Seite angezeigt wird.

Soweit ist der Prozess eigentlich einleuchtend. Doch was passiert bei Fehlern?

Wenn Sie das Programm nicht so gestrickt haben, dass Fehlermeldungen per Mail versendet werden, stehen Sie im Dunklen! Das ist genau der Grund, warum man bei Programmen, sie z.B. smartDDLite aufpassen muss, denn smartDDLite versendet hier keine Fehlermeldungen. Ich kenne noch eine ganze Reihe anderer Programme, die dies auch nicht tun. Man kann also nicht sagen, dass diese Programme robust sind.

Wenn Sie von einem freundlichen Kunden nicht angeschrieben werden, der Ihnen mitteilt, dass er den Kauf versucht hat, doch nix passiert ist! Dann haben Sie keine Verkäufe, verlieren Kunden und wissen nicht warum.

Wie sollte also ein Programm aussehen, damit wir alle Fehler mitbekommen. Neben logischen Fehlern, die PayPal senden kann, gibt es ja auch noch Fehler, die beim Aufruf von Datenbankfunktionen passieren können. Also müssen beide Fehermeldungsursachen als Mail versendet werden. Auf der PayPal-Seite sind die Transaktionsfehler nur dann anzeigbar, wenn Sie offensichtlich sind. Im anderen Fall erhalten Sie von PayPal einfach die Meldung „INVALID“ und fertig.

Machen wie also ein Szenario:

Sie haben eine Seite, wo der Kunde über einen Button das Zahlungssystem ansteuern kann. Dieser Button ist meist Teil eines Formulars. Dieses Formular, kann auch von Crawlern ausgeführt werden, so dass Sie Leerzahlungen und Fehler erhalten. Wäre es nicht besser, wenn der Kunde über ein OptIn1-Formular seine Daten eingibt und er eine Bestätigungsmail erhält.

In dieser Bestätigungsmail, die ja auf seinen Mailaccount gesendet wird, erhält er einen Link – einen Linkschrink, mit dem er die ganze Zahlung anstößt. Als Parameter für diesen Link müssen Sie natürlich alles mitgeben, was Sie für einen PayPal-Aufruf  benötigen. Also Nummer des Benutzers, Nummer des Verkaufsproduktes, hat Email akzeptiert etc. So erhalten Sie eigentlich nur Aufrufe von bekannten Personen, die Crawler sind außen vor!

Diesen Link können Sie sich erstellen und mit z.B. tinyurl shrinken lassen. Kommt der Linkaufruf in das Programm, merken Sie sich die Parameter und rufen das Programm mit einer anderen Parameterleiste einfach wieder auf (PHP-Funktion header() ). Damit haben Sie die Parameter des Links versteckt.

Im 2. Aufruf des Programms rufen Sie jetzt PayPal auf, und der Kunde sieht als nächstes nur den PayPal – Bezahl-Schirm! Wie aber kann ich mir die Parameterleiste des 1. Aufrufs im PHP-Programm merken?

Das dringt ziemlich weit in die PHP-Programmierung ein: Man braucht dazu sog. PHP-Sessions, die sich Daten über mehrere Bildschirmwechsel merken können. Es würde hier zu weit führen, in diesem Artikel auch noch die Sessions zu erklären, das werde ich – wenn Interesse besteht – in einem gesonderten Artikel schreiben.

Was Sie aber hier sehen, ist dass man aus Sicherheitsgründen – und die lassen viele Programme vermissen – aufpassen muss, wie man den Aufruf gegenüber böswilligen Personen schützen muss. Es soll ja das Geld auf Ihr Konto gehen und nicht auf ein anderes. Lesen Sie sich also die Beschreibungen der „Kaufprogramme“ genauestens durch, und versuchen Sie diese erst zu testen. Irgendwo im Programm sehen Sie die PayPal-Schnittstelle, prüfen Sie, ob es dort Aufrufe gibt die „mail“ lauten. Meist gibt es auch noch eine eigenen Datenbankschnittstelle als sog. Klasse (class), um die Datenbank-Funktionen aufzurufen, prüfen Sie auch dort, ob es „mail“-Aufrufe gibt. Wenn nicht, werfen Sie das Programm in den Müll.

Bernd Klüppelberg

Bisher gibt es keinen Kommentar. Schreiben Sie einen Kommentar!

Schreibe einen Kommentar