【问题标题】:Parsing PayPal Subscription Ran Out解析 PayPal 订阅用完了
【发布时间】:2012-12-01 01:46:12
【问题描述】:
在 PayPal 订阅中,我似乎只需将其视为常规 IPN,除了查看 txn_type 字段。当我看到以下状态代码之一时,我会向管理员发送一封电子邮件,以考虑在我正在使用 PHP 构建的软件的管理面板中手动使该成员过期。
状态似乎是以下状态之一,表明客户已取消、已到期或根本不再付款。谁能确认这些是要检查的正确状态,还是我包括了一些不正确的状态?
- 订阅取消
- subscr_eot
- 订阅失败
- recurring_payment_failed
- recurring_payment_suspended_due_to_max_failed_payment
- recurring_payment_outstanding_payment_failed
- recurring_payment_profile_cancel
- recurring_payment_expired
【问题讨论】:
标签:
paypal-ipn
paypal-subscriptions
【解决方案1】:
我知道我在这篇文章中有点晚了,但这里有一个快速解决方案 (php) 来解决你的问题:
switch ($_POST['txn_type']) {
case 'cart':
//for products without subscription
break;
case 'subscr_payment':
//subscription payment recieved
break;
case 'subscr_signup':
//subscription bought payment pending
break;
case 'subscr_eot':
//subscription end of term
break;
case 'subscr_cancel':
//subscription canceled
break;
}
【解决方案2】:
我发现这些是关于我的代码中“会员资格结束”类型反应的注意事项:
- 订阅取消
- subscr_eot
- recurring_payment_profile_canceled
- recurring_payment_expired
所有其他人都只是关于“会员资格结束”状态的“噪音”。例如,对任何付款“失败”类型的 IPN 做出反应是错误的,因为最终 PayPal 可能会在重新尝试后与客户纠正该问题,因此您确实应该寻找取消和到期事件。
【解决方案3】:
如果您已经通过订阅按钮机制,并且它不是预先批准的定期付款之一,那么我认为您只会看到带有“subscr”前缀的那些。
我个人不会在我的应用程序中回复“subscr_cancel”。用户取消的那一刻发送的 IPN。我不想在那个时候禁用他们的访问,所以我等待“subscr_eot”然后再做。
因此,如果他们注册了一年,并在第二天取消,他们仍然可以访问年底,也就是 PayPal 将发送“subscr_eot”的时间。他们总是会同时发送。