检测 Paypal 订阅取消

Posted

技术标签:

【中文标题】检测 Paypal 订阅取消【英文标题】:Detecting Paypal Subscription Cancellation 【发布时间】:2011-01-06 17:37:14 【问题描述】:

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

谢谢!

【问题讨论】:

我将不胜感激不需要 IPN 的答案。即使我使用 IPN,我也想在订阅期结束时通过使用订阅 ID 调用 paypal API 端点来仔细检查用户的订阅状态并查看状态。这可能吗? 【参考方案1】:

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

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;
 

【讨论】:

今晚正是我所需要的!不知道为什么他们没有在文档中说得足够清楚。 谢谢!真的很简单。 刚刚遇到这个。这非常有用(我已经为此苦苦挣扎了一段时间)。谢谢! I think paypal was Loud & Clear【参考方案2】:

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

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

【讨论】:

以上是关于检测 Paypal 订阅取消的主要内容,如果未能解决你的问题,请参考以下文章

从商家网站取消 PayPal 订阅

如何在没有 PayPal 帐户的情况下取消 PayPal 订阅?

特定订阅标识符的 PayPal 取消订阅按钮

如何检查 PayPal 订阅没有被取消?

当 PayPal 订阅被取消或失败时会发生啥?

Paypal 取消订阅问题