3

在 PayPal 订阅中,似乎我需要做的就是将其视为常规 IPN,除了查看该txn_type字段。当我看到以下状态代码之一时,我会向管理员发送一封电子邮件,以考虑在我正在使用 PHP 构建的软件的管理面板中手动使该成员过期。

状态似乎是以下状态之一,表明客户已取消、期满或不再付款。谁能确认这些是要检查的正确状态,还是我包括了一些不正确的状态?

  • 订阅取消
  • subscr_eot
  • 订阅失败
  • recurring_payment_failed
  • recurring_payment_suspended_due_to_max_failed_pa​​yment
  • recurring_payment_outstanding_payment_failed
  • recurring_payment_profile_cancel
  • recurring_payment_expired
4

3 回答 3

2

我发现这些是我的代码中关于“会员资格结束”类型反应的注意事项:

  • 订阅取消
  • subscr_eot
  • recurring_payment_profile_canceled
  • recurring_payment_expired

所有其他人都只是关于“会员资格结束”状态的“噪音”。例如,对任何支付“失败”类型的 IPN 做出反应是错误的,因为最终 PayPal 可能会在重新尝试后与客户纠正该问题,因此取消和到期事件确实是您应该寻找的。

于 2012-12-23T20:57:55.650 回答
2

如果您已经通过订阅按钮机制,并且它不是预先批准的定期付款之一,那么我认为您只会看到以“subscr”为前缀的那些。

我个人不会在我的应用程序中回复“subscr_cancel”。用户取消的那一刻发送的 IPN。我不想在那个时候禁用他们的访问,所以我等待“subscr_eot”然后再做。

因此,如果他们注册了一年,并在第二天取消,他们仍然可以访问年底,也就是 PayPal 将发送“subscr_eot”的时间。他们总是会同时发送。

于 2013-01-15T17:10:20.070 回答
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;
 }
于 2015-01-29T01:04:58.023 回答