[英]Paypal subscriptions IPN - problem with users subscribing multiple times
我正在使用Paypal订阅和即时付款通知(IPN)处理我网站上的订阅者。
在大多数情况下,它运行良好,但偶尔会遇到一个问题。
通常,如果用户取消其订阅,则在禁用对我的网站的访问之前,我会等待“期限终止”(subscr_eot)通知。
因此,如果他们预付了整个月的费用,然后立即取消,则该月剩下的时间仍然可以访问(应该如此)。
但是某些用户在以下位置遇到此问题:
所以我还没有找到解决这个问题的好方法。 我想最好的解决方案是在收到“期末”通知时,再进行一次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在此方面有些弱。 递归是我研究过并计划实施的一个,还有其他一些。
如果您在2009年11月之后开始接受订阅,则订阅者ID将以“ I-
”开头-并且在其时间结束时不会返回“ subscr_eot”。 贝宝(Paypal)希望您能记住他们的订购时间,并在该期限到期时将帐户更新为降级(或其他任何方式),除非客户在此期间再次付款。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.