So machen Sie die Zahlung bequemer: die Erfahrung eines IaaS-Anbieters

Eines der wichtigsten Probleme bei der Arbeit mit den Diensten eines IaaS-Anbieters ist die Bequemlichkeit der Zahlung. Vom ersten Tag des Projektbeginns an haben wir versucht, den Zahlungsprozess mit Bankkarten zu vereinfachen und diesen Mechanismus weiter zu verbessern. Heute haben wir beschlossen, darüber zu sprechen, wo wir angefangen haben, und unsere Erfahrungen zu teilen.


/ Flickr / Muhammad Ashiq / CC BY-SA

Hintergrund


Seit 2012 bieten wir IaaS-Dienste bei 1cloud an. In dieser Zeit konnten wir mit einer Vielzahl von Zahlungsgateways arbeiten. Einer der ersten war Money Online. Wir haben zwei Jahre mit ihm zusammengearbeitet und dann begonnen, bei möglichen technischen Schwierigkeiten alternative Dienste anzuschließen.

Als Alternative wurden PayPal und Robocassa in Betracht gezogen. Infolgedessen waren beide Plattformen verbunden, obwohl dies einige Schwierigkeiten aufwies . Im ersten Fall mussten wir zum Importieren der Kunden-ID in das Zahlungsformular die CSS-Regeln anpassen und die Standardelemente auf der Webseite ändern. In der Situation mit Robocassa stimmten einige Anforderungen in der API nicht mit der Beschreibung überein, aber mithilfe des technischen Supports wurde die Situation ebenfalls gelöst. Wir haben bei diesen Entscheidungen nicht aufgehört und andere Optionen in Betracht gezogen, die uns potenzielle Partner angeboten haben.

Also haben wir begonnen, mit dem PayMaster-Zahlungssystem zu arbeiten (es ersetzte „Money Online“), das uns günstige Provisionskonditionen und eine praktische API bot. Dieses Zahlungsgateway war lange Zeit das wichtigste. Vor kurzem haben wir uns jedoch entschlossen, die Benutzerfreundlichkeit unseres Dienstes neu zu gestalten und den Prozess der Bezahlung von Diensten per Bankkarte für Einzelpersonen zu vereinfachen. Damit UX unsere Anforderungen erfüllt, haben wir ein weiteres Zahlungsgateway integriert - CloudPayments.

Wie kann ich den UX-Zahlungsprozess verbessern?


Wir arbeiten am Vorauszahlungsmodell. Der Kunde füllt sein Konto auf seinem persönlichen Konto auf, und dann wird Geld von diesem Konto abgebucht, wenn IaaS-Dienste verbraucht werden (alle zehn Minuten abgebucht).

Um das Guthaben mit einer Kreditkarte aufzufüllen, musste der Kunde im Fall von PayMaster einen vierstufigen Prozess durchlaufen:

  1. Geben Sie den Zahlungsbetrag in das Formular in der Systemsteuerung ein, klicken Sie auf die Schaltfläche "Bezahlen" und wechseln Sie zur Seite "Zahlungsgateway".
  2. Geben Sie die Telefon- oder E-Mail-Adresse an, an der der Scheck eingehen soll, und klicken Sie auf Weiter.
  3. Geben Sie die Kartendetails ein und drücken Sie erneut die Taste "Bezahlen".
  4. Geben Sie den Transaktionsbestätigungscode an, den die Bank im Rahmen des 3D Secure-Verfahrens gesendet hat.
Haftungsausschluss: Der oben beschriebene Algorithmus gilt für Bankkartenzahlungen von Einzelpersonen. Juristische Personen zahlen für die Dienste des IaaS-Anbieters auf Rechnungen. Während wir die Benutzerfreundlichkeit verbessert haben, haben wir die Mechanismen für die automatische Abrechnung solcher Rechnungen fertiggestellt, werden sie jedoch im Rahmen dieses Materials nicht berücksichtigen, da juristische Personen nicht mit einem Zahlungsgateway interagieren.

Wir haben uns entschlossen, den Zahlungsprozess für Benutzer zu vereinfachen und das Erscheinungsbild und die Benutzerfreundlichkeit von Formularen zum Ausfüllen von Bankkartendaten allgemein zu verbessern. Zu diesem Zweck haben wir zwei Aufgaben für uns identifiziert, die wir unten diskutieren werden.

