Php OpenCart订阅模式(x个月)

Php OpenCart订阅模式(x个月),php,opencart,subscription,Php,Opencart,Subscription,我正在使用OpenCart建立一个电子商务网站,我想提供订阅服务。特别是3/6/12个月的订阅。我对重复计费不感兴趣(我知道有贝宝和授权.net模块)。我希望用户提前支付一次。从配置的角度看,这是否转化为3个伪产品?我想这是可行的,到目前为止,只是产品配置。3种产品,每个都有一个价格 棘手的部分来了。用户每月支付一次费用,在他们的“计费周期”内,他们每月只能订购一次产品。因此,如果用户在5月23日支付3个月的订阅费: 他可以在23/5-22/6期间获得一种产品 23/6-22/7中有一个,以及

我正在使用OpenCart建立一个电子商务网站,我想提供订阅服务。特别是3/6/12个月的订阅。我对重复计费不感兴趣(我知道有贝宝和授权.net模块)。我希望用户提前支付一次。从配置的角度看,这是否转化为3个伪产品?我想这是可行的,到目前为止,只是产品配置。3种产品,每个都有一个价格

棘手的部分来了。用户每月支付一次费用,在他们的“计费周期”内,他们每月只能订购一次产品。因此,如果用户在5月23日支付3个月的订阅费:

  • 他可以在23/5-22/6期间获得一种产品
  • 23/6-22/7中有一个,以及
  • 每23/7-22/8就有一个
用户每月不能订购一个以上的产品,并且在22/8之后也不能获得任何产品,除非他续订。此外,如果我能有一个cron任务,检查用户当月是否使用了他的订阅,并发送一封“嘿,获取本月的产品”之类的提醒电子邮件,那就太棒了

这是我的第一个OpenCart项目,我已经浏览了很多文档并在Google上搜索了很多,我使用了一个本地安装,我试图弄清楚我所要求的在不修改核心代码的情况下是否可行,我希望避免这种情况。然而,如果没有其他方法,我知道OpenCart是一个MVC(+L(语言))框架,但我还没有找到任何关于如何定制其功能的可靠文档,只有一些特定需求的部分

如果可以的话,我想写下我的想法,请告诉我这听起来是否合适:

  • 我想再添加一个实体(对象/模型)来存储 订阅、它所属的用户、开始和结束日期以及 是否已被利用。基本上,订阅是正常的 订单,我希望它像一个一样存储,我只需要 再坚持几个领域。正如我所说,我需要进行两项检查:
  • 用户是否使用了当月的订阅?对于 这是我在考虑有一个标志“isUsed”字段,它可以 使用cron作业重置,每次用户达到其计费日期时。(在 我们的示例23/6、23/7)。或者,我可以添加3个条目,一个用于 每个计费周期,并相应地更新它们
  • 订阅过期了吗?我可以核对一下有效期 订阅的一部分
我不知道如何在签出期间插入此功能,也不知道如何开始实现此功能

我已经浏览了论坛,在谷歌上搜索了很多,但是我还没有找到答案。我是一名经验丰富的Grails/JavaEE开发人员,所以我很有技术性,以防这篇文章太过技术化:-)

以上听起来可行吗?我的思路正确吗

干杯,

Iraklis

这个功能远远超出了Opencart的功能范围,但是如果您对PHP/CodeIgniter有一定的了解,那么您应该能够完成大部分/所有的MOD。了解SQL也很好,但如果您还不了解,那么学习SQL也很快

我想说你的MOD有两个部分,每个部分都有自己的难度

我正在使用OpenCart建立一个电子商务网站,我想提供 订阅。特别是3/6/12个月的订阅。我不是 对重复计费感兴趣(我知道有一些模块 PayPal和Authorize.net)。我希望用户提前支付一次。做 这将从配置点转换为3个伪产品 看法我想这是可行的,到目前为止,只是产品 配置3种产品,每个都有一个价格

棘手的部分来了。每个月用户都会支付他们的费用 有权在其权限内每月仅订购一次产品 “计费周期”。因此,如果用户在 23/5:

我想我应该做的是为每个订阅长度添加一个产品,每个产品向他们发放适当的帐户信用,并使该信用达到每月购买一个订阅长度产品的完美金额

为此,我建议添加一个函数,将资金添加到文件catalog>model>checkout>order.php(或您选择的任何模型)中数据库的customer\u交易字段中,然后调用该函数并在catalog>controller>checkout>success.php中添加数据

我认为,核实客户是否购买了适当的订阅产品,并核实该购买是否已经有信用额度是明智的

为了确保他们每月只获得1个产品,您需要在catalog>controller>checkout>checkout.php的开头编写一个脚本,以便在他们尝试获取产品太频繁时将其重定向到错误消息

用户每月不得订购超过一种产品, 他也不应该在22/8之后得到任何产品,除非 他续约。而且,如果我可以的话,那就太棒了 拥有cron作业,检查用户是否已将其订阅用于 当前月份,并发送“嘿,获取本月的产品” 一种提醒邮件

我甚至不知道从哪里开始,但如果你愿意付费,你可以发布帮助,并可能以很好的价格添加此功能

这是我的第一个OpenCart项目,我已经完成了 文档和谷歌搜索了很多,我和一个本地人玩过 安装,我想知道我问的是 在不修改核心代码的情况下是可行的,我希望避免这种情况。 然而,如果没有其他方法,我知道OpenCart是一个 MVC(+L(语言))框架,但我还没有找到任何实体 有关如何自定义其功能的文档,仅限bit ans 具体要求的零件

A
he can get one product in the period 23/5-22/6,
one in 23/6-22/7, and
one in 23/7-22/8
I would like to add one more entity (object/model) for storing the subscription, the user to which it belongs, start and end date and
public function addTransaction($customer_id, $description = '', $amount = '', $order_id = 0) {
    $customer_info = $this->getCustomer($customer_id);

    if ($customer_info) { 
      $this->db->query("INSERT INTO " . DB_PREFIX . "customer_transaction
              SET customer_id = '" . (int)$customer_id . "',
              order_id = '" . (int)$order_id . "',
              description = '" . $this->db->escape($description) . "',
              amount = '" . (float)$amount . "',
              date_added = NOW()");
}
$this->load->model('sale/customer');

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->user->hasPermission('modify', 'sale/customer')) { 

  $this->model_sale_customer->addTransaction($this->request->get['customer_id'], 
  $this->request->post['description'], $this->request->post['amount']);

  $this->data['success'] = $this->language->get('text_success');
} else {
  $this->data['success'] = '';
}