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.

About André Cedik

Seit mehr als 15 Jahren ist André im eCommerce-Umfeld tätig. Nach dem Studium an der FH in Kiel schloss er sich zunächst der Intershop Communications AG aus Jena an. Heute ist er als eCommerce-Consultant und Ruby Entwickler für die webionate GmbH in Hamburg tätig, mit der er derzeit das StartUp shipcloud.io aufbaut.

One response to “Paymill Integration in Spree Commerce – Teil 1

  1. Pingback: Paymill Integration in Spree Commerce - Teil 2 - Developers Kitchen