如何构建SaaS产品集成平台:Poster Cloud Checkout体验

让我们玩启动宾果游戏吗? 平台,生态系统,集成,市场,API,协同作用。 宾果!

集成解决方案的内部市场主题在杂货店世界中非常热门。 在Poster POS上,我们了解了开放API的好处以及长期构建生态系统的好处。 “ Facebook效果”中的“平台”一章给我留下了特别深刻的印象,该章强化了您需要使用平台的理解。 3年前,我们打开了API; 2年前,我们启动了Marketplace;一年前,我们发布了一项技术,该技术可以无缝扩展主要产品的功能并影响其行为;大约3个月前,我们重新启动了集成目录并开始积极营销合作伙伴的应用程序。

在开始时,我没有足够的公共案例来作为行动指南。 在本文中,我将告诉您如何在没有集成目录的情况下成为SaaS服务,而在集成目录的情况下成为SaaS服务。 我的文章对已经通过产品市场适应阶段并准备开始构建其生态系统的产品很有用。



关于我们


为了提供一些背景信息, Poster是用于餐饮和零售业务的SaaS自动化系统。 我们所做的就是销售点或“票房”。 我们的产品分为两部分-终端和管理面板。 该终端可在iPad和Android平板电脑或Windows设备上运行。 在候机楼,收银员和服务员按顺序开车,接受付款,打印支票。 机构的管理员,经理,仓库管理员在管理面板中工作:他们保留仓库和管理记录,查看销售统计信息,管理商品等。 现在,该产品已在53个国家/地区的6,000家活跃机构中使用。

一点历史


市场和平台的主题并不新鲜。 第一个平台是操作系统,它使开发人员能够独立管理内存,I / O,处理器时间等。然后带有附加组件的桌面应用程序,插件开始出现。 我对插件的了解始于Total Commander和Winamp。 然后是用于智能手机的Java applet,在iOS 2.0中发布了App Store。 Web服务也开始通过集成和插件(例如Facebook,SalesForce,Basecamp,Xero等)发展。开放的API和市场已成为我们日常生活的一部分,我们不断遇到它们。

市场给什么?


更多功能,更高的用户参与度。


面对现实:您的积压订单将永远增长。 您将永远没有足够的资源来运行用户要求的所有功能。 而且,如果您不断在产品中添加新功能,迟早它会变成令人讨厌的按钮,复选标记和开关的混乱。 最好制造一种能定性解决3-7个问题的产品,而不是50个但平庸的产品。 因此,集成有助于产品在用户眼中定性增长,扩展其功能,这意味着您的客户不太可能与竞争对手竞争。



销售增长的驱动力


与市场上其他公司的集成可以成为主要产品销售的良好驱动力。 例如,在我们的案例中,具有或不具有过时的收银软件的潜在客户可能会来到参与忠诚度系统的合作伙伴。 在这一点上,合作伙伴将建议与他有融合和良好关系的收银台。

能够为大型客户提供定制解决方案


以前,当我们收到在具有非典型要求的大型网络上完成产品定型的请求时,我们不得不拒绝,以免将自己埋在企业解决方案之内,其中代码的每一步都有类似以下的分支:

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

现在,我们可以在系统中实现几乎所有附加组件,而不会影响产品的核心。 或者,甚至更好地将改进外包。

额外的收入渠道


通常,目录会对托管在其上的应用程序的销售收取佣金。 该委员会的规模从30%(行业标准)到80%(在极端情况下,例如在Odnoklassniki中)。 但是与此同时,我个人并不相信可以围绕市场建立公司的业务模型的想法。 例如,苹果销售iPhone的收入占总收入的62%,而整个服务类别(AppStore中的应用程序,Apple Music,iCloud和Apple Pay)均占13%。 在我们的案例中,我们将市场设置为自我维持。

有什么整合


我们将集成选项分为3种主要类型:后端,管理平台,POS平台。

后端整合


我们从最基本的集成选项开始,而第一个集成就是以此方式工作的。 服务合作伙伴的后端通过HTTP JSON API检索数据,以某种方式处理数据并将其显示给客户端,也许是系统内部的某些更新。 一个例子是分析,忠诚度,邮件系统,视频监控系统。

管理平台


实际上,后端集成相同,但是内置于用户的个人帐户中。 为此,可以使用常规的iFrame及其用于无缝授权的协议。 由于对用户而言,这更加方便 无需将系统留在任何地方。 适用于具有简单界面的应用程序。


