zend-framework - 网站上的付费成员(member)资格的计划工作流程是什么?

标签 zend-framework e-commerce membership paypal-subscriptions

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

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

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

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

重型计划,可创建50个工作区和30个用户,每月费用为65美元

我现在很可能目前正与AlertPay之类的第三方网关集成-但是,该软件包是按月收费的:(遗憾的是,到目前为止,我实际上尚未在任何按月收费的 member 服务网站上进行注册,并且想知道如何对一个用户每月。

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

还是用户要提前支付他们希望使用多少个月的时间-它通常是如何完成的。

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

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

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

但是,在开发级别上,非常全面的答案-我应该在数据库中存储什么以及如何设计所需的表。我不了解每个月的每月订阅都会回寄给我提供网关的网址。就像这里对数据库的基本要求是什么。

最佳答案

好吧,你在问两个问题。

您如何逐步向用户收费
每一个月?

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

某些网站会向您收取n个月一次的费用,但从用户角度来看,它可能会让您感到恐惧。

我将如何在代码中实现呢?

Zend Framework附带了一个组件( Zend_Acl ),它将帮助您构建Access Control List

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

如果您知道MoSCOW method,则某种程度上相似:

  • (角色)免费计划可以(特权)注册(资源)网站。
  • (角色)基本计划可以(特权)创建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());
    

    它给你的想法。

    请注意,我从未使用过用户, Controller 等术语,实际上您需要从角色,资源,特权方面进行思考。

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

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

    您可能要存储每个月度订阅,或更新链接的帐户/订阅行。

    关于zend-framework - 网站上的付费成员(member)资格的计划工作流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5527967/

    相关文章:

    mysql - 电子商务数据库中产品组的制作方法

    mysql - 列表类别和子类别的 SQL 查询

    identity - 在MVC 5中更改用户名

    php - Netbeans:如何配置远程服务器的 PHPUnit 路径?

    e-commerce - 订单,客户和产品之间的关系?

    php - Zend_Mail and =0D=0A=3D=3D=3D=3D=3D

    asp.net - Membership Generate Password 字母数字密码?

    asp.net-mvc-4 - 我究竟如何在 Asp.NET MVC 4 中使用角色?

    json - 获取 json_encode() : type is unsupported, 编码为 null

    zend-framework - 在 zend 框架项目中找不到模型类(快速入门)