sofortüberweisung.de

Das Plugin stellt die benötigten Elemente für die Bezahlabwicklung mit sofortüberweisung.de bereit. Dazu zählen die nötigen Einstellungen (als Global Settings), das Frontend-Template sowie den restlichen PHP-Code, der die Abläufe steuert.

Die Einrichtung des Plugins erfordert Eingriffe in den Frontend-Code und ist daher nicht einfach nur damit erledigt, das Plugin im Backend zu installieren. Insofern richtet sich diese Dokumentation an Integratoren, nicht an Shopbetreiber.

Voraussetzungen

  • PHP 5.2
    • hash-Erweiterung wird empfohlen, um SHA-256 bzw. SHA-512 zu nutzen
  • SallyCMS ab 0.4
  • varisale ab 3.0
  • Händlerkonto bei sü.de

Integration

Im folgenden wird die Einrichtung des Plugins beschrieben. Die nötigen Schritte sind teils etwas komplex, da wir auf größtmögliche Flexibilität Wert gelegt haben.

Vorbereitung

  1. Plugin installieren
  2. Im Backend sind nun unter Globale Einstellungen / varisale zwei neue Gruppen hinzugekommen:
    • “sofortüberweisung.de” enthält die Einstellungen zum Projekt:
      • Kundennummer und Projektnummer müssen aus dem Backend von sü.de übernommen werden.
      • Die beiden Betreffszeilen können angepasst werden, dabei sollte aber beachtet werden, dass die Zeilen nach der Ersetzung der Platzhalter nicht länger als 27 Zeichen sind. Außerdem sollte die erste Zeile unbedingt die Bestell-ID enthalten.
      • Zum Template kommen wir später.
    • “Passwörter und Hash-Algorithmus”:
      • Das Plugin erfordert sowohl das Projektpasswort zur Input-Prüfung als auch das zusätzliche Benachrichtigungspasswort, um den Empfang der Zahlungsbenachrichtigungen zu validieren. Diese Passwörter können im Backend von sü.de in den erweiterten Projekteinstellungen gesetzt / eingesehen werden.
      • Der Hashing-Algorithmus muss mit dem im Backend von sü.de gewählten übereinstimmen. Hier werden automatisch nur diejenigen Algorithmen aufgelistet, die der Server unterstützt.
  3. Im varisale-Backend sollte nun unter varisale / Einstellungen / Finanzen / Bezahlmethoden eine neue Bezahlmethode angelegt werden. Der interne Name, Titel und Preise sind für die eigentliche Integration nicht wichtig.
  4. Nachdem alle Daten eingetragen sind, kann das Frontend eingerichtet werden.

Frontend-Template

Im Plugin liegt im Verzeichnis varisale/plugins/sofortueberweisung/templates eine demo.php, die beispielhaft zeigt, wie das Frontend aufgebaut sein muss. Das Template sollte zur Einrichtung nach develop/templates kopiert werden.

Im Template-Code wird in

<?php
/**
 * @sly name suede
 */

// ...

der interne Name des Templates eingestellt. Das ist derjenige, der in den Globalen Einstellungen beim “Template” eingetragen werden muss. Damit weiß das Plugin, welches Templates es einbinden muss, wenn es aufgerufen wird.

Das Formular im Template kann beliebig angepasst werden, sollte aber mindestens alle Daten aus $params ausgeben und das Formular automatisch abschicken (das ist der einfachste Weg, einen POST-Request vom Client zu initiieren).

Workflow

Zur Verwendung von sü.de sollte der folgende Ablauf verwendet werden:

Bemerkung

Dies ist natürlich nur ein Beispiel. Aufgrund der Natur von varisale kann die Reihenfolge der Schritte beliebig variiert werden, zum Beispiel könnte auch ein One-Page-Checkout verwendet werden, bei dem die Dateneingabe und Übersicht auf einer einzelnen Seite stattfinden.

  1. Der Kunde legt Produkte in seinen Warenkorb.
  2. Der Kunde wird durch den Checkout-Prozess geleitet und gibt im Verlauf dessen Adresse, Liefermethode und Bezahlmethode an. Für die Bezahlmethode wählt er “sofortüberweisung.de”.
  3. Im letzten Schritt könnte noch einmal eine Übersicht angezeigt werden, die den abschließenden “Kauf abschließen”-Button enthält.
  4. Beim Klick auf “Kauf abschließen” wird der Warenkorb ausgecheckt und eine Bestellung erzeugt. Erst danach wird der Kunde zu sofortüberweisung.de geleitet. (Das bedeutet, dass es durchaus Bestellungen im Backend geben kann, für die keine Bezahlung durchgeführt wurde, wenn zum Beispiel die Bank des Kunden sü.de nicht zulässt oder der Kunde sich umentscheidet.)

Der Checkout könnte wie folgt aussehen:

<?
$cart   = Varisale::getCart();
$order  = null;
$method = $cart->getBillingMethod()->getName(); // interner Name aus dem Backend

try {
    // Checkout erfordert, dass bereits Liefer/Rechnungsadresse sowie -methoden gesetzt sind.
    // Andernfalls wird eine Exception geworfen.
    $order = $cart->checkout();
}
catch (VarisaleException $e) {
    print 'Die Bestellung konnte nicht durchgeführt werden.';
}

// Wenn sü.de ausgewählt ist, wird jetzt das Plugin angesprochen.
// Dabei wird schlussendlich das im Backend konfigurierte Template
// eingebunden, über das der Kunde auf die Bezahlabwicklung bei
// sü.de weitergeleitet wird.

if ($order && $method === 'suede') {
    Varisale_Plugin_Sofortueberweisung::execute($order);
}

Auswahl der Bezahlmethode

Bei der Auswahl der Bezahlmetode wird von “sofortüberweisung.de” empfohlen, den Bezahldienst mit dem folgenden Text zu beschreiben:

Online-Überweisung mit TÜV geprüftem Datenschutz ohne Registrierung. Bitte halten Sie Ihre Online-Banking-Daten (PIN/TAN) bereit. Dienstleistungen/Waren werden bei Verfügbarkeit SOFORT geliefert bzw. versendet!

Außerdem gibt es Logos und weitere Infos auf der Website von sofortüberweisung.de oder im Handbuch (PDF).

Bestellleichen

Das Verfahren, erst die Bestellung durchzuführen, kann zu unbezahlten (und damit eigentlich abgebrochenen) Bestellungen führen. Hier ist es also wichtig, auf den Bezahlstatus im Backend zu achten (das kleine Geldschein-Symbol bei jeder Bestellung).

In einer späteren Version des Plugins könnte man den Workflow noch aufbohren und z.B. Bestellungen, die seit 2 Wochen noch nicht bezahlt wurden, automatisch löschen lassen. Ebenso wäre es möglich, für den Abbruchlink einen speziellen Artikel anzugeben, der die Bestellung wieder löscht.

Warnung

ACHTUNG: Die Order-ID sollte dabei natürlich nicht dem Kunden zugänglich gemacht werden, damit er nicht beliebige Bestellungen löschen lassen kann!

Derartige Vorgehensweisen lohnen sich aber erst in hochfrequentierten Shops und wurden daher noch nicht integriert, um die Komplexität des Plugins nicht unnötig zu erhöhen.

HTTP-Benachrichtigungen

Über die Benachrichtigungen wird das Shopsystem über die erfolgreiche Durchführung der Überweisung informiert. Dazu sendet sü.de einen GET- oder POST-Request mit den Bezahldaten. Das Plugin nimmt diesen Request entgegen, validiert ihn und wird dann den bezahlt-Status der jeweiligen Bestellung setzen.

Das Plugin wird HTTP-konform auf die Benachrichtigungen reagieren und entsprechend 400, 409 oder 500 als Statuscode zurückliefern.

Einstellungen

Im Backend von sü.de muss die Benachrichtigung wie folgt konfiguriert werden:

  • Typ: POST (varisale unterstützt nur POST, da bei GET-Request datenschutzrelevante Informationen in den Serverlogs landen würden)
  • URL: http://www.exaple.com/index.php?suede_confirm=1&hash=-USER_VARIABLE_0_HASH_PASS- (Die URL muss auf keinen speziellen Artikel zeigen, das Plugin wird den Aufruf anhand des suede_confirm-Parameters erkennen.)

Die projektspezifische URL kann auch auf der Hilfeseite des Plugins im Sally-Backend eingesehen werden.

Platzhalter

Das Plugin definiert einige weitere Platzhalter, die in den eMail-Templates (siehe varisale/templates/emails) verwendet werden können. Dabei sollte allerdings beachtet werden, dass die Platzhalter natürlich erst nach Eingang der HTTP-Benachrichtigung mit sinnvollen Werten gefüllt werden können. Das Versenden der Mails sollte also ggf. erst nach Eingang der Benachrichtigung erfolgen.

Die neuen Platzhalter sind:

  • #SUEDE_TXID# (Transaktionsnummer, alphanumerisch in der Form XXXXX-XXXXXX-XXXXXXXX-XXXX)
  • #SUEDE_REASON1# (Betreffzeile 1)
  • #SUEDE_REASON2# (Betreffzeile 2)

Alle weiteren Informationen zum Käufer wie Bankdaten werden nicht in varisale gespeichert und stehen nur im Backend von sü.de zur Einsicht bereit. Hier gilt das Prinzip der Datensparsamkeit.