POS平台


在某个时候,我们和我们的合作伙伴开始错过后端集成。 我需要一个直接与收银员集成的解决方案,我想扩展功能,将其本地集成到收银员中,并更改其行为。 因此,一年前,我们推出了具有插件或小部件机制的POS平台。 您可以在网上看到类似的解决方案,例如在Trello中。

这种技术的集成示例是会员系统,该系统要求在收银员,移动钱包和其他支付系统附近进行客人身份识别。 例如,这是Paytomat的一个应用程序,它允许您使用加密货币为订单付款:



接下来,我将讨论实现该技术的技术组成部分。

如何制作第三方JS应用程序


我们的现金解决方案基于混合技术,可让我们在所有平台(iOS,Android,Windows)上提供支持。 整个界面和业务逻辑都用HTML / JS编写。 对于本机平台,我们围绕WebView编写包装程序,并实现用于与外围设备(打印机,财政登记员,秤等)一起使用的驱动程序。

如果您还将应用程序写在Web堆栈上,我将为您节省研究时间,并告诉我们如何使应用程序可扩展。 在研究过程中,他们受到Trello,Shopify和Atom.io的启发。 结果,我们得出以下模型。

主应用程序实例为每个连接的第三方窗口小部件创建一个单独的容器。 容器是一个iFrame,其中加载了带有伙伴应用程序的可执行代码的JS文件。 带有我们API的方法会自动在容器中提供。 容器缓存在前端(Appcache或Service Workers),可以启动,无需Internet即可工作。

使用iFrame的解决方案,您可以将第三方应用程序的逻辑与主要应用程序隔离开来,并且如果小部件出现某些问题,请不要破坏主流现金应用程序。 我们还考虑了WebWorkers的变体,但是worker中的脚本无法访问DOM,并且我们为小部件提供了显示界面的功能,因此我们立即放弃了此选项。

开发人员使用JS或编译成JS的任何语言(CoffeeScript,Typescript ...)以及任何框架或库来编写应用程序。 接下来,将webpack的代码和所有资源收集在一个bundle.js中,该文件通过控制台实用程序部署到我们的服务器中并交付给用户。

iFrame中的小部件通过postMessage与主应用程序交换消息,并且可以通过内置的Poster向全局范围发送结帐命令。 例如:

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

我们实现了一个回调队列,该队列允许第三方应用程序订阅检出事件,对其进行响应并更改应用程序逻辑。 例如:

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

顺便说一句,在before *事件的情况下,实际上阻止了在结帐时执行某种操作的工作,我们必须从第三方窗口小部件输入响应时间。 例如,有一个应用程序侦听beforeOrderClose事件,并发出带有收银员计划支付给其服务器的订单详细信息的请求。 为了使用户体验不会受到影响,我们为应用程序提供了不超过5秒的时间来实现我们的逻辑并调用next()或显示一个界面来显示用户进度。

开发模式


每次收集整个应用程序并将其在开发过程中部署到我们的服务器上都是不方便的,因此我们采用了开发模式。 在其中,使用具有热重装功能的webpack-dev-server不断收集小部件,并在开发人员帐户上的收银台应用程序中,应用程序代码不是从生产环境启动的,而是从本地开发人员的机器启动的。 同时,界面始终具有在开发和生产之间切换的能力。 不久我们将引入另一个分支-beta。 Beta代码也将部署到我们的服务器上,但只有该应用程序的Beta测试人员才能使用。



开发柜


长期以来,我们根据开发人员的要求注册了应用程序并手动更改了设置。 在创建应用程序阶段的每次联系都使我们能够与开发人员进行更多的交流,以了解他们想要集成哪些产品,API中缺少哪些方法。

但是,当我们达到40-50次同时集成的标准时,集成团队开始花费大量的时间进行机械工作。 因此,我们启动了开发人员办公室,使所有这些流程自动化。



文档,示例,合作伙伴支持


我们在公司的DNA中提供优质的技术支持。 因此,当我们开始与开发合作伙伴共同发展故事时,我们决定提供市场上最酷的开发人员支持。

我们与每个合作伙伴联系,帮助建立集成流程,甚至准备详细的后续工作,并提供他们需要使用的方法列表。 我们通过与合作伙伴开发人员的一般电报聊天来回答问题。

