关于 php:检测 Paypal 订阅取消

Detecting Paypal Subscription Cancellation

我编写了一个简单的贝宝订阅系统,用户可以在其中输入他们的信息,单击按钮,然后开始订阅。我想知道如何才能知道用户何时取消订阅?我见过 $txn_type subscr_cancel 但我不知道如何使用它,因为 paypal 不会再次调用我的处理程序。

谢谢!


如果是,您是否使用 IPN,那么当取消订阅时,paypal 返回 $_POST['txn_type'] = subscr_cancel 以及 subscr_date = 订阅日期、subscr_id = 订阅 ID 等,现在您可以处理返回的订阅 ID 的取消请求。
同样,订阅结束时您会得到 $_POST['txn_type'] = subscr_eot
一旦您在贝宝设置中设置了 IPN url,它将始终调用您的 ipn 处理程序。
使用 switch case 来处理不同的请求,像这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
 }


当用户实际取消订阅时,会发送类型为"subscr_cancel"的 IPN。这不应用于取消订阅,因为这可能在订阅期间的任何时间发生。

应使用"subscr_eot"类型的 IPN 取消订阅。这是在用户的订阅期到期时发送的。