paypal - 使用 PayPal 订阅 IPN 字段来管理用户帐户

标签 paypal paypal-ipn

我正在使用 PayPal 收取订阅费用以访问网站服务。

我正在使用 PayPal 的 IPN 来管理付款和用户帐户。

当第一次实例化订阅时,我向 PayPal 发送一个自定义随 secret 钥,每个用户都是唯一的,因此每个 IPN 都会发回相同的 key 。这意味着我可以非常积极地将我的用户表与我的 PayPal 通知绑定(bind)在一起。

因此,我现在可以从我的数据库中生成 user_id 和通知详细信息的列表。

所以现在我需要弄清楚用于计算每个用户当前付款状态的最佳逻辑,并因此计算如何处理他们的帐户 - 是继续允许访问、暂停甚至删除他们的用户帐户。这个决定将取决于他们的付款是否仍在进行中。

PayPal 的 IPN 上有大量有趣的数据 - 大多数看起来与用户帐户管理无关,但有几列看起来非常有用。具体...

  1. outstanding_balance 字段似乎恰好包含 - 仍欠 2dp 的金额。到目前为止,在我的测试过程中,这个数字一直只有 0.00

  2. 字段 txn_type 向我展示了来自不同代码的选择:subscr_signup(当用户最初设置订阅时)、subscr_payment(当付款似乎成功时)、subscr_cancel(无论客户还是供应商是否取消订阅,这似乎都会出现)和 subscr_eot(期末 - 订阅取消后不久就会出现)。

我的冲动是在表中搜索每个用户帐户的最新 txn_type="subscr_payment" 条目,并检查最后一条通知到达的日期。如果日期戳超过了,比如 28 天前,则可以暂停该帐户...如果超过 56 天,则可以删除该帐户。

这是个好主意吗?或者我可以采用更好的逻辑吗?

最佳答案

我已经做到了。很简单:

  1. 在收到第一笔付款之前不要授予访问权限。您可以按任一顺序获得初始注册和付款。
  2. 如果他们取消订阅或订阅到期,PayPal 会通知您。当您获得其中任何一项时,从生效之日起拒绝访问。
  3. 如果帐户的最新付款状态为“反向”,请暂停访问,直到您收到“取消反向”或以其他方式解决问题。
  4. 不要数日子。 Paypal 计算天数。重复自己的观点只会让你产生分歧,猜猜谁是对的? Paypal 。猜猜谁没有错?客户。您不想因为 PayPal 落后或对 28 天的想法与您的不同而惩罚客户。您已将收款和续订的责任交给 PayPal:让他们去做。
  5. 谨防将政策纳入其中。它应该只是一种机制,并且应该可以手动覆盖。例如,这个用户现在是否可以访问这个产品的实际评估不能是对他们的支付历史的计算。只是简单地查找另一个表,您的 IPN 代码可以修改它,但人类也可以。例如:发生争执。你输了。无论如何,出于业务考虑,您可能希望让客户在宽限期内保持活力。或者,您可能在极端情况下想立即解雇客户,例如违规使用。

  6. 您可以忽略余额字段。唯一重要的是 txn_type

关于paypal - 使用 PayPal 订阅 IPN 字段来管理用户帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31395721/

相关文章:

Paypal 自适应 API

php - PHP中的PayPal IPN无法向IPNPB发送请求

paypal - 试贷场景中的前置API场景

paypal - 定期付款和 IPN 通知

javascript - Braintree Paypal 可在沙箱中运行,但不能在生产环境中运行

jquery - 在 ColdFusion 中显示和/或使用无效的表单字段,如果您只是尝试用井号包裹它们

paypal - REST API 与经典 API

php - 用于订阅的 PayPal IPN - 部分工作

php - Paypal IPN 数据

paypal - 简单的支付流程 Paypal