【发布时间】:2012-08-03 00:25:38
【问题描述】:
感谢任何可以帮助我回答这个问题的人。我正在运行一项 Django 电子学习服务,该服务需要持续 90 天的一次性付款订阅。我使用django-paypal 来整合我的付款。我在网站支付标准中使用 IPN(即时支付通知)作为我的主要支付方式。
问题——在收到IPN信号payment_was_successful时,我发出以下许可:
def purchase_success(sender, **kwargs):
ipn_obj = sender
student = User.objects.get(username=str(ipn_obj.custom))
permission = Permission.objects.get(name="Subscribed")
student.user_permissions.add(permission)
payment_was_successful.connect(purchase_success)
我想弄清楚如何在 90 天内自动“过期”订阅。即:
permission - Permission.objects.get(name="Subscribed")
student.user_permissions.remove(permission)
【问题讨论】:
-
将
subscription_date添加到相关模型,然后检查?这也使您能够 a) 监控订阅率和模式,以及; b) 如果您想稍后提供不同的长度,请稍后添加另一列以跟踪subscription_type或subscription_duration。 -
是的,谢谢。我正在考虑这样做。但是我必须调用为我检查日期的函数,对吗?有没有办法自动完成?
-
你不会在 django 项目中运行。此任务应每天在您的所有用户上运行,以确定订阅是否结束。
-
谢谢,我想我可以试试。如何让它每天自动运行?假设用户没有登录或使用系统。
-
Celery 就是为此构建的:celery.github.com/celery/getting-started/introduction.html 每小时/每小时/每天运行一个后台任务,并将用户状态更改为未订阅。如果它过期并且他们尝试登录,则将它们重定向到重新子页面;)
标签: django paypal django-paypal