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_typesubscription_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 IPN 未发送定期付款信息

在 PayPal 订单和 PayPal 订阅之间切换

如何在没有 PayPal 帐户的情况下取消 PayPal 订阅?

Paypal (+ Paypal IPN) - 如何更改用户的订阅?

Paypal 沙盒订阅按钮 - 测试没有 Paypal 帐户的买家?