So erstellen Sie eine SaaS-Produktintegrationsplattform: Poster Cloud Checkout Experience

Lass uns Startup Bingo spielen? Plattform, Ökosystem, Integration, Marktplatz, API, Synergie. Bingo!

Das Thema Binnenmärkte für integrierte Lösungen ist in der Lebensmittelwelt sehr aktuell. Bei Poster POS haben wir die Vorteile einer offenen API und den Aufbau eines Ökosystems lange Zeit verstanden. Besonders beeindruckt hat mich das Kapitel „Die Plattform“ im Facebook-Effekt, das das Verständnis für das Aufrufen der Plattformen stärkte. Vor 3 Jahren haben wir die API geöffnet, vor 2 Jahren haben wir den Marktplatz gestartet, vor einem Jahr haben wir eine Technologie eingeführt, die es ermöglicht, die Funktionalität des Hauptprodukts nahtlos zu erweitern und sein Verhalten zu beeinflussen. Vor ungefähr 3 Monaten haben wir den Integrationskatalog neu gestartet und begonnen, die Anwendungen der Partner aktiv zu vermarkten.

Als wir anfingen, hatte ich nicht genügend öffentliche Fälle zu diesem Thema, einen Leitfaden zum Handeln. In diesem Artikel werde ich Ihnen erklären, wie Sie ein SaaS-Dienst ohne Integrationskatalog und ein SaaS-Dienst mit einem Integrationskatalog werden. Mein Artikel ist nützlich für Produkte, die bereits die Phase der Produktmarktanpassung durchlaufen haben und bereit sind, mit dem Aufbau ihres Ökosystems zu beginnen.



Über uns


Poster ist ein SaaS-Automatisierungssystem für das Restaurant- und Einzelhandelsgeschäft. Was wir tun, heißt Point of Sale oder „Abendkasse“. Unser Produkt ist in zwei Teile unterteilt - Terminal und Admin-Panel. Das Terminal läuft auf iPad- und Android-Tablets oder Windows-Geräten. Am Terminal fahren Kassierer und Kellner eine Bestellung ein, akzeptieren Zahlungen und drucken Schecks aus. Der Administrator der Institution, der Manager und der Ladenbesitzer arbeiten im Admin-Bereich: Sie führen Lager- und Verwaltungsaufzeichnungen, sehen sich Verkaufsstatistiken an, verwalten Waren usw. Jetzt wird das Produkt von 6.000 aktiven Institutionen in 53 Ländern verwendet.

Ein bisschen Geschichte


Das Thema Marktplätze und Plattformen ist nicht neu. Die ersten Plattformen waren Betriebssysteme, mit denen Entwickler Speicher, E / A, Prozessorzeit usw. unabhängig verwalten konnten. Dann wurden Desktop-Anwendungen mit Add-On-Plugins angezeigt. Meine Bekanntschaft mit Plugins begann mit Total Commander und Winamp. Dann gab es Java-Applets für Smartphones, in iOS 2.0 wurde der App Store veröffentlicht. Webdienste begannen auch mit Integrationen und Plug-Ins zu wachsen, zum Beispiel Facebook, SalesForce, Basecamp, Xero usw. Die offene API und die Marktplätze sind zu einem Teil unseres täglichen Lebens geworden und wir begegnen ihnen ständig.

Was geben Marktplätze?


Mehr Funktionen, mehr Benutzereingriff.


Seien wir ehrlich: Ihr Rückstand wird immer größer. Sie haben immer nicht genügend Ressourcen, um alle Funktionen auszuführen, nach denen Ihre Benutzer fragen. Wenn Sie dem Produkt ständig neue Funktionen hinzufügen, wird es früher oder später zu einem furchtbar unangenehmen Durcheinander von Tasten, Häkchen und Schaltern. Es ist besser, ein Produkt herzustellen, das 3-7 Probleme qualitativ löst als 50, aber mittelmäßig. Daher helfen Integrationen dem Produkt, in den Augen des Benutzers qualitativ zu wachsen und seine Funktionalität zu erweitern, was bedeutet, dass es weniger wahrscheinlich ist, dass Ihr Kunde zu Wettbewerbern geht.



