使用PayPal IPN时的客户信息



在购买服务订阅时,建议使用什么工作流来存储我的客户ID?

以下是我的想法:

  1. 用户决定购买
  2. 用户创建帐户或登录(如果尚未登录)
  3. 会话变量已建立
  4. 进行Paypal交易
  5. 获取IPN信息并将适当的会话变量添加到DB

我以前从未处理过付款问题,只是想确保我以正确的方式做事。我能找到的几个教程并没有专门解决这个问题。我将根据付款信息验证我的用户是否有权使用该工具。我正在使用PHP,贝宝交易已经开始工作了。

payer_id似乎并不是一个真正可靠的方法,因为它可能会改变。因此,我真的在寻找一种方法,将该交易的结果与我的数据库中的现有客户联系起来,该客户的会话在购买时是活跃的。其中一个问题是,我必须在IPN响应而不是SUCCESS响应中处理它,因为用户可能会在付款时关闭浏览器。想法?

我找到了一个可以接受的解决方案(实际上很简单),我把它发布在这里,因为我在任何地方都找不到。这样做的方法是在表单中添加一个隐藏字段,该字段接受登录用户的用户id。

<input type="hidden" name="custom" value="<?php echo $your_userid; ?>"> //set somewhere else in the code

然后,在您的IPN url上,该表单字段值将通过POST返回给您:

$userid_to_log = $_POST['custom']; 

在付款表中添加一个名为userid的新列(例如)最后,在插入语句中包含该字段:

$db->query("INSERT INTO payments(item_number,txn_id,payment_gross,currency_code,payment_status, userid) VALUES('".$item_number."','".$txn_id."','".$payment_gross."','".$currency_code."','".$payment_status."','".$userid_to_log."')");

有了这个解决方案,你必须打开IPN,但在我看来,它比依赖SUCCESS选项更安全,SUCCESS基本上是通过GET获取所有变量。

相关内容

  • 没有找到相关文章

最新更新