使用IaaS提供商的服务时的重要问题之一是付款的便利性。 从项目开始的第一天起,我们就尝试简化使用银行卡付款的过程,并继续改进这种机制。 今天,我们决定谈论我们的起点,并分享我们的经验。
/ Flickr / 穆罕默德·阿希克 / CC BY-SA背景知识
自2012年以来,我们
一直在
1cloud提供IaaS服务。 在这段时间里,我们
设法使用了大量的支付网关。 第一个是Money Online。 我们与他合作了两年,然后开始在潜在技术困难的情况下连接替代服务。
作为替代方案,可以考虑使用PayPal和Robocassa。 结果,两个平台都连接了,尽管
这样做有些困难 。 在第一种情况下,要将客户ID导入付款表单,我们必须调整CSS规则并修改网页上的标准元素。 在Robocassa的情况下,API中的许多请求与它的描述不匹配,但是在技术支持的帮助下,情况也得到了解决。 我们没有停止这些决定,而是考虑了潜在合作伙伴为我们提供的其他选择。
因此,我们开始使用PayMaster付款系统(它取代了“ Money Online”),为我们提供了优惠的佣金条件和便捷的API。 长期以来,这个支付网关一直是主要的支付网关。 但是,最近我们决定重新设计服务的可用性,并简化通过银行卡为个人支付服务费用的过程。 为了使UX满足我们的要求,我们集成了另一个支付网关CloudPayments。
如何改善UX付款流程?
我们正在研究预付款模式。 客户在其个人帐户中补充其帐户,然后随着IaaS服务的使用(每10分钟从帐户中扣除)从该帐户中扣除资金。
要使用信用卡补充余额,对于PayMaster,客户必须经历四个步骤:
- 在控制台中的表单中输入付款金额,点击“付款”按钮,然后转到付款网关页面。
- 指明要接收支票的电话或电子邮件地址,然后单击继续。
- 输入卡的详细信息,然后再次按“支付”按钮。
- 指示银行作为3D安全程序的一部分发送的交易确认代码。
免责声明:上述算法适用于个人进行的银行卡付款。 法人实体通过账单支付IaaS提供商的服务。 在提高可用性的同时,我们最终确定了自动开具此类发票的机制,但是由于法律实体不与支付网关进行交互,因此我们不会在本材料的框架内考虑它们。
我们决定简化用户的付款流程,并总体上改善用于填写银行卡数据的表格的外观和可用性。 为此,我们为自己确定了两个任务,我们将在下面讨论。
任务1:排除进入支付网关页面的内容
如上文所述,当用户为我们的服务付费时,为了填写卡的详细信息,他被迫前往支付网关的站点。 因此,一个人必须按下许多确认按钮,然后等待加载包含有关帐户充值信息的页面。
在这种情况下,出现了另一个问题-用户将钱存入帐户后,他一直停留在支付网关页面上,直到他单击特殊链接返回1cloud.ru为止。 例如,如果用户付款后想要增加其IT基础架构的容量,则这将使我们难以使用控制面板。
“根据分析,只有少数客户跟随该链接返回到我们的网站,” 1cloud.ru的开发主管Sergey Belkin说。 -部分原因是客户必须点击“返回在线商店”链接。 尽管事实上我们的服务不是在线商店。”
另外,我们希望将用户填写的字段数量减少到最少,仅保留操作真正需要的字段。 为了完成此任务,我们选择了CloudPayments支付网关,其员工最初以快速而完整的技术支持响应引起了我们的关注。
此外,该支付网关在哈萨克斯坦设有代表处。 这样就可以为我们的托管服务
oblako.kz实施一种新的付款方式。 否则,我们从哈萨克斯坦到俄罗斯的所有转账(反之亦然)将受到额外的佣金。
CloudPayments建议使用特殊的
chekout脚本 。 它使您可以直接在我们的控制面板中实施付款表格,并将完成的数据传输到付款网关,而无需将其保存在我们这边。
要实施该脚本,我们必须在一个认可的组织中进行
PCI DSS安全扫描-这是CloudPayments的要求。 必须进行扫描以确认技术是否符合标准,并排除在现场填写表格时盗窃用户数据的可能性。
PCI DSS合规性审核由ARinteg进行。 我们向他们发送了一份申请,其中我们表示希望进行审核,填写调查表并设定验证日期。 在ARinteg方面,准备扫描大约需要半天(也就是说,您几乎可以立即进行扫描),但是我们又花了四到五天的时间来仔细准备我们的基础架构。
扫描持续了大约15个小时,尽管恰好扫描需要几天。 ARinteg的专家在我们的网站上检查了SSL并防止注入请求和其他漏洞。
我们没有通过初始测试,因此得到了需要解决的一系列问题。 所有这些都无关紧要,例如,当用户在站点上评估我们的分步说明时,使用了后方法。 我们删除了所有评论,第二次审核尝试成功。 接下来,我们可以继续执行chekout脚本。
该脚本已在我们的网站上注册,从指定的表格中收集卡数据,并从中编写密码以通过CloudPayments API进行付款。 看起来像这样:
this.createCryptogram = function () { var result = checkout.createCryptogramPacket(); if (result.success) {
输入银行卡数据的表格如下所示:

在脚本和表单的实现过程中,我们能够将用户填写的字段数量减少到最少。 他们只留下了手术真正必要的那些东西。 例如,字段“名字”和“姓氏”被删除。 正如付款网关的代表向我们解释的那样,银行不会检查此数据(只有卡号,日期和CVV很重要),因此我们决定省略它们并简化整个过程。
此外,我们更清楚地显示了有关
折扣计划的信息:一次性充值金额为5000卢布起,其中10%以赠金的形式存入,从10000卢布-20%,超过100000卢布-25%。 我们还添加了为用户保存地图数据的功能。 所有这些信息都以加密形式存储在CloudPayments支付网关的一侧。
任务2:实现自动付款
这是在某些情况下自动发生的付款。 订阅服务经常使用此功能。 但是,大多数付款网关仅在按计划(在给定日期)进行自动补货时才提供该选项。 对我们而言,重要的是,当客户帐户中的资金用完时(因为我们采用预付款方式),可以随时自动补充帐户。 因此,为了实现自动付款,我们使用了从“记住的”卡(使用临时令牌)付款时使用的方法。
它的工作方式如下:在用户首次成功付款后,网关会为服务卡对生成令牌,并在回发响应中发送令牌。 该令牌已保存,并且在重复付款后已被传输,而不是卡数据。 事实证明,我们向网关发送了一个请求,其中指出了我们的API密钥(标识该请求来自1cloud),令牌和金额。 网关检查是否创建了这样的令牌,并且如果一切正常,它将处理指定金额的付款。
需要自动付款的日期,我们会根据用户当前的服务使用量和帐户余额来动态计算。 假设客户的资产负债表上有1000卢布,并且在最后10分钟的间隔内消耗了2卢布。 显然,归零的大概日期将以五百一十分钟为间隔-这大约是34天。 因此,我们可以在资金用完前几天自动付款。 客户独立选择自动付款大小。
接下来是什么
现在,我们正在测试这些解决方案并评估实施结果。 根据客户的投票,大多数都是可变的。 我们将更深入地研究有关系统的反馈,分析数据,并在必要时进行调整。
PS我们公司博客中的新鲜材料: