![](/img/trans.png)
[英]How to implement recurring billing in PHP application using Braintree payment gateway?
[英]How to program a recurring billing/invoice system using PHP and MySQL
我已经使用PHP / MySQL编写了一个基本的发票系统,该系统的表结构如下:
发票表; invoice_id,invoice_date,customer_id等发票行表; invoice_line_id,invoice_id,数量,价格,说明等
我需要系统按设定的时间间隔(例如每1周或每2个月等)自动生成以后的发票。 我当时想创建一个新表,如下所示;
发票时间表表; invoice_schedule_id,invoice_id,间隔(例如1),interval_unit(月),开始日期,next_processing_date
我的想法是设置一个cron作业,该作业每天执行一次PHP文件。 然后,当next_processing_date与今天的日期匹配时,PHP文件将生成发票,并更新数据库中的next_processing_date。 我对如何实现此目标很满意,但我坚持的是如何将新发票实际插入表/数据库中。 MySQL是否具有任何类型的“复制行”功能,因为除了需要更新invoice_date之外,新发票与原始发票相同。
Cron听起来不错。 (也值得一提的是MySQL Event Scheduler,但我还是会去参加Cronjob)
复制将类似于以下SQLFIDDLE :
create table t ( id int, d date );
insert into t values( 0, CURDATE() );
insert into t values( 2, CURDATE() );
insert into t values( 1, CURDATE() );
insert into t ( select id+1,curdate() from t order by id desc limit 1 );
上面的示例是复制最新的订单作为副本,当然您可以在where = 1或您的参考订单的id处放置where子句。
BigScar的参考资料:“如何在MySQL中使用自动增量字段复制一行并插入同一表中?” 似乎可以解决您的复制插入问题。
但是,由于您主要是在执行一组特定的数据库查询,而不是cronjobs,因此可以使用MySQL events 。 如果您的MySQL版本支持它们(请检查phpmyadmin:选择一个数据库并查看顶部菜单栏,您甚至可以在不知道语法的情况下在此处创建它们),这是一个很好的实用选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.