Como criar uma plataforma de integração de produtos SaaS: experiência de checkout na nuvem de pôsteres

Vamos jogar bingo de inicialização? Plataforma, ecossistema, integração, mercado, API, sinergia. Bingo!

O tópico de mercados internos de soluções integradas é muito quente no mundo do mercado de alimentos. No Poster POS, entendemos os benefícios de uma API aberta e a construção de um ecossistema por um longo tempo. Fiquei particularmente impressionado com o capítulo “A Plataforma” no Efeito Facebook, que reforçou o entendimento de que você precisa acessar as plataformas. Há 3 anos, abrimos a API, 2 anos atrás, lançamos o Marketplace, um ano atrás, lançamos uma tecnologia que permite expandir perfeitamente a funcionalidade do produto principal e influenciar seu comportamento, cerca de 3 meses atrás, reiniciámos o catálogo de integração e iniciamos ativamente os aplicativos dos parceiros de marketing.

Quando começamos, eu não tinha casos públicos suficientes sobre esse assunto, um guia de ação. Neste artigo, mostrarei como se tornar um serviço SaaS sem um catálogo de integração e se tornar um serviço SaaS com um catálogo de integração. Meu artigo será útil para produtos que já passaram do estágio de ajuste do mercado do produto e estão prontos para começar a construir seu ecossistema.



Sobre nós


Para dar um pouco de contexto, o Poster é um sistema de automação SaaS para os negócios de restaurantes e varejo. O que fazemos é chamado de Ponto de Venda ou "bilheteria". Nosso produto é dividido em duas partes - terminal e painel de administração. O terminal funciona em tablets iPad e Android ou dispositivos Windows. No terminal, caixas e garçons dirigem um pedido, aceitam pagamento, imprimem cheques. O administrador da instituição, o gerente e o lojista trabalham no painel de administração: eles mantêm registros de armazém e gerenciamento, analisam estatísticas de vendas, gerenciam mercadorias etc. Agora, o produto é usado por 6.000 instituições ativas em 53 países.

Um pouco de história


O tema dos mercados e plataformas não é novo. As primeiras plataformas foram sistemas operacionais, que permitiam aos desenvolvedores gerenciar de forma independente memória, E / S, tempo do processador, etc. Em seguida, aplicativos de desktop com plug-ins adicionais começaram a aparecer. Meu conhecimento dos plugins começou com o Total Commander e o Winamp. Depois, havia miniaplicativos Java para smartphones, no iOS 2.0 lançados na App Store. Os serviços da Web também começaram a crescer com integrações e plug-ins, por exemplo, Facebook, SalesForce, Basecamp, Xero, etc. A API e os mercados abertos tornaram-se parte de nossa vida cotidiana e os encontramos constantemente.

O que os mercados dão?


Mais recursos, maior envolvimento do usuário.


Vamos ser sinceros: seu backlog sempre aumentará. Você sempre terá recursos insuficientes para executar todas as funções solicitadas pelos usuários. Além disso, se você constantemente adiciona novos recursos ao produto, mais cedo ou mais tarde ele se transformará em uma terrível bagunça desconfortável de botões, marcas de seleção e interruptores. É melhor fazer um produto que resolva qualitativamente 3-7 problemas do que 50, mas medíocre. Portanto, as integrações ajudam o produto a crescer qualitativamente aos olhos do usuário, a expandir sua funcionalidade, o que significa que é menos provável que seu cliente vá para os concorrentes.



Condutor do seu crescimento de vendas


As integrações com outras empresas do mercado podem ser um bom direcionador para as vendas do seu principal produto. Por exemplo, no nosso caso, clientes em potencial com ou sem software desatualizado de caixas registradoras podem procurar parceiros que estejam envolvidos em sistemas de fidelidade. Nesse momento, o parceiro recomendará o caixa com o qual ele tem integração e boas relações.

Capacidade de criar soluções personalizadas para grandes clientes


Anteriormente, quando recebíamos uma solicitação para finalizar um produto em uma grande rede com requisitos atípicos, tínhamos que recusar para não nos enterrar no poço das soluções corporativas, nas quais a cada etapa do código existem ramos como:

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

