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

Using PayPal subscription IPN fields to manage user accounts

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

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

我正在向 PayPal 发送自定义随机密钥,每个用户都是唯一的,当订阅首次实例化时,每个 IPN 都会发回相同的密钥。这意味着我可以非常积极地将我的用户 table 与我的 PayPal 通知绑定在一起。

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

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

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

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

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

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

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

我已经做到了。很简单:

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

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