【问题标题】:Recurring billing with Rails and ActiveMerchant: Best practices, pitfalls, gotchas?Rails 和 ActiveMerchant 的定期计费:最佳实践、陷阱、陷阱?
【发布时间】:2010-10-03 02:01:21
【问题描述】:

我们正在为发布过去一年一直在开发的大型 Web 应用程序做准备。我们即将开始整合 ActiveMerchant 以处理该服务的经常性订阅费用。

考虑到我们的要求(如下所列),我正在寻找有关最佳做法的任何建议,以及我应该特别考虑的常见陷阱或特定问题的任何其他提示。我们将使用的支付网关是PaymentExpress,因为它是少数支持的具有定期计费的网关之一,并且对于在美国以外运营的公司没有任何特殊条件。此应用程序背后的业务位于英国以外。

应用程序的用户创建一个带有子域的帐户,他们可以在其中访问和自定义应用程序及其数据。以下是一些可能会影响计费方式的要求/功能:

  • 所有用户都有 30 天试用期
  • 有不同的计划,包括免费计划
  • 价格较高的计划对其帐户中可以拥有的数据量(例如用户、项目等)有更大的限制
  • 计费周期为每月,​​从试用后开始
  • 将有折扣/优惠券代码,以从一年的正常价格中获得一定百分比的计划等。
  • 计划定价会随着功能的增加而变化

我可以预见的具体障碍包括以下内容:

  • 当他们违反较低级别计划的计划限制时如何处理降级。
  • 信用卡过期或付款未通过时的行为(可能是强制执行的只读模式)
  • 当计划定价发生变化时,我们希望在一段时间内(例如 6 个月)为现有用户保留之前的价格,然后开始收取更高的费率。如果计划价格下降,将立即生效。

其他有用的建议是有关应用程序流程的任何内容。应如何向用户呈现计费表单?什么时候需要信用卡信息?应如何发送、存储和访问发票?

我应该透露,我们计划将大量代码库基于SaaSy。 SaaSy 旨在用作一个单独的 Rails 应用程序,处理所有注册和帐户管理方面的事情。但是,这对我们不起作用,因为我们从一开始就没有计划过,而且要让我们的应用程序像这样工作将是一个乏味的过程。因此,我们将从 SaaSy 提取代码和想法并将它们合并到我们的应用程序中,这是一项相当不乏味的任务。