Agora podemos implementar quase todos os complementos no sistema sem afetar o núcleo do produto. Ou, melhor ainda, terceirizar as melhorias.

Canal adicional de ganhos


Normalmente, os diretórios cobram uma comissão pelas vendas de aplicativos hospedados nele. O tamanho da comissão é de 30 (padrão da indústria) a 80% (em casos muito extremos, por exemplo, em Odnoklassniki). Mas, ao mesmo tempo, pessoalmente tenho pouca fé na ideia de que o modelo de negócios da empresa possa ser construído em torno do mercado. Por exemplo, a Apple possui 62% da receita com a venda do iPhone e toda a categoria de serviços (aplicativos na AppStore, Apple Music, iCloud, Apple Pay) - 13%. No nosso caso, definimos o mercado como autossustentável.

O que são a integração


Dividimos as opções de integração em três tipos principais: Back-end, Gerenciar plataforma, plataforma POS.

Integração de back-end


A opção de integração mais básica, começamos com ela e as primeiras integrações funcionaram dessa maneira. O back-end do parceiro de serviço por meio da API HTTP JSON recupera os dados, de alguma forma os processa e os exibe para o cliente, talvez algo seja atualizado dentro do nosso sistema. Um exemplo é análise, lealdade, sistemas de correspondência, sistemas de vigilância por vídeo.

Gerenciar plataforma


De fato, a mesma integração de back-end, mas incorporada à conta pessoal do usuário. Por trás disso, há um iFrame comum e seu próprio protocolo para autorização contínua. É muito mais conveniente para o usuário, pois não há necessidade de deixar o sistema em qualquer lugar. Adequado para aplicações com uma interface simples.


Plataforma POS


Em algum momento, nós e nossos parceiros começamos a perder a integração de back-end. Eu precisava de uma solução para integrar diretamente ao caixa, queria expandir a funcionalidade, integrar nativamente ao caixa e mudar seu comportamento. Portanto, há um ano, lançamos a plataforma POS com a mecânica de plugins ou widgets. Você pode ver soluções semelhantes na Web, por exemplo, no Trello.

Exemplos de integrações nessa tecnologia são sistemas de fidelidade que exigem identificação de convidados perto da caixa, carteiras móveis e outros sistemas de pagamento. Aqui, por exemplo, está um aplicativo da Paytomat que permite que você pague pelo seu pedido com criptomoedas:



A seguir, falarei sobre o componente técnico da implementação dessa tecnologia.

Como criar um aplicativo JS de terceiros


Nossa solução de caixa é construída sobre tecnologias híbridas, que nos permitem suportá-lo em todas as plataformas: iOS, Android, Windows. Toda a interface e lógica de negócios são escritas em HTML / JS. E para plataformas nativas, escrevemos wrappers no WebView e implementamos drivers para trabalhar com equipamentos periféricos (impressoras, registradores fiscais, balanças etc.)

Se você também escrever o aplicativo na pilha da Web, economizarei seu tempo para pesquisar e contarei como tornamos o aplicativo extensível. Durante o estudo, eles foram inspirados pelo Trello, Shopify e Atom.io. Como resultado, chegamos ao seguinte modelo.

A instância principal do aplicativo cria um contêiner separado para cada widget de terceiros conectado. Um contêiner é um iFrame no qual um arquivo JS com o código executável do aplicativo parceiro é carregado. Os métodos com nossa API estão automaticamente disponíveis no contêiner. O contêiner é armazenado em cache na frente (Appcache ou Service Workers) e pode ser iniciado, funcionar sem a Internet.

A solução com o iFrame permite isolar a lógica de um aplicativo de terceiros do principal e, no caso de alguns problemas com o widget, não quebre o aplicativo de fluxo de caixa principal. Também consideramos a opção de WebWorkers, mas os scripts dentro do trabalhador não têm acesso ao DOM e damos aos widgets a capacidade de exibir interfaces, então deixamos de lado essa opção imediatamente.

Os desenvolvedores escrevem seus aplicativos usando JS ou qualquer linguagem que seja compilada em JS (CoffeeScript, Typescript ...), com quaisquer estruturas ou bibliotecas. Em seguida, o código e todos os recursos do webpack são coletados em um bundle.js, que é implementado em nossos servidores pelo utilitário do console e entregue aos usuários.

