Wie shipcloud das Payment-Ökosystem für sich verwendet

For an English version of this blogpost, please visit our friends at the Paymill blog.

Das einfache SaaS um Pakete zu versenden

Kleine und mittelgroße Firmen sind immer auf der Suche nach Möglichkeiten, um Kosten zu verringern und Komplexität aus ihrem Tagesgeschäft herauszunehmen. Ist der Versand von Waren ein Teil des Geschäftsmodells, so wird in den meisten Fällen versucht, dies über den günstigsten, aber gleichzeitig zuverlässigsten Versanddienstleister abzuwickeln.

In Deutschland fällt die Wahl dabei in den meisten Fällen auf DHL, da sie über ein großes Filialnetz verfügen und die Pakete eigentlich an jede Adresse innerhalb Deutschlands zustellen. Leider ist DHL im Vergleich zum Wettbewerb nicht immer günstig, so dass es sich für viele Firmen lohnt, sich die Alternativen anzuschauen. Aber wie einfach lässt sich ein zusätzlicher Versanddienstleister in das eigene (E-Commerce-)Software-System integrieren?

An genau dieser Stelle setzt unser neues Projekt shipcloud.io an. Mit diesem ermöglichen wir es unseren Kunden, Zugriff auf die gängigen Versanddienstleister auf dem deutschen Markt (DHL, UPS, Hermes, GLS und DPD) zu bekommen. Hierfür muss man lediglich die einfache “restful API” in seiner Software einbinden und schon kann es losgehen. Anstatt also den Webservice eines jeden Versanddienstleisters einzubinden (was eine entmutigende Aufgabe ist, da jeder Anbieter eigene Kriterien für die Kommunikation mit seinem Service voraussetzt) kann man sich entspannen, da shipcloud den Großteil der Arbeit übernimmt. Eine Versandmarke wird für UPS auf die gleiche Art und Weise erstellt, wie es für DHL oder GLS der Fall ist. Noch besser: Der Kunde muss sich nicht einmal mit Programmiersprachen herumschlagen, da er alle Funktionen der API auch über die Website von shipcloud nutzen kann.

Drei moderne Systeme vereint

Für shipcloud haben wir  einen Weg gesucht, mit dem wir unseren Kunden nicht nur eine monatliche Grundgebühr in Rechnung stellen können; es musste auch möglich sein, die Kosten für vom Kunden erstellte Versandmarken abzurechnen. Da wir Paymill bereits für uhrmensch.de verwenden, wussten wir sozusagen aus erster Hand, wie gut der Support ist und mit welcher Begeisterung die Firma aus München versucht, Payments im Internet einfach zu machen. Aus diesem Grund war uns bereits früh klar, dass wir wieder mit ihnen zusammenarbeiten wollen. Also mussten wir nur noch einen Dienst finden, der wiederkehrende Zahlungen mit Paymill anbietet.

Bei unserer Suche nach einem geeigneten Anbieter sind wir dann mit Reskribe ins Gespräch gekommen und waren direkt begeistert von dem, was sie uns erzählt haben. Das Beste für uns – einmal davon abgesehen, dass ihr Büro nur wenige Kilometer von unserem entfernt liegt – war, dass sie uns die Möglichkeit gegeben haben, Feedback zu allem zu geben, was uns bei der Einbindung ihres Services auffiel und wir somit gemeinsam die beste Lösung für alle (shipcloud und Reskribe) Kunden finden konnten. Der Support war großartig und hat es uns sehr einfach gemacht, ihre API in shipcloud zu integrieren. Durch ihre Zusammenarbeit mit Paymill passte alles wie die sprichwörtliche Faust auf’s Auge. Die Verwendung von Paymill Unite hat es Reskribe einfach gemacht, alle drei Systeme miteinander zu vereinen, und so können jetzt alle beteiligten Firmen von einem einzigen Use Case profitieren – Pakete innerhalb Deutschlands und irgendwann auch in die ganze Welt zu versenden. All dies während, man gleichzeitig PCI konform ist und sich an die strikten Datenschutz-Regelungen in Deutschland hält.

