我正在使用paypal订阅和即时付款通知(IPN)来处理我网站上的订阅者。
在大多数情况下,它运作良好,但偶尔会遇到一个问题。
通常,如果用户取消订阅,我会在禁用访问我的网站之前等待“期末结束”(subscr_eot)通知。
因此,如果他们预付整个月,然后立即取消,他们仍然可以访问本月余下时间(应该是)。
但是有些用户遇到了这个问题:
所以我找不到解决这个问题的好方法。我想最好的解决方案是在收到“期末”通知时再做一次API调用,这会通知paypal“嘿,这个人已经重新订阅了吗?”。如果是这样,则无需启动该电子邮件。但是我还没有看到任何方法来进行这个API调用。
另一个解决方案是在他们取消时立即禁用他们的帐户(“subscr_cancel”通知),但后来我得到了不同的愤怒支持电子邮件“嘿我整个月预付费用为什么我的帐户已经被禁用!!”。
其他人解决了这个问题吗?
答案 0 :(得分:1)
我知道这是一个老线程,但我还没有看到这个问题的实际答案,所以如果有人碰巧像我一样对此感到疑惑,那么这是一个解决方案。
如果有人在他们的学期结束(subscr_eot)之前取消他们的帐户(subscr_cancel),我会在我的数据库中设置它来处理它。例如,如果数据库中有“用户”表,只需添加一个新的“int”字段并将其命名为“Term”。默认情况下,此字段应设置为“0”。然后,在IPN内部进行设置,以便如果用户在术语结束前取消订阅,则会将该用户的“Term”字段设置为“1”。如果该用户返回并重新订阅您的服务,请让IPN将该用户的“Term”字段更新回“0”。
然后,在您的邮件脚本内部,只需检查该用户在期末运行时的“Term”字段。如果设置为“0”,则不发送电子邮件。如果设置为“1”,则发送电子邮件,说“Adios!”
答案 1 :(得分:0)
据我所知,如果你使用的是网站支付标准/专业按钮,那么就没有Paypal api来检查订阅,我认为你是这样。
我通过在我的数据库中保持active / cancel / resubscribe状态来处理这个问题,并根据我从paypal获得的IPN消息更新状态。我使用按钮中的custom
字段将IPN消息映射到我的用途,该字段在每个IPN消息上发回。
还有很多第三方可以帮助您管理这个过程,因为paypal的api在这方面有点弱。反复出现的是我已经看过并计划实施的内容,并且还有其他内容。
答案 2 :(得分:0)
引用:Re: When is subscr_eot issued?
如果您在2009年11月之后开始接受订阅,则订阅者ID将以“I-
”开头 - 并且在他们的时间结束时不会返回“subscr_eot”。 Paypal希望您记下他们订阅的时间,并在该期限到期时更新帐户以降级(或其他),除非客户在此期间再次付款。
答案 3 :(得分:0)
How to prevent duplicate PayPal payments?
您可能希望在“invoice”参数中添加唯一标识符;并在“个人资料”>中启用“阻止重复付款”您的帐户中的“我的销售工具”部分位于www.paypal.com