顺便说一句,当经验不足的开发人员不是在我们的平台,API上而是在编程时才问问题,或者在问题就不在身边时不想调试时,有时会出现问题。 在这种情况下,我们使用“在1-2小时内不响应”技术,在大多数情况下,在此期间,开发人员自行解决问题:)

对于文档,我们使用Slate。 从源文件注释中自动生成文档不适合我们,原因是我们需要支持文档的几种语言版本-俄语和英语。



当然,重要的是要了解,对于第三方开发人员来说,我们只是另外一种集成,因此他们应该尽快进行,并为他们的业务带来最大的收益。 因此,我们准备了现成的 样板 ,代码示例,并在此过程中竭尽所能。

应用营销


为了使每个人都受益:机构-额外的功能和业务问题的解决方案,开发人员-新客户,以及我们-生态系统中客户的更深层次封闭,需要对应用进行营销。 对于用户中的营销应用程序,我们使用以下工具。

整合公告


这是最简单的事情:我们宣布社交网络中的新集成以及有关新功能的月度通讯。 在我们所有的联系人上,接收到的邮件都是无针对性的,并且可能在信息噪音中丢失。

触发邮件


我们挑选出可能对一种或另一类应用程序(忠诚度系统,视频监控,文档管理等)感兴趣的客户,并针对他们提供具有针对性的邮件,以查看该类别在市场上的情况。

例如,对于在数据库中为其宾客提供100多个联系方式的机构,我们触发了与忠诚度系统集成的触发,并告诉我们他可以更有效地与宾客合作并将他们送回其机构。 对于拥有5名以上员工的机构(不再是家族企业),我们发送有关与基于云的视频监控系统集成的触发器,以使控制员工变得更加容易。

我们添加这封信并将其推入我们的入职结构,当客户已经获得报酬并开始使用所有基本功能时,它将到达客户。 如果您在他学会使用基本功能之前向他发送有关功能扩展的信息,那将是绝对没有用的。



产品内的信息标语


用户通常会忽略字母并推送信息垃圾流,因此我们在产品本身中添加了醒目的横幅。 我们发现这是将流量定向到应用程序页面的最有效方法之一。 标语出现在上下文中。 例如,在带有收据的部分中会出现有关用于深度分析的产品的横幅-所有者在其中分析其销售。



还有什么


现在,我们正在尝试用案例研究的博客文章格式,以使用集成解决方案解决业务问题。 我们将很快与合作伙伴一起发起联合网络研讨会。

使用上面列出的工具,我们学习了如何每月吸引第三方开发人员20-100个潜在客户,这仅仅是开始。


潜在客户转移后


自然,在将潜在客户展示给第三方开发者之后,销售本身不会发生。 通常,b2b产品很难掌握和独立工作,因此,我们将客户的联系信息(在他的同意下)转让给合作伙伴,并坚持要求他们联系并帮助他们进行入职流程。

我们在工作什么?


开票


我们认为,您需要在一个地方向客户收费,以便尽可能简化客户的流程工作和联系。 现在,我们正在完成对第三方应用程序的计费支持。

顺便说一下,实施中有很多困难,例如:

  1. 应用程序可以具有完全不同的获利模型:每月订阅,交易付款,根据使用情况订阅
  2. 费率变化时必须自动通知客户
  3. 客户可以从不同的国家/地区付款,通常与合作伙伴签订合同
  4. 客户可能附有付款卡,或者可能在帐单中付款。 脸

应用审查


现在,当应用程序进入市场时,将一次性进行应用程序审查。 我们希望在每次部署时引入强制性但快速的审查,以帮助跟踪某些极端情况。

第三方应用指南


为了保留使用我们的产品和集成产品的常见经验,我们向合作伙伴提供设计和流程方面的建议,但没有一套正式的规则。

我们制定海报设计者和开发人员内部使用的准则,然后向第三方开发者开放。

就这样


实际上,我们只是旅程的开始。 要成为一个成熟的平台,还有很多工作要做,但是在这段时间里我们已经学到了很多东西。 进一步-只会更有趣。 如果您有任何疑问,请在评论中写下,我会尽力回答。

如果您要为咖啡馆,饭店,商店生产产品-让我们一起改变市场! 现在写信给dev@joinposter.com ,我相信我们对彼此有用。

Source: https://habr.com/ru/post/zh-CN413109/


All Articles