So funktioniert die Abrechnung bei shipcloud

Im Folgenden gehen wir ein wenig genauer auf die Art und Weise ein, wie die drei angesprochenen Systeme interagieren, um einen besseren Blick hinter die Kulissen zu geben. Registriert sich ein Kunde für einen der kostenpflichtigen Pläne (es gibt ebenfalls einen kostenlosen Plan für Entwickler/innen), so muss er/sie seine/ihre Kreditkartendaten hinterlegen. Wie bei jeder anderen Website, die Paymill verwendet, wird auch bei shipcloud ein Token über die JavaScript-Bridge für diese Daten von Paymill erstellt. Allerdings wird dieser nicht im nächsten Schritt von shipcloud weiter verwendet, sondern wir senden ihn, gemeinsam mit der Rechnungsadresse des Kunden und der Information, für welchen Plan er/sie sich entschieden hat, an Reskribe. Diese nutzen den Token anschließend, um die erste Monatszahlung beim Kunden abzubuchen. Dies hat unter anderem den Vorteil, dass wir zeitnah erfahren können, ob sich die angegebene Kreditkarte auch belasten lässt.

Jede Nacht checkt ein Cronjob auf unserem System, ob ein Kunde neue, physische Versandmarken erzeugt hat. Ist dies der Fall, so sendet der Server die Anzahl der Marken (pro Versanddienstleister) und den Wert, welcher dem Kunden in Rechnung gestellt wird, als so genanntes Add-On an den Reskribe-Service. Add-Ons sind zusätzliche Positionen auf der Rechnung und werden damit am Ende des jeweiligen Abrechnungsmonats durch den Kunden bezahlt. Mehr musste von unserer Seite aus nicht getan werden, um wiederkehrende Rechnungen in shipcloud zu ermöglichen und wir freuen uns, dass wir die gesparte Zeit in die Umsetzung neuer Ideen stecken können. Diese werden in den kommenden Wochen auf shipcloud zu sehen sein. Also am besten öfters einmal vorbeischauen!

Wer nach dieser kurzen Einführung noch Fragen zu den Versandmöglichkeiten, Preisen oder auch dem Einbau von shipcloud in sein eigenes (Shop-)System hat, der kann sich gerne hier in den Kommentaren an uns wenden, es über die Twitter-Accounts @webionate und @shipcloud_io versuchen oder auf der shipcloud-Website unser Kontaktformular verwenden.

Paymill Integration in Spree Commerce – Teil 2

In Teil 1 haben wir schon einmal einen Einblick darüber gegeben, warum wir Paymill in Spree Commerce einbinden wollten und was so eine Integration mit sich bringt. Im zweiten Teil wollen wir uns nun “das finale Produkt”, also unsere Spree Extension namens spree_paymill beschreiben.

Ablauf einer Bezahlung mit Paymill

Wir hatten beim letzten Mal einen kurzen Überblick darüber gegeben, wie der Service von Paymill funktioniert, wollen an dieser Stelle aber noch einmal ein wenig detaillierte darauf eingehen.

Schritt 1: Kunde wählt seine Bezahlmethode im Shop aus

Ist der Kunde innerhalb des Bestellprozess an der Stelle angekommen, an der er seine Bezahlmethode auswählen kann, so wird ihm ein passendes Formular zur Eingabe der Kreditkartendaten angezeigt. Die hier eingegebenen Daten werden allerdings nicht an den Server des Shops gesendet, sondern direkt an Paymill. Hierfür bindet der Betreiber des Shops eine JavaScript-Datei von Paymill ein.