Aufgabe 1: Schließen Sie den Übergang zur Zahlungsgateway-Seite aus

Wie oben erwähnt, musste ein Benutzer, als er für unsere Dienste bezahlte, um die Details der Karte auszufüllen, zum Standort des Zahlungsgateways gehen. Daher musste eine Person viele Bestätigungsschaltflächen drücken und auf das Laden von Seiten mit Informationen zum Auffüllen des Kontos warten.

In diesem Fall trat ein weiteres Problem auf: Nachdem der Benutzer Geld auf das Konto eingezahlt hatte, blieb er auf der Zahlungsgateway-Seite, bis er auf einen speziellen Link klickte, um zu 1cloud.ru zurückzukehren. Dies machte es beispielsweise schwierig, mit unserem Control Panel zu arbeiten, wenn der Benutzer nach der Zahlung seine IT-Infrastruktur um Kapazitäten erweitern wollte.

"Laut Analytics folgten nur eine Handvoll Kunden dem Link und kehrten zu unserer Website zurück", sagte Sergey Belkin , Entwicklungsleiter bei 1cloud.ru. - Dies war teilweise darauf zurückzuführen, dass der Kunde auf den Link „Zurück zum Online-Shop“ klicken musste. Dies trotz der Tatsache, dass unser Service kein Online-Shop ist. “

Darüber hinaus wollten wir die Anzahl der vom Benutzer ausgefüllten Felder auf ein Minimum reduzieren und nur die Felder belassen, die für den Vorgang wirklich erforderlich sind. Um diese Aufgabe zu erfüllen, haben wir uns für das CloudPayments-Zahlungsgateway entschieden, dessen Mitarbeiter unsere Aufmerksamkeit zunächst mit schnellen und vollständigen Antworten auf den technischen Support auf sich gezogen haben.

Darüber hinaus hatte dieses Zahlungsportal eine Repräsentanz in Kasachstan. Dies ermöglichte die Implementierung einer neuen Zahlungsmethode für unseren Hosting-Service oblako.kz . Andernfalls würden alle unsere Überweisungen von Kasachstan nach Russland (oder umgekehrt) einer zusätzlichen Provision unterliegen.

CloudPayments schlug vor, ein spezielles Chekout-Skript zu verwenden . Sie können das Zahlungsformular direkt in unserem Control Panel implementieren und die ausgefüllten Daten an das Zahlungsgateway übertragen, ohne sie auf unserer Seite zu speichern.

Um das Skript zu implementieren, mussten wir einen PCI-DSS- Sicherheitsscan bei einer der akkreditierten Organisationen durchführen - das war die CloudPayments-Anforderung. Das Scannen ist erforderlich, um die technische Einhaltung des Standards zu bestätigen und die Möglichkeit des Diebstahls von Benutzerdaten beim Ausfüllen von Formularen auf der Website auszuschließen.

Das PCI DSS-Konformitätsaudit wurde von ARinteg durchgeführt. Wir schickten ihnen einen Antrag, in dem wir den Wunsch nach einer Prüfung bekundeten, einen Fragebogen ausfüllten und einen Termin für die Überprüfung festlegten. Auf der ARinteg-Seite dauert die Vorbereitung für das Scannen etwa einen halben Tag (dh Sie können fast sofort scannen), aber wir haben weitere vier bis fünf Tage gebraucht, um unsere Infrastruktur sorgfältig vorzubereiten.

Der Scan dauerte ungefähr 15 Stunden, obwohl es vorkommt, dass der Scan mehrere Tage dauert. ARinteg-Spezialisten haben SSL und den Schutz vor Injektionsanfragen und anderen Schwachstellen auf unserer Website überprüft.

Wir haben den ersten Test nicht bestanden und erhielten eine Liste mit Problemen, die behoben werden mussten. Alle waren unbedeutend, zum Beispiel gab es eine Post-Methode, die verwendet wurde, als der Benutzer unsere schrittweisen Anweisungen auf der Website auswertete. Wir haben alle Kommentare entfernt und der zweite Prüfungsversuch war erfolgreich. Als nächstes könnten wir mit der Implementierung des Chekout-Skripts fortfahren.

Das Skript ist auf unserer Website registriert, sammelt Kartendaten aus dem angegebenen Formular und erstellt daraus ein Kryptogramm zur Zahlung über die CloudPayments-API. Es sieht so aus:

