Django Paypal 订阅
Posted
技术标签:
【中文标题】Django Paypal 订阅【英文标题】:Django Paypal subscriptions 【发布时间】: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 每小时/每小时/每天运行一个后台任务,并将用户状态更改为未订阅。如果它过期并且他们尝试登录,则将它们重定向到重新子页面;)
【参考方案1】:
没有经过测试,但据我所知,它可能有效。
Paypal 可以为您处理订阅: https://github.com/johnboxall/django-paypal/blob/master/README.md#using-paypal-payments-standard-with-subscriptions
"p3": 90, # duration of each unit (depends on unit)
"t3": "D", # duration unit ("D for Day")
您的信号可能不是 payment_was_successful,而是以下之一:
subscription_cancel - Sent when a subscription is cancelled.
subscription_eot - Sent when a subscription expires.
subscription_modify - Sent when a subscription is modified.
subscription_signup - Sent when a subscription is created.
祝你好运,我发现 django-paypal 很混乱!
【讨论】:
以上是关于Django Paypal 订阅的主要内容,如果未能解决你的问题,请参考以下文章
每月第一天的贝宝每月订阅计划设置并每月定期付款 - django python
如何在没有 PayPal 帐户的情况下取消 PayPal 订阅?