Anschließend muss er sein Formular noch so anpassen, dass ein Klick auf den Button zum Verschicken des Formulars nicht selbiges absendet, sondern eine JavaScript-Funktion aufruft, die schlussendlich die Daten aus dem Formular per AJAX-Call an den Server von Paymill sendet. Der Shopbetreiber hat sogar die Möglichkeit, die Daten vor dem Absenden mittels von Paymill bereitgestellter Funktionen auf Gültigkeit zu überprüfen.

Sind die Kreditkartendaten vom Paymill-System verifiziert worden, so sendet der Server als Antwort einen Token zurück.

Paymill Einbindung in den Spree Commerce Bestellprozess

Paymill Einbindung in den Spree Commerce Bestellprozess

Continue reading

Paymill Integration in Spree Commerce – Teil 1

Wer unseren Twitter-Account verfolgt, dem wird bereits aufgefallen sein, dass wir viel über Spree berichten. Der Grund hierfür ist so simpel wie einleuchtend: Spree Commerce ist eine Open Source E-Commerce-Plattform auf Ruby on Rails Basis und passt daher bestens in unser Portfolio. Damit uns keiner nachsagen kann, wir würden nicht hinter den Technologien stehen, die wir unseren Kunden anbieten, nutzen wir Spree unter anderem auch für unseren eigenen Uhren-Shop Uhrmensch.de und für den vor einer Woche gestarteten Shop demavet.de.

Im Vergleich zu etablierten Open Source-Lösungen wie Magento, Oxid eSales oder osCommerce ist Spree in Deutschland noch nicht sehr verbreitet, obwohl es bereits seit mehr als fünf Jahren auf dem Markt ist. Das Schöne an Spree: die Software bringt ein Basis-Set an Funktionen mit und besitzt darüber hinaus ein unglaubliches Potential, was auch einer der Gründe war, warum wir uns für Spree entschieden haben, als wir nach einer einfach anpassbaren Lösung für Uhrmensch gesucht haben.

Wie schon angedeutet, aktuell ist die Standardinstallation von Spree noch ziemlich stark auf den amerikanischen Markt ausgelegt. Das merkt der Nutzer insbesondere bei der Auswahl der out-of-the-box zur Verfügung stehenden Zahlungsmöglichkeiten.

Auf die Zahlmethoden kommt es an

Für einen noch recht kleinen Onlineshop, wie es Uhrmensch.de derzeit noch ist, lohnt es sich nicht, eine Zahlung auf Rechnung oder per Bankeinzug anzubieten. Wir starteten daher Anfang Dezember 2012 mit Zahlung per Vorkasse und einer Paypal-Integration. Die Zahlung per Vorkasse lässt sich in Spree einfach durch die integrierte Zahlungsart “Check” abdecken, welche ja einen ähnlichen Use Case darstellt. Um Zahlungen über Paypal anzunehmen, muss der Nutzer lediglich eine so genannte Extension in seinen Spree Shop einbinden.

Die Liste der Extensions auf der Spree-Website ist bereits recht lang und ein Blick darauf zeigt, dass sich hier auch einige Zahlungsmethoden verstecken, unter denen Shopbetreiber auswählen können. Die offizielle PaypalExpress Extension, welche man hier ebenfalls findet, ist übrigens auch bei uns eingebunden und funktioniert tadellos.

Doch eine der beliebtesten Zahlungsarten (neben dem Kauf auf Rechnung) in Deutschland ist und bleibt die Bezahlung per Kreditkarte.

Ein kleiner Exkurs: Viele Online-Käufer wissen nicht, dass Paypal es ihnen auch ermöglicht, eine Kreditkartenzahlung durchzuführen, selbst wenn sie noch kein Paypal-Konto haben. Aus diesem Grund wird in den meisten Fällen eine Whitelabel-Lösung in Shops eingesetzt, welche die Kunden innerhalb des Bestellprozesses auf eine externe Seite des so genannten Payment Service Providers (PSP) entweder direkt weiterleitet oder diese per iFrame einbindet. Hier kann der Kunde dann seine Kreditkartendaten angeben und wird im Erfolgsfall auf eine vorher definierte Rücksprungadresse im eigentlichen Shop zurückgeleitet. Ziel des Onlineshops ist es in beiden Fällen, eine so genannte PCI-Zertifizierung zu umgehen, da diese viel Zeit und Geld kostet. Um dennoch PCI konform zu sein, lässt man die Bearbeitung der Kreditkartenzahlung (inkl. Speicherung der Kreditkartendaten) durch den jeweiligen PSP durchführen, welcher seinerseits PCI zertifiziert ist.