Treiber Ihres Umsatzwachstums


Integrationen mit anderen Unternehmen auf dem Markt können ein guter Treiber für den Verkauf Ihres Hauptprodukts sein. In unserem Fall können beispielsweise potenzielle Kunden mit oder ohne veraltete Registrierkassensoftware zu Partnern kommen, die sich mit Kundenbindungssystemen befassen. An dieser Stelle wird der Partner die Kasse empfehlen, mit der er integriert ist und gute Beziehungen unterhält.

Möglichkeit, kundenspezifische Lösungen für große Kunden zu erstellen


Als wir zuvor die Anfrage erhielten, ein Produkt in einem großen Netzwerk mit atypischen Anforderungen fertigzustellen, mussten wir uns weigern, uns nicht in der Grube der Unternehmenslösungen zu vergraben, in denen es bei jedem Schritt im Code Zweige gibt wie:

if (account==='very_important_enterprise_customer') { ... } 

Jetzt können wir fast alle Add-Ons im System implementieren, ohne den Kern des Produkts zu beeinträchtigen. Oder, noch besser, lagern Sie die Verbesserungen aus.

Zusätzlicher Verdienstkanal


In der Regel erhalten Verzeichnisse eine Provision für den Verkauf von Anwendungen, die darauf gehostet werden. Die Höhe der Provision liegt zwischen 30 (Industriestandard) und 80% (in sehr extremen Fällen, zum Beispiel in Odnoklassniki). Gleichzeitig habe ich persönlich wenig Vertrauen in die Idee, dass das Geschäftsmodell des Unternehmens auf dem Markt aufgebaut werden kann. Zum Beispiel hat Apple 62% des Umsatzes mit dem Verkauf des iPhone und der gesamten Kategorie von Diensten (Anwendungen im AppStore, Apple Music, iCloud, Apple Pay) - 13%. In unserem Fall haben wir den Markt so eingerichtet, dass er sich selbst trägt.

Was ist die Integration


Wir haben die Integrationsoptionen in drei Haupttypen unterteilt: Backend, Plattform verwalten, POS-Plattform.

Backend-Integration


Die grundlegendste Integrationsoption haben wir damit begonnen und die ersten Integrationen haben auf diese Weise funktioniert. Das Backend des Servicepartners über die HTTP-JSON-API ruft die Daten ab, verarbeitet sie irgendwie und zeigt sie dem Client an, möglicherweise wird etwas in unserem System aktualisiert. Ein Beispiel sind Analysen, Loyalität, Mailing-Systeme und Videoüberwachungssysteme.

Plattform verwalten


In der Tat die gleiche Backend-Integration, aber in das persönliche Konto des Benutzers integriert. Unter der Haube steckt ein regulärer iFrame und ein eigenes Protokoll für die nahtlose Autorisierung. Es ist für den Benutzer seitdem viel bequemer Sie müssen das System nirgendwo verlassen. Geeignet für Anwendungen mit einfacher Schnittstelle.


POS-Plattform


Irgendwann haben wir und unsere Partner die Backend-Integration verpasst. Ich brauchte eine Lösung, um mich direkt in den Kassierer zu integrieren. Ich wollte die Funktionalität erweitern, mich nativ in den Kassierer integrieren und dessen Verhalten ändern. Aus diesem Grund haben wir vor einem Jahr die POS-Plattform mit der Mechanik von Plugins oder Widgets gestartet. Sie können ähnliche Lösungen im Web sehen, zum Beispiel in Trello.

Beispiele für Integrationen in diese Technologie sind Treue-Systeme, die eine Identifizierung des Gastes in der Nähe der Kasse, mobile Geldbörsen und andere Zahlungssysteme erfordern. Hier ist zum Beispiel eine Anwendung von Paytomat, mit der Sie Ihre Bestellung mit Kryptowährungen bezahlen können:



Als nächstes werde ich über die technische Komponente der Implementierung dieser Technologie sprechen.

So erstellen Sie eine JS-Anwendung eines Drittanbieters