Os widgets no iFrame trocam mensagens com o aplicativo principal via postMessage e podem enviar comandos de checkout através do pôster incorporado ao escopo global. Por exemplo:

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

Implementamos uma fila de retorno de chamada que permite que aplicativos de terceiros se inscrevam em eventos de checkout, respondam a eles e alterem a lógica do aplicativo. Por exemplo:

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

A propósito, no caso de eventos anteriores *, que, de fato, bloqueiam o trabalho de executar algum tipo de operação no checkout, tivemos que inserir o tempo de resposta de um widget de terceiros. Por exemplo, há um aplicativo que escuta o evento beforeOrderClose e faz uma solicitação com os detalhes do pedido que o caixa planeja pagar ao servidor. Para que a experiência do usuário não sofra, damos ao aplicativo no máximo 5 segundos para implementar nossa lógica e chamar next () ou exibir uma interface que mostre o progresso do usuário.

Modo de desenvolvimento


Cada vez que coletar o aplicativo inteiro e implantá-lo nos servidores durante o processo de desenvolvimento é inconveniente, criamos o modo de desenvolvimento. Nele, o widget é coletado constantemente usando o webpack-dev-server com recarga a quente e no aplicativo de caixa eletrônico na conta do desenvolvedor, o código do aplicativo é iniciado não a partir da produção, mas da máquina do desenvolvedor local. Ao mesmo tempo, a interface sempre tem a capacidade de alternar entre dev e prod. Em breve apresentaremos outro ramo - beta. O código beta também será implantado em nossos servidores, mas estará disponível apenas pelos testadores beta do aplicativo.



Gabinete do desenvolvedor


Durante muito tempo, registramos aplicativos e alteramos as configurações manualmente, a pedido dos desenvolvedores. Cada contato na fase de criação do aplicativo nos permitiu comunicar mais com os desenvolvedores, aprender sobre quais produtos eles desejam integrar, quais métodos faltam na API.

Porém, quando atingimos a marca de 40 a 50 integrações simultâneas, o trabalho mecânico começou a levar muito tempo da equipe de integração. Portanto, lançamos o escritório do desenvolvedor, no qual automatizamos todos esses processos.



Documentação, exemplos, suporte ao parceiro


Temos suporte técnico de qualidade no DNA da nossa empresa. Portanto, quando começamos a expandir a história com parceiros de desenvolvimento, decidimos dar o suporte mais legal ao desenvolvedor do mercado.

Com cada parceiro, ligamos, ajudamos a criar um fluxo de integração e até preparamos um acompanhamento detalhado com uma lista de métodos que eles precisam usar para implementar. Respondemos perguntas em um bate-papo geral do Telegram com desenvolvedores parceiros.

A propósito, às vezes surge um problema quando desenvolvedores menos experientes fazem perguntas não em nossa plataforma, API, mas simplesmente em programação ou não desejam depurar quando o problema está do lado deles. Nessas situações, usamos a técnica "não responda dentro de 1-2 horas"; na maioria dos casos, durante esse período, o desenvolvedor resolve o problema sozinho :)

Para documentação, usamos Slate. A geração automática de documentação a partir de comentários nos arquivos de origem não nos serviu pelo motivo de precisarmos suportar várias versões de idiomas da documentação - russo e inglês.



E, é claro, é importante entender que, para desenvolvedores de terceiros, somos apenas mais uma integração adicional; portanto, eles devem fazê-lo o mais rápido possível e com o máximo benefício para seus negócios. Portanto, criamos clichês prontos , exemplos de código e fazemos o possível para ajudar no processo.

Marketing de aplicativos


Para que todos possam se beneficiar: instituições - funcionalidade adicional e solução de seus problemas de negócios, desenvolvedores - novos clientes e nós - um fechamento mais profundo dos clientes em nosso ecossistema, os aplicativos precisam ser comercializados. Para aplicativos de marketing entre nossos usuários, usamos as seguintes ferramentas.

Anúncio de Integração


É a coisa mais simples que pode ser feita: estamos anunciando uma nova integração nas redes sociais e um boletim mensal sobre novos recursos. As mensagens são recebidas sem segmentação, em todos os nossos contatos, e podem ser perdidas no meio do ruído informativo.

