网站付费会员的程序工作流程是什么?

3
我正在使用Zend Framework编写一个付费会员网站。我需要制定一个为用户收费的工作流程。我们有许多每月提供不同服务的套餐。举个例子:
免费计划:允许用户创建一个工作区和一个用户
基本计划:允许创建五个工作区和三个用户,每月花费15美元
高级套餐:允许创建20个工作区和10个用户,每月费用为35美元
重型套餐:允许创建50个工作区和30个用户,每月费用为65美元
我很可能现在要集成第三方网关,比如AlertPay。但是这些套餐是按月计费,并且:(很抱歉我甚至还没有注册任何月度会员服务网站,所以我想知道如何每月逐步收费。
你坚持要求他们每个月输入信用卡详细信息,还是实际上只要求他们一次输入详细信息,然后每个月收费——我真的怀疑后者甚至可以被考虑。
或者用户预付他们希望使用的月数-通常是如何完成的。
此外,我想给我的用户一个10天的免费试用期,测试所有付费套餐。我该如何在代码中实现这一点。我的应用程序已经设置并运行,就像所有用户都是管理员一样,即没有任何限制,现在想要建立限制以实现商业化,但在工作流程和代码实现以及数据设计方面有些迷茫。
提醒我是否有任何在线服务或开源应用程序,我可以使用插入到我的应用程序中,并为我处理站点的这个方面?
更新=========================
非常全面的答案,但从开发的角度来看——我应该在我的数据库中存储什么,以及如何设计所需的表。我现在理解每月对于月度订阅,将向我提供网关的URL进行回传。在这里的基本要素是什么?
2个回答

1

嗯,你问了两个问题。

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

你所要寻找的是定期付款功能,大多数支付网关都提供这样的选项(比如Paypal)。基本上,它会将信用卡信息存储在安全数据库中,并每天运行一个定时脚本来检查定期配置文件并请求授权。然而,我实际上不建议你自己去做,这很困难,而且在大多数国家还属于非法行为(你不能自己存储信用卡号码)。

有些网站会一次性为你收取n个月的费用,但从用户的角度来看,这可能会让他们感到担忧。

如何在代码中实现这个功能?

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

你可以创建每种订阅类型对应的一个"角色",每个角色在不同资源上具有不同的权限。

如果你了解MoSCOW方法,它有些相似:

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

请注意,大多数情况下,存在一种特权升级,因为您可以继承角色。

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

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

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());

它会给你一些想法。

请注意,我从未使用过用户、控制器等术语,您需要按照角色、资源、权限的思维方式来思考。


您需要在一个简单的多对一关系中存储角色及其关联账户。
每个账户只能有一个角色。当付款停止时如何更新?这取决于情况,但大多数情况下,您需要运行一个定时任务来检查订阅是否到期,并检查循环付款。根据支付网关的不同,它将返回结果交易或直接通过 Web 服务返回。如果付款失败或被拒绝,则可以将角色更改回免费账户。

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

您可能希望存储每个月的订阅,或者更新链接的账户/订阅行。


0
大多数支付网关都会为您管理订阅,并通过后台机制向您的网站发送通知。即:
  1. 用户访问您的网站
  2. 用户在您的网站上付费订阅
  3. 用户被重定向到由您自己或支付网关托管的付款表单(取决于网关)。
  4. 用户在表单上输入信用卡信息并提交给支付网关。
  5. 支付网关启动订阅并通过后台机制向您的网站发送通知。
  6. 根据用户付款表单是本地托管并且您只是将提交传递给支付网关,还是支付网关处理表单,您的用户可能需要被重定向回成功/失败页面,或者仅显示适当的响应。
当订阅发生变化时,例如重新计费、取消、退款,您的支付网关会再次通过后台机制向您发送通知,以告知您新的事件。然后,您的应用程序将负责相应地更新用户状态。
这是一些比较通用的信息,尽管它大致上是大多数支付网关遵循的步骤。

谢谢,请查看我的更新问题,我需要在这里处理数据库模式。 - Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接