Comment créer une plate-forme d'intégration de produits SaaS: expérience de vérification d'affiches

Jouons au bingo de démarrage? Plateforme, écosystème, intégration, marketplace, api, synergie. Bingo!

Le thème des marchés internes des solutions intégrées est très chaud dans le monde de l'épicerie. Chez Poster POS, nous avons compris les avantages d'une API ouverte et la construction d'un écosystème depuis longtemps. J'ai été particulièrement impressionné par le chapitre «La plate-forme» dans L'effet Facebook, qui a renforcé la compréhension que vous devez aller sur les plates-formes. Il y a 3 ans, nous avons ouvert l'API, il y a 2 ans, nous avons lancé la place de marché, il y a un an, nous avons lancé une technologie qui permet d'étendre de manière transparente la fonctionnalité du produit principal et d'influencer son comportement, il y a environ 3 mois, nous avons redémarré le catalogue d'intégration et commencé à commercialiser activement les applications des partenaires.

Lorsque nous avons commencé, je n'avais pas assez de cas publics sur ce sujet, un guide pour l'action. Dans cet article, je vais vous expliquer comment devenir un service SaaS sans catalogue d'intégration et devenir un service SaaS avec un catalogue d'intégration. Mon article sera utile pour les produits qui ont déjà franchi le stade de l'adéquation marché-produit et sont prêts à commencer à construire leur écosystème.



À propos de nous


Pour donner un peu de contexte, Poster est un système d'automatisation SaaS pour la restauration et le commerce de détail. Ce que nous faisons est appelé point de vente ou «box-office». Notre produit est divisé en deux parties - terminal et panneau d'administration. Le terminal fonctionne sur iPad et tablettes Android ou appareils Windows. Au terminal, les caissiers et les serveurs conduisent une commande, acceptent le paiement, impriment les chèques. L'administrateur de l'institution, le responsable, le magasinier travaillent dans le panneau d'administration: ils tiennent des registres d'entrepôt et de gestion, regardent les statistiques de vente, gèrent les marchandises, etc. Désormais, le produit est utilisé par 6 000 institutions actives dans 53 pays.

Un peu d'histoire


Le thème des marchés et des plateformes n'est pas nouveau. Les premières plates-formes étaient des systèmes d'exploitation, qui permettaient aux développeurs de gérer indépendamment la mémoire, les E / S, le temps processeur, etc. Ensuite, les applications de bureau avec module complémentaire, des plugins ont commencé à apparaître. Ma connaissance des plugins a commencé avec Total Commander et Winamp. Ensuite, il y avait des applets Java pour smartphones, dans iOS 2.0 a publié l'App Store. Les services Web ont également commencé à se développer avec des intégrations et des plug-ins, par exemple, Facebook, SalesForce, Basecamp, Xero, etc. L'API ouverte et les places de marché font désormais partie de notre vie quotidienne et nous les rencontrons constamment.

Que donnent les places de marché?


Plus de fonctionnalités, engagement accru des utilisateurs.


Avouons-le: votre arriéré augmentera toujours. Vous disposerez toujours de ressources insuffisantes pour exécuter toutes les fonctions demandées par vos utilisateurs. De plus, si vous ajoutez constamment de nouvelles fonctionnalités au produit, tôt ou tard, cela se transformera en un terrible gâchis inconfortable de boutons, de coches et de commutateurs. Il vaut mieux faire un produit qui résoudra qualitativement 3-7 problèmes que 50, mais médiocre. Par conséquent, les intégrations aident le produit à se développer qualitativement aux yeux de l'utilisateur, à étendre ses fonctionnalités, ce qui signifie qu'il est moins probable que votre client se tourne vers les concurrents.



Moteur de la croissance de vos ventes


Les intégrations avec d'autres sociétés du marché peuvent être un bon moteur pour les ventes de votre produit principal. Par exemple, dans notre cas, les clients potentiels avec ou sans logiciel de caisse enregistreuse obsolète peuvent venir à des partenaires engagés dans des systèmes de fidélité. À ce stade, le partenaire recommandera la caisse avec laquelle il a une intégration et de bonnes relations.

Capacité à créer des solutions personnalisées pour les gros clients


Auparavant, lorsque nous recevions une demande de finalisation d'un produit sur un grand réseau aux exigences atypiques, nous devions refuser pour ne pas nous enfouir dans le gouffre des solutions d'entreprise, dans lesquelles à chaque étape du code il y a des branches comme:

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

Nous pouvons désormais implémenter presque tous les modules complémentaires du système sans affecter le cœur du produit. Ou, mieux encore, externalisez les améliorations.

Canal de revenus supplémentaire


En règle générale, les répertoires perçoivent une commission sur les ventes d'applications qui y sont hébergées. La taille de la commission est de 30 (standard de l'industrie) à 80% (dans des cas très extrêmes, par exemple à Odnoklassniki). Mais en même temps, j'ai personnellement peu confiance en l'idée que le modèle commercial de l'entreprise peut être construit autour du marché. Par exemple, Apple a 62% des revenus de la vente d'iPhone et la catégorie entière des services (applications dans l'AppStore, Apple Music, iCloud, Apple Pay) - 13%. Dans notre cas, nous avons défini le marché de manière autonome.

Quelles sont l'intégration


Nous avons divisé les options d'intégration en 3 types principaux: backend, plateforme de gestion, plateforme POS.

Intégration backend


L'option d'intégration la plus basique, nous l'avons commencée et les premières intégrations ont fonctionné de cette façon. Le backend du partenaire de service via l'API HTTP JSON récupère les données, les traite en quelque sorte et les affiche au client, peut-être que quelque chose est mis à jour à l'intérieur de notre système. Un exemple est l'analyse, la fidélisation, les systèmes de diffusion, les systèmes de vidéosurveillance.

Gérer la plateforme


En fait, la même intégration backend, mais intégrée dans le compte personnel de l'utilisateur. Sous le capot, il y a un iFrame régulier et son propre protocole pour une autorisation transparente. C'est beaucoup plus pratique pour l'utilisateur puisque pas besoin de laisser le système n'importe où. Convient aux applications avec une interface simple.


Plateforme POS


À un moment donné, nous et nos partenaires avons commencé à manquer l'intégration du backend. J'avais besoin d'une solution pour m'intégrer directement au caissier, je voulais étendre les fonctionnalités, intégrer nativement dans le caissier, et changer son comportement. Par conséquent, il y a un an, nous avons lancé la plate-forme POS avec la mécanique des plugins ou des widgets. Vous pouvez voir des solutions similaires sur le Web, par exemple dans Trello.

Des exemples d'intégrations sur cette technologie sont les systèmes de fidélité qui nécessitent l'identification des clients à proximité de la caisse, des portefeuilles mobiles et d'autres systèmes de paiement. Voici, par exemple, une application de Paytomat qui vous permet de régler votre commande avec des crypto-monnaies:



Je parlerai ensuite de la composante technique de la mise en œuvre de cette technologie.

Comment créer une application JS tierce


Notre solution cash est construite sur des technologies hybrides, ce qui nous permet de la supporter sur toutes les plateformes: iOS, Android, Windows. L'ensemble de l'interface et de la logique métier est écrit en HTML / JS. Et pour les plateformes natives, nous écrivons des wrappers autour de WebView et implémentons des pilotes pour travailler avec des équipements périphériques (imprimantes, bureaux d'enregistrement fiscaux, balances, etc.)

Si vous écrivez également l'application sur la pile Web, je vous ferai gagner du temps pour la recherche et vous dirai comment nous avons rendu l'application extensible. Au cours de l'étude, ils ont été inspirés par Trello, Shopify et Atom.io. En conséquence, nous sommes arrivés au modèle suivant.

L'instance d'application principale crée un conteneur distinct pour chaque widget tiers connecté. Un conteneur est un iFrame dans lequel un fichier JS avec le code exécutable de l'application partenaire est chargé. Les méthodes avec notre API sont automatiquement disponibles dans le conteneur. Le conteneur est mis en cache sur le devant (Appcache ou Service Workers) et peut être lancé, fonctionner sans Internet.

La solution avec iFrame vous permet d'isoler la logique d'une application tierce de l'application principale et en cas de problèmes avec le widget, ne cassez pas l'application de trésorerie du flux principal. Nous avons également considéré l'option de WebWorkers, mais les scripts à l'intérieur du travailleur n'ont pas accès au DOM, et nous donnons aux widgets la possibilité d'afficher des interfaces, nous avons donc immédiatement abandonné cette option.

Les développeurs écrivent leur application en utilisant JS ou n'importe quel langage qui se compile en JS (CoffeeScript, Typescript ...), avec n'importe quel framework ou bibliothèque. Ensuite, le code et toutes les ressources du webpack sont collectés dans un bundle.js, qui est déployé sur nos serveurs par l'utilitaire de console et remis aux utilisateurs.

Les widgets dans iFrame échangent des messages avec l'application principale via postMessage et peuvent envoyer des commandes de paiement via le poster intégré à la portée globale. Par exemple:

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

Nous avons mis en place une file d'attente de rappel qui permet aux applications tierces de s'abonner aux événements de paiement, d'y répondre et de modifier la logique de l'application. Par exemple:

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

Soit dit en passant, dans le cas d'événements avant *, qui, en fait, bloquent le travail d'effectuer une sorte d'opération à la caisse, nous avons dû entrer le temps de réponse à partir d'un widget tiers. Par exemple, il existe une application qui écoute l'événement beforeOrderClose et fait une demande avec les détails de la commande que le caissier prévoit de payer à son serveur. Pour que l'expérience utilisateur ne souffre pas, nous donnons à l'application pas plus de 5 secondes pour implémenter notre logique et appeler next () ou afficher une interface qui montrera la progression de l'utilisateur.

Mode de développement


À chaque fois, la collecte de l'application entière et son déploiement sur les serveurs pendant le processus de développement ne sont pas pratiques, nous avons donc choisi le mode dev. Dans celui-ci, le widget est constamment collecté à l'aide de webpack-dev-server avec rechargement à chaud et dans l'application de caisse sur le compte du développeur, le code d'application est lancé non pas depuis la production, mais depuis la machine du développeur local. Dans le même temps, l'interface a toujours la possibilité de basculer entre dev et prod. Bientôt, nous présenterons une autre branche - bêta. Le code bêta sera également déployé sur nos serveurs, mais ne sera disponible que par les bêta-testeurs de l'application.



Cabinet de développeur


Pendant longtemps, nous avons enregistré des applications et modifié les paramètres manuellement, à la demande des développeurs. Chaque contact au stade de la création de l'application nous a permis de mieux communiquer avec les développeurs, de connaître les produits qu'ils souhaitent intégrer, les méthodes qui leur manquent dans l'API.

Mais lorsque nous avons atteint la barre des 40 à 50 intégrations simultanées, le travail mécanique a commencé à prendre beaucoup de temps à l'équipe d'intégration. Par conséquent, nous avons lancé le bureau du développeur, dans lequel nous avons automatisé tous ces processus.



Documentation, exemples, assistance aux partenaires


Nous avons un support technique de qualité dans l'ADN de notre entreprise. Par conséquent, lorsque nous avons commencé à développer l'histoire avec des partenaires de développement, nous avons décidé de proposer l'assistance aux développeurs la plus cool du marché.

Avec chaque partenaire, nous appelons, aidons à créer un flux d'intégration et préparons même un suivi détaillé avec une liste de méthodes à mettre en œuvre. Nous répondons aux questions dans un chat Telegram général avec les développeurs partenaires.

Soit dit en passant, un problème survient parfois lorsque des développeurs moins expérimentés posent des questions non pas sur notre plateforme, notre API, mais simplement sur la programmation ou ne veulent pas déboguer lorsque le problème est de leur côté. Dans de telles situations, nous utilisons la technique «ne répond pas dans les 1-2 heures», dans la plupart des cas, pendant ce temps, le développeur résout le problème par lui-même :)

Pour la documentation, nous utilisons Slate. La génération automatique de la documentation à partir des commentaires sur les fichiers source ne nous convenait pas, car nous devons prendre en charge plusieurs versions linguistiques de la documentation - russe et anglais.



Et bien sûr, il est important de comprendre que pour les développeurs tiers, nous ne sommes qu'une intégration supplémentaire de plus, ils doivent donc le faire le plus rapidement possible et avec le maximum d'avantages pour leur entreprise. Par conséquent, nous fabriquons des passe - partout prêts à l'emploi , des exemples de code et faisons de notre mieux pour vous aider dans le processus.

Marketing d'application


Pour que tout le monde en profite: institutions - fonctionnalités supplémentaires et solution de leurs problèmes commerciaux, développeurs - nouveaux clients et nous - une fermeture plus profonde des clients dans notre écosystème, les applications doivent être commercialisées. Pour les applications marketing auprès de nos utilisateurs, nous utilisons les outils suivants.

Annonce d'intégration


C'est la chose la plus simple qui puisse être faite: nous annonçons une nouvelle intégration dans les réseaux sociaux et une newsletter mensuelle sur les nouvelles fonctionnalités. Les messages sont reçus non ciblés, sur tous nos contacts, et peuvent être perdus au milieu du bruit informationnel.

Déclencher des envois


Nous ciblons les clients susceptibles d'être intéressés par l'une ou l'autre catégorie d'applications (systèmes de fidélisation, vidéosurveillance, gestion des documents, etc.), et leur faisons des mailings ciblés avec l'offre pour voir ce que nous avons sur le marché de cette catégorie.

Par exemple, pour les établissements qui ont noté plus de 100 coordonnées de leurs clients dans la base de données, nous déclenchons l'intégration avec les systèmes de fidélisation et nous disons qu'il peut travailler avec ses clients encore plus efficacement et les renvoyer dans son établissement. Pour les institutions de plus de 5 salariés (il ne s'agit plus d'une entreprise familiale), nous envoyons un déclencheur sur l'intégration avec les systèmes de vidéosurveillance cloud pour faciliter le contrôle des salariés.

Nous ajoutons cette lettre et la poussons dans notre structure d'intégration, elle arrive au client lorsqu'il est déjà payé et a commencé à utiliser toutes les fonctions de base. Si vous lui envoyez des informations sur l'extension des fonctionnalités avant qu'il n'apprenne à utiliser la base - cela sera absolument inutile.



Bannières d'information à l'intérieur du produit


Les utilisateurs ignorent assez souvent les lettres et poussent le flux de déchets d'informations, nous avons donc ajouté des bannières discrètes dans le produit lui-même. Nous avons constaté que c'est l'un des moyens les plus efficaces de diriger le trafic vers la page de l'application. Les bannières apparaissent dans leur contexte. Par exemple, une bannière sur les produits pour l'analyse approfondie apparaît dans la section avec les reçus - où le propriétaire analyse ses ventes.



Quoi d'autre?


Maintenant, nous expérimentons le format des articles de blog avec des études de cas pour résoudre les problèmes commerciaux en utilisant des solutions intégrées. Nous lancerons bientôt des webinaires conjoints avec des partenaires.

Avec les outils énumérés ci-dessus, nous avons appris à apporter aux développeurs tiers 20 à 100 prospects par mois, et ce n'est que le début.


Après le transfert de plomb


Naturellement, la vente ne se fait pas d'elle-même après avoir présenté le plomb à un développeur tiers. Habituellement, les produits b2b sont plus difficiles à maîtriser et à travailler de manière indépendante, par conséquent, nous transférons les informations de contact du client (avec son consentement) aux partenaires et insistons pour qu'ils contactent et aident avec le processus d'intégration.

Qu'avons-nous au travail?


Facturation


Nous pensons que vous devez facturer le client en un seul endroit afin de simplifier au maximum le travail de flux et les connexions pour lui. Nous terminons maintenant la prise en charge de la facturation pour les applications tierces.

Soit dit en passant, il existe de nombreuses difficultés de mise en œuvre, par exemple:

  1. Les applications peuvent avoir un modèle de monétisation complètement différent: abonnement mensuel, paiements par transaction, abonnement en fonction de l'utilisation
  2. Le client doit être automatiquement averti en cas de changement de tarif
  3. Les clients peuvent payer depuis différents pays, et un contrat avec un partenaire est généralement dans un
  4. Le client peut avoir une carte attachée pour les paiements, ou il peut y avoir un paiement sur les factures au jur. le visage.

Examen des candidatures


Maintenant, l'examen de la demande est effectué une seule fois lorsque l'application arrive sur le marché. Nous voulons introduire un examen obligatoire mais rapide à chaque déploiement pour aider à suivre certains cas marginaux.

Lignes directrices pour les applications tierces


Pour préserver une expérience commune d'utilisation de nos produits et produits intégrés, nous donnons des recommandations sur la conception et le flux aux partenaires, mais il n'y a pas de règles formalisées.

Nous développons des lignes directrices pour une utilisation interne par les concepteurs et développeurs d'affiches, puis les ouvrons à des développeurs tiers.

C'est tout


En fait, nous ne sommes qu'au début du voyage. Il reste encore beaucoup de travail pour devenir une plateforme à part entière, mais nous avons déjà beaucoup appris pendant cette période. De plus - seulement plus intéressant. Si vous avez des questions, écrivez dans les commentaires, j'essaierai d'y répondre le plus complètement possible.

Et si vous fabriquez un produit pour les cafés, restaurants, magasins - changeons le marché ensemble! Écrivez maintenant à dev@joinposter.com , je suis sûr que nous pouvons être utiles les uns aux autres.

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


All Articles