Unsere Cash-Lösung basiert auf Hybridtechnologien, die es uns ermöglichen, sie auf allen Plattformen zu unterstützen: iOS, Android, Windows. Die gesamte Schnittstelle und Geschäftslogik ist in HTML / JS geschrieben. Und für native Plattformen schreiben wir Wrapper um WebView und implementieren Treiber für die Arbeit mit Peripheriegeräten (Drucker, Steuerregister, Waagen usw.).

Wenn Sie die Anwendung auch auf den Webstack schreiben, spare ich Ihnen Zeit für Recherchen und erkläre, wie wir die Anwendung erweiterbar gemacht haben. Während der Studie wurden sie von Trello, Shopify und Atom.io inspiriert. Als Ergebnis kamen wir zum folgenden Modell.

Die Hauptanwendungsinstanz erstellt einen separaten Container für jedes verbundene Widget eines Drittanbieters. Ein Container ist ein iFrame, in den eine JS-Datei mit dem ausführbaren Code der Partneranwendung geladen wird. Methoden mit unserer API sind automatisch im Container verfügbar. Der Container wird auf der Vorderseite zwischengespeichert (Appcache oder Service Worker) und kann ohne Internet gestartet werden.

Mit der Lösung mit iFrame können Sie die Logik einer Drittanbieteranwendung von der Hauptanwendung isolieren und bei Problemen mit dem Widget die Hauptfluss-Cash-Anwendung nicht unterbrechen. Wir haben auch die Option von WebWorkers in Betracht gezogen, aber die Skripte im Worker haben keinen Zugriff auf das DOM, und wir geben Widgets die Möglichkeit, Schnittstellen anzuzeigen. Daher haben wir diese Option sofort gelöscht.

Entwickler schreiben ihre Anwendung mit JS oder einer beliebigen Sprache, die in JS kompiliert wird (CoffeeScript, Typescript ...), mit beliebigen Frameworks oder Bibliotheken. Als Nächstes werden der Code und alle Ressourcen des Webpacks in einem bundle.js gesammelt, das vom Konsolendienstprogramm auf unseren Servern bereitgestellt und den Benutzern bereitgestellt wird.

Widgets in iFrame tauschen über postMessage Nachrichten mit der Hauptanwendung aus und können Checkout-Befehle über das integrierte Poster an den globalen Bereich senden. Zum Beispiel:

 Poster.interface.popup({width: 500, height: 300, title: " "}); 

Wir haben eine Rückrufwarteschlange implementiert, mit der Anwendungen von Drittanbietern Checkout-Ereignisse abonnieren, darauf reagieren und die Anwendungslogik ändern können. Zum Beispiel:

 Poster.on('beforeOrderClose', (data, next) => { alert("  "); next(); }); 

Übrigens mussten wir im Fall von Vorher * -Ereignissen, die tatsächlich die Ausführung einer Operation an der Kasse blockieren, die Antwortzeit über ein Widget eines Drittanbieters eingeben. Beispielsweise gibt es eine Anwendung, die das Ereignis beforeOrderClose abhört und eine Anfrage mit den Details der Bestellung stellt, die der Kassierer an seinen Server zahlen möchte. Damit die Benutzererfahrung nicht beeinträchtigt wird, geben wir der Anwendung nicht mehr als 5 Sekunden Zeit, um unsere Logik zu implementieren und next () aufzurufen oder eine Schnittstelle anzuzeigen, die den Benutzerfortschritt anzeigt.

Dev-Modus


Jedes Mal ist es unpraktisch, die gesamte Anwendung zu sammeln und während des Entwicklungsprozesses auf den Servern für uns bereitzustellen. Daher haben wir den Entwicklungsmodus aktiviert. Darin wird das Widget ständig mithilfe eines Webpack-Dev-Servers mit Hot-Reloading erfasst. In der Kassenanwendung auf dem Entwicklerkonto wird der Anwendungscode nicht aus der Produktion, sondern vom Computer des lokalen Entwicklers gestartet. Gleichzeitig kann die Schnittstelle immer zwischen dev und prod wechseln. Bald werden wir einen weiteren Zweig vorstellen - Beta. Der Beta-Code wird auch auf unseren Servern bereitgestellt, ist jedoch nur für Beta-Tester der Anwendung verfügbar.



Entwicklerschrank


Lange Zeit haben wir Anwendungen registriert und die Einstellungen auf Wunsch der Entwickler manuell geändert. Jeder Kontakt in der Phase der Erstellung der Anwendung ermöglichte es uns, mehr mit den Entwicklern zu kommunizieren und zu erfahren, welche Produkte sie integrieren möchten und welche Methoden ihnen in der API fehlen.

Als wir jedoch die Marke von 40-50 gleichzeitigen Integrationen erreichten, nahm die mechanische Arbeit des Integrationsteams viel Zeit in Anspruch. Deshalb haben wir das Entwicklerbüro eröffnet, in dem wir alle diese Prozesse automatisiert haben.



Dokumentation, Beispiele, Partnerunterstützung


Wir haben hochwertigen technischen Support in der DNA unseres Unternehmens. Als wir begannen, die Geschichte mit Entwicklungspartnern zu erweitern, entschieden wir uns daher, die coolste Entwicklerunterstützung auf dem Markt anzubieten.

Mit jedem Partner rufen wir an, helfen bei der Schaffung eines Integrationsflusses und bereiten sogar ein detailliertes Follow-up mit einer Liste von Methoden vor, die sie zur Implementierung verwenden müssen. Wir beantworten Fragen in einem allgemeinen Telegramm-Chat mit Partnerentwicklern.

Übrigens tritt manchmal ein Problem auf, wenn weniger erfahrene Entwickler Fragen nicht auf unserer Plattform, API, sondern nur zur Programmierung stellen oder nicht debuggen möchten, wenn das Problem auf ihrer Seite liegt. In solchen Situationen verwenden wir die Technik „Nicht innerhalb von 1-2 Stunden antworten“. In den meisten Fällen löst der Entwickler das Problem in dieser Zeit selbst :)

Zur Dokumentation verwenden wir Slate. Die automatische Generierung von Dokumentation aus Kommentaren zu Quelldateien passte nicht zu uns, da wir mehrere Sprachversionen der Dokumentation unterstützen müssen - Russisch und Englisch.



Und natürlich ist es wichtig zu verstehen, dass wir für Entwickler von Drittanbietern nur eine weitere zusätzliche Integration sind. Daher sollten sie dies so schnell wie möglich und mit maximalem Nutzen für ihr Unternehmen tun. Aus diesem Grund erstellen wir vorgefertigte Kesselplatten , Codebeispiele und geben unser Bestes, um dabei zu helfen.

Anwendungsmarketing


Damit alle davon profitieren können: Institutionen - zusätzliche Funktionalität und Lösung ihrer Geschäftsprobleme, Entwickler - neue Kunden und wir - eine tiefere Schließung von Kunden in unserem Ökosystem, Anwendungen müssen vermarktet werden. Für Marketinganwendungen unter unseren Benutzern verwenden wir die folgenden Tools.

Ankündigung der Integration


Dies ist das Einfachste, was getan werden kann: Wir kündigen eine neue Integration in soziale Netzwerke und einen monatlichen Newsletter über neue Funktionen an. Nachrichten werden auf allen unseren Kontakten nicht zielgerichtet empfangen und können mitten im Informationsrauschen verloren gehen.

Mailings auslösen


Wir wählen Kunden aus, die an der einen oder anderen Kategorie von Anwendungen interessiert sind (Treue-Systeme, Videoüberwachung, Dokumentenverwaltung usw.), und senden ihnen gezielte Mailings mit dem Angebot, um zu sehen, was wir aus dieser Kategorie auf dem Markt haben.

Für Einrichtungen, die mehr als 100 Kontaktdaten ihrer Gäste in der Datenbank gespeichert haben, lösen wir beispielsweise die Integration in Treue-Systeme aus und teilen uns mit, dass er noch effizienter mit seinen Gästen arbeiten und sie an seine Einrichtung zurückgeben kann. Für Institutionen mit mehr als 5 Mitarbeitern (dies ist kein Familienunternehmen mehr) senden wir einen Auslöser für die Integration in Cloud-basierte Videoüberwachungssysteme, um die Kontrolle der Mitarbeiter zu vereinfachen.

