繁体   English   中英

贝宝(Paypal)订阅IPN-用户多次订阅的问题

[英]Paypal subscriptions IPN - problem with users subscribing multiple times

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

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

通常,如果用户取消其订阅,则在禁用对我的网站的访问之前,我会等待“期限终止”(subscr_eot)通知。

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

但是某些用户在以下位置遇到此问题:

  1. 取消订阅
  2. 在达到“学期结束”之前,他们决定重新订阅
  3. 当他们的第一个订阅达到“期限”时,我的应用会收到通知,并向用户发送一封电子邮件,提示您“您的帐户已被禁用,如果您想再次注册,则可以点击此处进行订阅”。
  4. 这让他们感到困惑,因为他们在想...这很奇怪,我以为我像一个星期前一样订阅了(他们也这样做了)。 因此,他们再次订阅。 现在他们有两个同时运行的对我网站的订阅,一两个月后我会收到支持电子邮件(“ wtf,您本月两次向我收取了帐单!”)

所以我还没有找到解决这个问题的好方法。 我想最好的解决方案是在收到“期末”通知时,再进行一次API调用,询问Paypal“嘿,这个人已经重新订阅了吗?”。 如果是这样,则无需启动该电子邮件。 但是我还没有任何方法可以进行此API调用。

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

还有其他人解决吗?

我知道这是一个老话题,但是我还没有看到这个问题的实际答案,因此,如果有人像我一样想知道这个问题,那么可以找到一个解决方案。

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

然后,在您的邮件脚本内部,当它在学期末运行时,请检查该用户的“学期”字段。 如果将其设置为“ 0”,则不要发送电子邮件。 如果将其设置为“ 1”,则发送电子邮件,说“ Adios!”。

如何防止重复的贝宝付款?

您可能想在“发票”参数中添加唯一标识符; 并在www.paypal.com上帐户的“配置文件”>“我的销售工具”部分中启用“阻止重复付款”

据我所知,如果您使用的是网站付款标准/专业按钮,则没有Paypal api可以检查订阅。

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

还有很多第三方可以帮助您管理此过程,因为Paypal的api在此方面有些弱。 递归是我研究过并计划实施的一个,还有其他一些。

引用: 回复:subscr_eot何时发布?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM