3

我正在使用 Zend 框架在 php 中构建一个付费会员网站。我需要制定一个向用户收费的工作流程。我们有许多月度套餐,每个套餐都提供不同程度的服务。例如:

允许用户创建一个工作区和一个用户的免费计划

一个基本计划,允许创建 5 个工作区和 3 个用户,每月收费 15 美元

允许创建 20 个工作区和 10 个用户的高级计划,每月收费 35 美元

一个重型计划,允许创建 50 个工作区和 30 个用户,每月花费 65 美元

我现在很可能会与像 AlertPay 这样的第三方网关集成 - 但是这些套餐是按月支付的,并且:( 抱歉,到目前为止我还没有真正注册任何月度会员服务网站,想知道你如何逐步收取每个月的用户。

您是坚持他们每个月都输入他们的信用卡详细信息,还是您实际上要求他们提供一次详细信息然后您每月收取费用 - 老实说,我什至怀疑后者甚至可以考虑。

或者用户是否提前支付他们希望使用多少个月的费用 - 它是如何正常完成的。

此外,我想在注册后为我的用户提供所有付费套餐的 10 天免费试用期。我将如何在代码中实现这一点。我已经设置了我的应用程序并且正在运行,就好像所有用户都是管理员一样,即没有任何东西,现在想要建立限制以实现货币化,但在工作流程以及代码实现和数据设计上有点迷失了这样做.

提醒我是否有任何在线服务或开源应用程序可用于插入我的应用程序并为我处理网站的这一方面?

更新 ===========================

非常全面的答案,但是在开发级别上 - 我应该在我的数据库中存储什么以及我将如何设计所需的表。我不明白,每月订阅的每个月都会对我提供网关的网址进行回发。就像数据库的基本要素一样。

4

2 回答 2

1

嗯,你问了两个问题。

您如何每月递增地向用户收费?

您正在寻找的是定期付款,大多数支付网关都提供此类选项(Paypal 提供)。基本上,它将信用卡信息存储在一个安全的数据库中,并每天运行一个 cron 来检查重复配置文件并请求授权。但是,我实际上不建议您自己做,这很困难,并且在大多数国家/地区都是非法的。(您不能自己存储 CC 号码)。

有些网站会向您收取n个月的费用,但从用户的角度来看,它可能会害怕他们。

我将如何在代码中实现这一点?

Zend Framework 提供了一个组件 ( Zend_Acl),它将帮助您构建访问控制列表

您可以为每种订阅类型创建一个“角色”,每个角色对不同资源具有不同的权限。

如果您知道MoSCOW 方法,它在某种程度上是相似的:

  • (角色)免费计划可以(特权)注册(资源)网站。
  • (角色)基本计划可以(权限)创建5个(资源)工作区。
    等等

请注意,大多数时候,有一种Privilege Escalation,因为您可以继承角色。

您需要隔离并找到您的资源,资源可以是您想要的任何东西,甚至是动态的和动态创建的。

使用断言,您应该能够限制每个角色的工作区数量。

Class WorkspaceCountAssertion {

    const MAX_WORKSPACE = 5;

    public function assert(Zend_Acl $acl,
                           Zend_Acl_Role_Interface $role = null,
                           Zend_Acl_Resource_Interface $resource = null,
                           $privilege = null)
    {
        //retrieve the current workspace count
        if ($workspaceCount > self::MAX_WORKSPACE) {
            return false;
        }

        return true;
    }
}

$acl->allow('basic', 'workspace', 'create', new WorkspaceCountAssertion());

它给你的想法。

请注意,我从未使用过用户、控制器等术语,您实际上需要考虑角色、资源、权限。


您需要以简单的多对一关系存储角色及其关联帐户。
每个帐户可以有一个角色。付款停止时如何更新?取决于,但在大多数情况下,您需要运行一个 cron 来检查是否结束订阅并检查是否定期付款,具体取决于支付网关,它要么回发生成的交易,要么直接通过网络服务返回。如果付款失败或被拒绝,那么您可以将角色改回免费帐户。

有几种方法可以做到这一点,这取决于您的应用程序和要求。

您可能希望存储每个月度订阅,或更新关联的帐户/订阅行。

于 2011-04-03T20:45:40.033 回答
0

大多数支付网关将为您管理您的订阅,并通过回发机制通知您的网站。IE,

  1. 用户访问您的网站
  2. 用户为您网站上的订阅付费
  3. 用户被重定向到由您自己或支付网关(取决于网关)托管的支付表单。
  4. 用户在表单上输入他们的信用卡信息并提交到支付网关。
  5. 支付网关启动订阅并通过回发(在后台)通知您的站点。
  6. 根据用户支付表单是在本地托管并且您只是将提交内容发布到您的支付网关,或者支付网关正在处理表单,您的用户可能需要被重定向回成功/失败页面,或者只是显示适当的响应。

当订阅发生变化时,即重新计费、取消、拒付,您的支付网关会启动另一个回发以通知您有新事件。然后,您的应用程序将负责适当地更新用户状态。

这是非常笼统的信息,尽管它大致是大多数支付网关所遵循的步骤。

于 2011-04-03T20:32:07.050 回答