Wir fügen diesen Brief hinzu und verschieben ihn in unsere Onboarding-Struktur. Er kommt beim Kunden an, wenn er bereits bezahlt wurde und alle Grundfunktionen nutzt. Wenn Sie ihm Informationen über die Erweiterung der Funktionalität senden, bevor er den Umgang mit dem Basic lernt, ist dies absolut nutzlos.



Informationsbanner im Produkt


Benutzer ignorieren häufig Briefe und schieben den Strom von Informationsmüll hinein, sodass wir dem Produkt selbst unauffällige Banner hinzugefügt haben. Wir haben festgestellt, dass dies eine der effektivsten Möglichkeiten ist, den Datenverkehr auf die Anwendungsseite zu leiten. Banner erscheinen im Kontext. Beispielsweise wird im Abschnitt mit den Belegen ein Banner über Produkte für Deep Analytics angezeigt, in dem der Eigentümer seine Verkäufe analysiert.



Was sonst?


Jetzt experimentieren wir mit dem Format von Blog-Artikeln mit Fallstudien zur Lösung von Geschäftsproblemen mithilfe integrierter Lösungen. Wir werden in Kürze gemeinsame Webinare mit Partnern starten.

Mit den oben aufgeführten Tools haben wir gelernt, wie Sie Drittentwicklern 20 bis 100 Leads pro Monat bringen können. Dies ist nur der Anfang.


Nach dem Lead Transfer


Natürlich erfolgt der Verkauf nicht von selbst, nachdem wir den Lead einem Drittentwickler vorgelegt haben. In der Regel sind B2B-Produkte schwieriger zu beherrschen und arbeiten unabhängig voneinander. Daher übertragen wir die Kontaktinformationen des Kunden (mit seiner Zustimmung) an die Partner und bestehen darauf, dass diese den Onboarding-Prozess kontaktieren und ihm helfen.

Was haben wir bei der Arbeit?


Abrechnung


Wir glauben, dass Sie den Kunden an einem Ort abrechnen müssen, um die Ablaufarbeit und die Verbindungen für ihn so weit wie möglich zu vereinfachen. Jetzt beenden wir die Abrechnungsunterstützung für Anwendungen von Drittanbietern.

Übrigens gibt es viele Schwierigkeiten bei der Implementierung, zum Beispiel:

  1. Anwendungen können ein völlig anderes Monetarisierungsmodell haben: monatliches Abonnement, Transaktionszahlungen, Abonnement je nach Verwendung
  2. Der Kunde muss im Falle einer Tarifänderung automatisch benachrichtigt werden
  3. Kunden können aus verschiedenen Ländern bezahlen, und ein Vertrag mit einem Partner besteht normalerweise aus einem
  4. Dem Kunden kann eine Karte für Zahlungen beigefügt sein, oder es kann eine Zahlung auf Rechnungen im jur erfolgen. das Gesicht.

Anwendungsprüfung


Jetzt wird die Antragsprüfung einmalig durchgeführt, wenn der Antrag auf den Markt kommt. Wir möchten bei jeder Bereitstellung eine obligatorische, aber schnelle Überprüfung einführen, um einige Randfälle zu verfolgen.

Richtlinien für Anwendungen von Drittanbietern


Um eine gemeinsame Erfahrung mit der Verwendung unserer Produkte und integrierten Produkte zu bewahren, geben wir den Partnern Empfehlungen zu Design und Ablauf, es gibt jedoch keine formalisierten Regeln.

Wir entwickeln Richtlinien für den internen Gebrauch durch Posterdesigner und -entwickler und öffnen sie dann für Drittentwickler.

Das ist alles


Tatsächlich stehen wir erst am Anfang der Reise. Es gibt noch viel Arbeit, um eine vollwertige Plattform zu werden, aber wir haben in dieser Zeit bereits viel gelernt. Weiter - nur interessanter. Wenn Sie Fragen haben, schreiben Sie in die Kommentare, ich werde versuchen, so vollständig wie möglich zu beantworten.

Und wenn Sie ein Produkt für Cafés, Restaurants, Geschäfte herstellen - lassen Sie uns gemeinsam den Markt verändern! Schreiben Sie jetzt an dev@joinposter.com . Ich bin sicher, dass wir uns gegenseitig nützlich sein können.

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


All Articles