Paypal 订阅 IPN - 用户多次订阅的问题

Posted

技术标签:

【中文标题】Paypal 订阅 IPN - 用户多次订阅的问题【英文标题】:Paypal subscriptions IPN - problem with users subscribing multiple times 【发布时间】:2011-02-01 10:22:09 【问题描述】:

我正在使用贝宝订阅和即时支付通知 (IPN) 来处理我网站上的订阅者。

在大多数情况下,它运行良好,但我偶尔会遇到一个问题。

通常,如果用户取消订阅,我会等待“期限结束”(subscr_eot) 通知,然后再禁止访问我的网站。

因此,如果他们预付了整个月的费用,然后立即取消,他们仍然可以在本月的剩余时间内访问(应该如此)。

但有些用户遇到了这个问题,他们:

    取消订阅 在“期限结束”之前,他们决定重新订阅 当他们的第一次订阅达到“期限结束”时,我的应用程序会收到通知并向用户发送一封电子邮件,其中包含“您的帐户已被禁用,如果您想再次注册,您可以点击这里重新订阅”。 这让他们感到困惑,因为他们在想……这很奇怪,我以为我像一周前一样订阅了(他们确实做到了)。所以他们再次订阅。现在他们有两个同时运行的订阅我的网站,我会在一两个月内收到一封支持电子邮件(“wtf 你这个月向我收费了两次混蛋!!”)

所以我还没有找到解决这个问题的好方法。我想最好的解决方案是在收到“期限结束”通知时进行额外的 API 调用,该通知询问贝宝“嘿,这个人已经重新订阅了吗?”。如果是这样,则无需关闭该电子邮件。但我还没有看到任何方法来执行这个 API 调用。

另一种解决方案是在他们取消帐户时立即禁用他们的帐户(“subscr_cancel”通知),但随后我收到不同的愤怒支持电子邮件“嘿,我预付了整个月的费用,为什么我的帐户已经被禁用了!!”。

其他人解决了这个问题?

【问题讨论】:

【参考方案1】:

How to prevent duplicate PayPal payments?

您可能希望为“发票”参数添加一个唯一标识符;并在您的帐户 www.paypal.com 的“个人资料”>“我的销售工具”部分中启用“阻止重复付款”

【讨论】:

【参考方案2】:

我知道这是一个旧线程,但我还没有看到这个问题的实际答案,所以如果有人碰巧像我一样想知道这个问题,这里有一个解决方案。

如果有人在他们的任期结束 (subscr_eot) 之前取消他们的帐户 (subscr_cancel),我会在我的数据库中设置它来处理它。例如,如果您的数据库中有一个“Users”表,只需添加一个新的“int”字段并将其命名为“Term”。默认情况下,该字段应设置为“0”。然后,在您的 IPN 中进行设置,以便如果用户在期限结束前取消订阅,它将将该用户的“期限”字段设置为“1”。如果该用户返回并重新订阅您的服务,请让 IPN 将该用户的“期限”字段更新回“0”。

然后,在您的邮件脚本中,让它在任期结束时检查该用户的“任期”字段。如果它设置为“0”,则不要发送电子邮件。如果它设置为“1”,则发送电子邮件说“再见!”

【讨论】:

【参考方案3】:

引用:Re: When is subscr_eot issued?

如果您在 2009 年 11 月之后开始接受订阅,订阅者 ID 将以“I-”开头 - 并且不会在其时间结束时返回“subscr_eot”。 Paypal 希望您记下他们订阅了多长时间,并在该期限到期时更新帐户以降级(或其他),除非客户在此期间再次付款。

【讨论】:

有趣的是,我不确定他所说的“个人资料 ID”是什么意思。我没有从 Paypal 获得任何个人资料 ID。有一个事务 ID,但它不以 I- 或 S- 开头。【参考方案4】:

据我所知,如果您使用的是网站支付标准/专业版按钮,则没有 paypal api 来检查订阅,我假设您是。

我通过在我的数据库中保持活动/取消/重新订阅状态并根据我从贝宝获得的 IPN 消息更新状态来处理这个问题。我使用按钮中的 custom 字段将 IPN 消息映射到我的用途,该字段会在每条 IPN 消息中发送回来。

还有很多第三方可以帮助您管理这个过程,因为 paypal 的 api 在这方面有点薄弱。 Recurly 是我研究过并计划实施的一个,还有其他的。

【讨论】:

以上是关于Paypal 订阅 IPN - 用户多次订阅的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 PayPal 订阅 IPN 字段管理用户帐户

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

Paypal 订阅 IPN 自定义变量

使用 Paypal IPN 订阅

PayPal订阅IPN下次结算日期

检测 Paypal 订阅取消