php - 从 paypal 中取消订阅会收到什么样的 ipn 响应?

标签 php paypal paypal-ipn paypal-subscriptions

我首先向客户收取即时付款费用,然后创建订阅资料。这是我收到的 ipn。

我猜这是为了即时支付:

[2016-10-31 16:26:11] local.INFO: IPN RESPONSE:Array
(
    [mc_gross] => 9.99
    [invoice] => 49
    [protection_eligibility] => Ineligible
    [item_number1] => 
    [payer_id] => FA5XLVU3CLN92
    [tax] => 0.00
    [payment_date] => 09:26:06 Oct 31, 2016 PDT
    [payment_status] => Completed
    [charset] => windows-1252
    [mc_shipping] => 0.00
    [mc_handling] => 0.00
    [first_name] => omer
    [mc_fee] => 0.59
    [notify_version] => 3.8
    [custom] => 
    [payer_status] => verified
    [business] => business@gmail.com
    [num_cart_items] => 1
    [mc_handling1] => 0.00
    [verify_sign] => A8SKEyFJtpw0I2pUVRQ9wRhpVLh9AnPjeq8ltcpWBhIHlTZuf.ak4aa-
    [payer_email] => customer@gmail.com
    [mc_shipping1] => 0.00
    [tax1] => 0.00
    [txn_id] => 3J610862594926351
    [payment_type] => instant
    [last_name] => farooq
    [item_name1] => Product 1
    [receiver_email] => business@gmail.com
    [payment_fee] => 0.59
    [quantity1] => 1
    [receiver_id] => RSDJM66ZP7LZ8
    [txn_type] => cart
    [mc_gross_1] => 9.99
    [mc_currency] => USD
    [residence_country] => US
    [test_ipn] => 1
    [transaction_subject] => 49
    [payment_gross] => 9.99
    [ipn_track_id] => af46df962d1bf
    [cmd] => _notify-validate
)

这一个应该用于订阅配置文件:

[2016-10-31 16:27:09] local.INFO: IPN RESPONSE:Array
(
    [payment_cycle] => every 12 Months
    [txn_type] => recurring_payment_profile_created
    [last_name] => farooq
    [next_payment_date] => 03:00:00 Oct 31, 2016 PDT
    [residence_country] => US
    [initial_payment_amount] => 0.00
    [currency_code] => USD
    [time_created] => 09:26:08 Oct 31, 2016 PDT
    [verify_sign] => AwD4sJJmdrzDKNGw7KMAMuZSx1AHAJkBGoIT8Zl86XtmqM9xpRo7woGm
    [period_type] =>  Regular
    [payer_status] => verified
    [test_ipn] => 1
    [tax] => 0.00
    [payer_email] => customer@gmail.com
    [first_name] => omer
    [receiver_email] => business@gmail.com
    [payer_id] => FA5XLVU3CLN92
    [product_type] => 1
    [shipping] => 0.00
    [amount_per_cycle] => 9.99
    [profile_status] => Active
    [charset] => windows-1252
    [notify_version] => 3.8
    [amount] => 9.99
    [outstanding_balance] => 0.00
    [recurring_payment_id] => I-R159BJH8WJHF
    [product_name] => 49
    [ipn_track_id] => 45f60995a00
    [cmd] => _notify-validate
)

现在我的问题是,如果有人用他的 paypal 帐户停用他的订阅怎么办?显然我认为我不会在下一个计费周期收到 ipn 响应。或者 paypal 是否会回复您说订阅已被停用?

我是否一直在寻找是否在某个账单日期收到了 ipn,如果我没有收到 ipn,我只是假设他们可能已经从 paypal 中停用了订阅。

这是最好的方法吗?如果可能,您能解释一下您是如何在系统上工作的吗?

最佳答案

实际上,几年前我就此写过一篇文章,解释了可以为订阅生成的所有不同类型的 IPN。我转贴了on my personal blog如果您想阅读完整的答案,但这是简短的答案:您将获得一个带有 txn_type=recurring_payment_profile_cancel 的 IPN。这应该在买家取消订阅后立即发生。

现在...如果买家在订阅期间取消,您将在结算周期结束时获得带有 txn_type=recurring_payment_expired 的第二个 IPN。例如,如果您的订阅每 12 个月计费一次,而买家在 6 个月后取消,您将在他们取消订阅时获得一个带有 txn_type=recurring_payment_profile_cancel 的 IPN,以及另一个 IPN txn_type=recurring_payment_expired 在 12 个月结束时(例如,当 PayPal 为接下来的 12 个月计费时)。这个想法是买家已经支付了 12 个月的费用,尽管他们仅在 6 个月后取消了付款。 recurring_payment_expired IPN 本质上是一个通知,告诉您“嘿,此人的订阅已到期 — 现在您应该停用您提供给他们的任何产品/服务”。

关于php - 从 paypal 中取消订阅会收到什么样的 ipn 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40372147/

相关文章:

php - 如何在一条语句中创建三个表的sql查询?

php - 使用 NodeJS 而不是 PHP 的缺点

php - Paypal 使用 PHP cURL 获取访问 token

paypal - Paypal 中的 IPN 与 PDT

php - 无法在 Codeigniter 中接收 PayPal IPN 响应

java - 如何将高级变量从托管的 BuyNow Button 传递到 Paypal PDT 和 IPN

php - mysql 日期格式与 php

php - MySQL 中数据库的最小值

paypal - 如何在 Shopify 中设置销售订阅产品的定期付款

php - Paypal /谷歌结账整合