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

时间:2015-07-14 00:31:48

标签: paypal paypal-ipn

我正在使用PayPal接受订阅付款以访问网站服务。

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

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

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

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

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

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

  2. 字段txn_type通过选择不同的代码向我显示:subscr_signup(当用户最初设置订阅时),subscr_payment(当付款看似成功时),subscr_cancel(这似乎是出现客户或供应商是否取消订阅)和subscr_eot(期限结束 - 在订阅取消后不久就会出现这种情况)。

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

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

1 个答案:

答案 0 :(得分:1)

我已经完成了这件事。很简单:

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

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