【问题讨论】:

    标签: ruby-on-rails ruby web-applications payment recurring-billing


    【解决方案1】:

    RailsKits 有一个 Software as a Service kit 应该可以满足您的需求。它内置了对免费试用、升级、降级、计划限制等的支持,并且支持 PaymentExpress(和其他一些)。

    我已经为我正在做的一个项目进行了一些研究,但我还没有购买它,所以我不能保证它。但是,我看到一些博客文章赞扬了这个工具包。

    与您自己实现其所有功能的成本相比,RailsKit 相对便宜,但有几个开源版本旨在完成相同的事情。我记得的那个叫Freemium

    编辑:我忘了提到 Ryan Bates 在他的 most recent Railscast 中说他的下一集或两集将处理经常性计费,所以请留意这一点。他通常每周做一集,自 12 月 22 日以来他做的五集都涉及处理不同类型的付款。

    【讨论】:

    • 是的,我一直在关注 Ryan 的截屏视频,也看过 RailsKit。问题是 RailsKit 被设计为应用程序的起点,而不是现有应用程序的补充。我的问题与其说是技术问题,不如说是架构/设计最佳实践问题。不过谢谢!
    • 顺便说一句,许多人将 SaaS Rails Kit 与他们现有的应用程序一起使用......他们只是复制模型、控制器等。所以,您不必从头开始使用它。
    【解决方案2】:

    Peepcode 有一个 PDF 待售(70 页),其中详细介绍了支付处理的各个方面和行业惯例。可能值得一试:

    http://peepcode.com/products/activemerchant-pdf

    【讨论】:

    • 我看过这本书,我正在寻找比这更多的东西
    • 本书提供了一个很好的过程概述,并包含许多代码sn-ps。作者还涵盖了必须创建单元测试。还包括一个示例应用程序:moneyhats。物超所值,价格实惠。
    【解决方案3】:

    我想补充一点:请记住,您不需要使用网关内置的定期计费功能。一般来说,这些系统都是遗留系统,很难处理,我们在铁路世界中被宠坏了。

    仅将它们用于一个目的(为信用卡计费,或许还存储信用卡以符合 PCI 标准)时,您将获得更大的灵活性。然后在您的 Rails 应用程序中滚动您自己的定期计费,其中包含一个 cron 作业、一个支付时间的日期字段以及每个人支付的金额(如果他们使用优惠券)等。

    一个小例子:有时人们会在月中取消每月订阅。他们希望确保不会忘记在下次付款前取消。我见过的大多数网关定期计费都会立即终止该帐户(或向您发送一条表明这一点的消息)。实际上,用户已在月底付款,并且应该再获得 2 周的访问权限。如果您在 Rails 中滚动了自己的定期计费,则可以执行此操作,但如果您使用的是网关定期计费,则不能这样做。只是一个小例子。

    【讨论】:

      【解决方案4】:

      我也在建立一个基于订阅的网站,这些是我们目前的要求。他们可能会帮助您了解最佳做法:

      • 用户可以选择以下之一 订阅计划。
      • 用户需要输入他们的 要注册的信用卡详细信息 他们选择的计划。
      • 所有主要信用卡和借记卡必须 被接受,包括 Maestro 和 美国运通。
      • 每个计划都有 30 天免费 试用所以用户的信用卡应该 仅在 30 天后收费 期限届满。然而,有效性 的信用卡应检查在 注册时间。
      • 用户将在几天内收到电子邮件 在他们的信用卡被收费之前 通知他们他们将 除非他们取消他们的 帐户。如果他们取消帐户 在 30 天的免费试用期内,他们的 不应从信用卡中扣款。
      • 任何免费试用期结束后,用户 将提前收取他们的费用 系统的使用——即他们会 预付款。
      • 将自动向用户收费 每个月为他们选择的计划。 每个月都会向用户发送一个 提前几天发邮件通知 他们将被指控。一次 已付款,用户将 通过电子邮件发送发票显示他们的 已收到付款。
      • 用户将能够升级或 随时降级他们的帐户。 当用户升级/降级时,他们的 下一次订阅费用将在 新费率。用户将只能 将他们的帐户降级为计划 可以处理他们的数据。为了 例如,如果他们目前有 10 他们无法降级的活动项目 到基本计划,因为基本 计划只允许 5 个项目。他们 将不得不删除或存档 5 项目在你之前他们可以 降级到基本版。
      • 用户将能够登录到他们的 帐户并更改或更新他们的 信用卡详细信息。
      • 用户将能够取消他们的 随时开户。将没有 之后的进一步订阅费用 用户已取消其帐户。 但是,用户将不会获得退款 在这个月的一部分时间里,他们有 已经付款了。
      • 支付系统的所有部分必须 100% 符合 PCI DSS;包含 任何第三方系统。
      • 支付系统必须支持 自动通知和重试 订阅续订失败。
      • 支付系统必须支持 有有效期的折扣券。
      • 信用卡详细信息不得 由我们的服务器处理或存储在我们的服务器上
      • 它们应始终由我们的第 3 方处理/存储 付款处理合作伙伴。我们不 希望负责保护 这些细节并遵守 法律法规。
      • 用户将能够登录到他们的 帐户并查看完整的帐单 历史记录,包括日期和金额 有薪酬的。我们还需要成为 可以登录系统查看 客户付款计划和付款 历史。这对于 客户服务。

      我们也一直在研究http://chargify.com/,它看起来可以节省大量编码时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-22
        相关资源
        最近更新 更多