Geld regiert die Welt

Einige der größten “Pain Points” bei der Zahlung per Kreditkarte sind die teils recht hohen Gebühren, die der PSP bei jeder Zahlung einstreicht. Darüber hinaus muss der Shopanbieter auch noch zahlreiche Hürden wie z.B. den erfolgreichen Erhalt eines Kreditkarten-Akzeptanz-Vertrages überwinden, bevor er seine erste Bestellung per Kreditkarte entgegen nehmen kann. Man merkt schnell, dass diese Zahlungsmethode für den Endkunden zwar einfach gelöst ist, der Händler aber viel Zeit und Mühe in das Thema investieren muss.

paymill-RGB copy

An diesem Punkt greifen Services wie das in den USA gestartete Stripe und sein europäischer Bruder Paymill ein. Sie versuchen, mit einem einfachen Service-Ansatz die Probleme der klassischen Kreditkartenzahlung aus der Welt zu schaffen. Hierfür wird den Shopanbietern eine leicht verständliche API angeboten, welche sie einfach in ihr Shopsystem integrieren können. Und schon kann auch der kleinste Onlineshop oder auch einfach nur eine statische Website, auf der wenige Produkten verkauft werden sollen, Kreditkartenzahlungen annehmen. *

Unschlagbar sind bei diesen Services die anfallenden Kosten. So berechnet Paymill seinen Kunden lediglich 2,95% von der jeweils getätigten Zahlung + 0,28 Euro. Es gibt keine Grundgebühr oder andere versteckte Kosten, die der Händler (monatlich) zahlen müsste.

APIs For The Masses

Wie genau funktioniert nun die Einbindung von Paymill in den eigenen Shop? Glücklicherweise gibt es für viele Systeme bereits vorgefertigte Plugins, welche eine Einbindung recht einfach werden lassen. Für Spree Commerce gab es diese bis dato aber noch nicht. Daher haben wir uns selbst daran gemacht, diese Einbindung vorzunehmen, um Kreditkartenzahlungen auf Uhrmensch.de entgegen nehmen zu können.

Zunächst einmal muss man erwähnen, dass es bereits eine Ruby-Anbindung für Paymill gibt, die von Stefan Sprenger geschrieben wurde. Wer also “Plain Ruby” machen will, der findet hier einen guten Einstieg. Als wir mit unserer Anbindung begannen, hatten wir das Gem als Basis für unsere Integration in Spree verwendet. Da hier allerdings noch nicht alle API-Calls von Paymill vorhanden waren, die wir für unseren Shop brauchten, erweiterten wir die bestehende Codebasis (unsere Änderungen sind mittlerweile in das Original-Repository eingeflossen).

Doch gehen wir kurz einen Schritt zurück. Wie bereits angedeutet verhindern Services wie Paymill und Stripe, dass sich jeder Shop PCI zertifizieren lassen muss. Erreicht wird dies, indem der jeweilige Shop die Kreditkartendaten seiner Kunden nicht in seinem System speichert, sondern die komplette Verarbeitung dieser Daten auf den Servern des Payment-Anbieters vollzogen wird. Ein ähnlicher Ansatz, wie ihn die PSPs ebenfalls fahren.

Der Unterschied bei der Verwendung von Paymill ist nun wie folgt: Der Shopanbieter bindet ein Javascript-File auf der Payment-Seite seines Shops ein. Werden nun die Kreditkartendaten durch den Kunden eingegeben, so wir das Formular nicht direkt abgeschickt, sondern die Daten werden per AJAX an Paymill übermittelt (das Javascript-File bringt übrigens auch von Haus aus direkt einige Prüfmöglichkeiten für die eingegebenen Werte mit sich). Wurden die Kreditkartendaten als Gültig verifiziert, so antwortet der Paymill-Server mit einem Token, welchen das Shopsystem im Anschluss einmalig verwenden kann, um z.B. einen Betrag auf der Kreditkarte eines Kunden zu reservieren. Dieser Schritt wird dann allerdings über eine direkte, serverseitige Kommunikation im Backend vorgenommen. In unserem Fall also durch den Shop.

Spree Commerce setzt als Basis für seine Zahlmethoden auf eine starke Integration mit ActiveMerchant (AM), einem Framework, welches aus der Codebasis von Shopify extrahiert wurde. Zunächst hatten wir noch versucht, unsere Integration unabhängig von AM vorzunehmen, doch entschieden wir uns nach kurzer Zeit dazu, hier ebenfalls eine Erweiterung des bestehenden Codes vorzunehmen um dichter am bereits bestehenden Spree-Code zu sein – und auch, weil es zu diesem Zeitpunkt noch keine Anbindung an die Paymill-API in AM gab.

Wir gossen unsere Shop spezifischen Anpassungen in eine offizielle Spree Extension, die wir klassisch und einfach spree_paymill genannt haben. Nach einigen weiteren Tests auf Uhrmensch.de werden wir die Extension in den kommenden Wochen noch offiziell freigegeben, damit sie auch andere Spree Shops nutzen können.

Das “Problem” mit Open Source

Ein klarer Vorteil von Open Source Software ist es, dass jeder Entwickler bestehenden Code erweitern kann. In unserem Fall wurde dies allerdings zu einem (kleinen) Nachteil, da die EntwicklerInnen von spreed.ly in der Zwischenzeit selber an AM geschraubt und ebenfalls eine Anbindung an Paymill vorgenommen hatten, die nicht mehr zu dem Codeansatz passte, welchen wir ins Auge gefasst hatten. Aufgrund des weiter fortgeschrittenen Codes von spreed.ly entschieden wir uns dazu, nicht unsere Anbindung von Paymill zu verwenden, da wir so die Abhängigkeit zum Ruby-Paymill Gem entfernen konnten.

Allerdings mussten wir auch hier erneut eigene Anpassungen vornehmen, denn die Erweiterung von AM führte die Authentifizierung der Kreditkartendaten und das Reservieren des Betrages in einem Schritt durch. In Deutschland ist es aber Pflicht, dem Kunden vor dem Absenden einer Bestellung eine Übersicht über seine mögliche Bestellung anzuzeigen, bevor er diese endgültig abschickt. Es ist möglich, diesen Preview-Schritt in Spree einzuschalten, jedoch hat dies zur Folge, dass die Bestellung nicht direkt durchgeführt und damit der Betrag auf der Kreditkarte auch nicht sofort reserviert wird. Erst wenn der Kunde seine mögliche Bestellung überprüft und endgültig bestätigt hat, dass er diese ausführen will, wird der Betrag auf der Kreditkarte reserviert. Aus diesem Grund sind wir derzeit dabei, eine Änderung im AM-Repository zu beantragen, um die Autorisierung einer Zahlung auch mit einem bestehenden Token direkt durchführen zu können.

Dies war Teil 1 unseres Erfahrungsberichtes zum Thema Paymill Integration in Spree Commerce. Im zweiten Teil werden wir uns näher mit der technischen Umsetzung einer neuen Payment-Methode in Spree und der Anbindung von Paymill über ActiveMerchant befassen.

 

* Um Zahlungen des Live-Systems annehmen zu können, muss man noch einen schriftlichen Vertrag mit Paymill abschliessen.