我有一个基于订阅的会员资格取消的PayPal定期付款,但是我遇到了以下问题:的剩余天
- 用户签约在2012年5月1日,每月支付不定。
- IPN发送到服务器,激活订阅
- 用户取消了5月3日2012年
- IPN发送到服务器,订阅被取消,取消的服务器成员。
但是,当用户在2012年5月1日订阅时,如果他要在一个月前取消,他还剩下一些日子。任何方式来解决这个问题? PayPal会针对此类问题发送任何IPN吗?
我想到的一个解决方案是每天晚上做一个cronjob来检查月份是否到了。
我有一个基于订阅的会员资格取消的PayPal定期付款,但是我遇到了以下问题:的剩余天
但是,当用户在2012年5月1日订阅时,如果他要在一个月前取消,他还剩下一些日子。任何方式来解决这个问题? PayPal会针对此类问题发送任何IPN吗?
我想到的一个解决方案是每天晚上做一个cronjob来检查月份是否到了。
当我们在我们自己的网站上实施的订阅服务,我们基本上处理的事件是这样的:
在用户登录后,我们检查订阅是否已过期(如果将其存储在数据库中,这很容易)。
基本上,订阅事件与付款事件是分开的。订阅可以取消,但这并不意味着退款将被退还;那将是一个单独的事件。顺便说一句,付款和订阅事件可以按不同的顺序(例如,付款可以先到达,然后是订阅通知);迎合这一点很重要。
当用户订阅时,paypal将创建一个定期付款资料,这意味着用户将不得不每月(每年,每天取决于资料)支付该笔款项,在他订购的那一天(例如,6月1日, ,7月1日)。 当用户取消时,他会取消付款资料,而不是付款本身。所以之后,贝宝将不会要求任何其他付款。如果您希望为用户提供日期,则必须存储有关订阅的信息。
你可以在他订阅的那天和他取消的那天存储一个数据库。从那里你可以知道用户还有多少天。 Paypal会在创建定期付款资料,付款本身以及取消时发送IPN消息。
您可以找到IPN消息在这里的信息: https://cms.paypal.com/cms_content/US/en_US/files/developer/IPNGuide.pdf
一个在IPN消息中的d/V对是next_payment_date随后呈现这样的日期:三点○○分00秒2013年7月6日PDT
我转换的日期YYYY- MM-DD并将其存储在数据库中,除了IPN消息中包含的profile_status值。当一个人订阅时,我在数据库中也有一个简单的TRUE/FALSE订户单元。
因此,如果用户取消,他们PROFILE_STATUS在数据库中“已取消”和用户细胞更新为FALSE被更新。
当用户访问优质内容时,将检查数据库中的单元格是否为TRUE。如果是这样,他们得到的内容。如果FALSE,那么将检查profile_status单元格,并且如果该单元格为“Expired”或NULL,则它们不会获得内容。如果单元格的内容为“已取消”,则数据会被拉出,增加一天(用于处理时区问题),如果大于当前时间,则会加载高级内容。如果它小于当前日期,那么它们的profile_status单元格将更新为“过期”,并且它们不会获得内容。
至少我可以有一个理由为什么倒投了? (只是为了从我的错误中吸取教训) – zolipapa