Acionar correspondências


Selecionamos os clientes que podem estar interessados ​​em uma ou outra categoria de aplicativos (sistemas de fidelidade, vigilância por vídeo, gerenciamento de documentos etc.), e enviamos a eles mala direta com a oferta para ver o que temos no mercado dessa categoria.

Por exemplo, para estabelecimentos que obtiveram mais de 100 detalhes de contato de seus convidados no banco de dados, acionamos a integração com sistemas de fidelidade e informamos que ele pode trabalhar com seus convidados de maneira ainda mais eficiente e devolvê-los à sua instituição. Para instituições com mais de 5 funcionários (isso não é mais uma empresa familiar), enviamos um alerta sobre a integração com sistemas de vigilância por vídeo baseados em nuvem para facilitar o controle dos funcionários.

Adicionamos essa carta e empurramos para nossa estrutura de integração, ela chega ao cliente quando ele já foi pago e começou a usar todas as funções básicas. Se você enviar informações sobre a expansão da funcionalidade antes que ele aprenda a usar o básico - será absolutamente inútil.



Banners de informações dentro do produto


Os usuários geralmente ignoram as cartas e inserem o fluxo de lixo informativo; portanto, adicionamos banners discretos no próprio produto. Descobrimos que essa é uma das maneiras mais eficazes de direcionar o tráfego para a página do aplicativo. Os banners aparecem no contexto. Por exemplo, um banner sobre produtos para análises profundas aparece na seção com recibos - onde o proprietário analisa suas vendas.



O que mais?


Agora estamos experimentando o formato de artigos de blog com estudos de caso para resolver problemas de negócios usando soluções integradas. Em breve, lançaremos seminários on-line com parceiros.

Com as ferramentas listadas acima, aprendemos a levar desenvolvedores de terceiros de 20 a 100 leads por mês, e isso é apenas o começo.


Após a transferência de chumbo


Naturalmente, a venda não ocorre por si só depois de apresentarmos o lead a um desenvolvedor de terceiros. Geralmente, os produtos b2b são mais difíceis de dominar e trabalhar de forma independente; portanto, transferimos as informações de contato do cliente (com o seu consentimento) para os parceiros e insistimos que eles entrem em contato e ajudem no processo de integração.

O que temos no trabalho?


Faturamento


Acreditamos que você precisa cobrar do cliente em um único local para simplificar o trabalho e as conexões de fluxo o máximo possível. Agora estamos finalizando o suporte de cobrança para aplicativos de terceiros.

A propósito, há muitas dificuldades na implementação, por exemplo:

  1. Os aplicativos podem ter um modelo de monetização completamente diferente: assinatura mensal, pagamentos de transação, assinatura dependendo do uso
  2. O cliente deve ser notificado automaticamente em caso de alteração tarifária
  3. Os clientes podem pagar de diferentes países, e um contrato com um parceiro geralmente ocorre em um
  4. O cliente pode ter um cartão anexado para pagamentos ou pode haver pagamento de contas no jur. o rosto.

Revisão da Aplicação


Agora, a revisão do aplicativo é realizada uma vez quando o aplicativo entra no mercado. Queremos introduzir uma revisão obrigatória, mas rápida, em todas as implantações para ajudar a rastrear alguns casos extremos.

Diretrizes para aplicativos de terceiros


Para preservar uma experiência comum do uso de nossos produtos e produtos integrados, damos recomendações sobre design e fluxo aos parceiros, mas não há um conjunto formal de regras.

Desenvolvemos diretrizes para uso interno de designers e desenvolvedores de pôsteres e as abrimos para desenvolvedores de terceiros.

Isso é tudo


De fato, estamos apenas no começo da jornada. Ainda há muito trabalho para se tornar uma plataforma completa, mas já aprendemos muito durante esse período. Além disso - apenas mais interessante. Se você tiver dúvidas, escreva nos comentários, tentarei responder o mais completamente possível.

E se você está fabricando um produto para cafés, restaurantes, lojas - vamos mudar o mercado juntos! Escreva agora para dev@joinposter.com , tenho certeza de que podemos ser úteis um para o outro.

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


All Articles