this.createCryptogram = function () { var result = checkout.createCryptogramPacket(); if (result.success) { //   alert(result.packet); } else { //     ,  `result.messages` : // { name: "      ", cardNumber: "  " } //  `name`, `cardNumber`    `<input ... data-cp="cardNumber">` for (var msgName in result.messages) { alert(result.messages[msgName]); } } }; $(function () { /*  checkout */ checkout = new cp.Checkout( // public id    "test_api_00000000000000000000001", // ,     document.getElementById("paymentFormSample")); }); 

Das Formular zur Eingabe von Bankkartendaten sieht folgendermaßen aus:



Während der Implementierung des Skripts und des Formulars konnten wir die Anzahl der vom Benutzer ausgefüllten Felder auf ein Minimum reduzieren. Es blieben nur diejenigen übrig, die für die Operation wirklich notwendig sind. Beispielsweise wurden die Felder "Vorname" und "Nachname" entfernt. Wie uns Vertreter des Zahlungsgateways erklärten, überprüfen Banken diese Daten nicht (nur die Kartennummer, das Datum und der CVV sind wichtig), daher haben wir beschlossen, sie wegzulassen und den gesamten Prozess zu vereinfachen.

Darüber hinaus haben wir die Informationen zu unserem Rabattprogramm klarer formuliert : Bei einer einmaligen Auffüllung des Kontos in Höhe von 5.000 Rubel werden 10% davon in Form von Boni gutgeschrieben, von 10 000 Rubel - 20%, mehr als 100 000 Rubel - 25%. Wir haben auch die Möglichkeit hinzugefügt, Kartendaten für Benutzer zu speichern. Alle diese Informationen werden in verschlüsselter Form auf der Seite des CloudPayments-Zahlungsgateways gespeichert.

Aufgabe 2: Automatische Zahlung realisieren

Dies ist eine Zahlung, die unter bestimmten Bedingungen automatisch erfolgt. Sehr oft wird diese Funktion von Abonnementdiensten verwendet. Die meisten Zahlungsgateways bieten jedoch nur die Option, wenn die automatische Auffüllung nach einem Zeitplan (zu einem bestimmten Datum) erfolgt. Für uns ist es wichtig, dass die Möglichkeit, das Konto aufzufüllen, jederzeit automatisch verfügbar ist, wenn dem Kunden das Guthaben auf dem Konto ausgeht (da wir an der Vorauszahlung arbeiten). Um die automatische Zahlung zu implementieren, haben wir daher die Methode verwendet, die beim Bezahlen mit einer "gespeicherten" Karte (unter Verwendung eines temporären Tokens) verwendet wird.

Dies funktioniert wie folgt: Nach der ersten erfolgreichen Zahlung durch den Benutzer generiert das Gateway sein Token für das Service-Karten-Paar und sendet es in einer Postback-Antwort. Dieser Token wird gespeichert und bei wiederholter Zahlung bereits übertragen, nicht die Kartendaten. Es stellt sich heraus, dass wir eine Anfrage an das Gateway senden, in dem wir unseren API-Schlüssel (Kennung, dass die Anfrage von 1cloud stammt), Token und Menge angeben. Das Gateway prüft, ob ein solches Token erstellt wurde, und verarbeitet die Zahlung für den angegebenen Betrag, wenn alles in Ordnung ist.

Das Datum, an dem eine automatische Zahlung erforderlich ist, wird dynamisch auf der Grundlage des aktuellen Verbrauchs von Diensten durch den Benutzer und des Kontostands berechnet. Angenommen, ein Kunde hat tausend Rubel in der Bilanz und hat in den letzten zehn Minuten zwei Rubel verbraucht. Es ist klar, dass das ungefähre Nullungsdatum in Intervallen von fünfhundert bis zehn Minuten liegen wird - dies sind ungefähr 34 Tage. Somit können wir einige Tage vor dem Ende der Mittel eine automatische Zahlung vornehmen. Der Kunde wählt die Größe der automatischen Zahlung unabhängig aus.

Was weiter


Jetzt testen wir diese Lösungen und bewerten die Ergebnisse der Implementierung. Laut einer Abstimmung unter den Kunden sind die meisten ziemlich veränderlich. Wir werden das Feedback zum System eingehender untersuchen, die Daten analysieren und gegebenenfalls Anpassungen vornehmen.

PS Frische Materialien aus unserem Unternehmensblog:

Source: https://habr.com/ru/post/de433948/


All Articles