php - 使用 PayPal IPN 时的客户信息

标签 php paypal paypal-ipn paypal-sandbox

在购买服务订阅后存储我的客户 ID 的推荐工作流程是什么?

这是我的想法:

  1. User decides to buy
  2. User creates account or logs in (if not logged in yet)
  3. Session variables are established
  4. Do Paypal transaction
  5. Get IPN info and add the proper session variable to the DB

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

似乎 payer_id 并不是一个非常可靠的方法,因为它可能会改变。所以我真的在寻找一种方法将该交易的结果与我数据库中的现有客户联系起来,他们的 session 在购买时会处于事件状态。一个问题是我必须在 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 获取所有变量。

关于php - 使用 PayPal IPN 时的客户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42148202/

相关文章:

PHP(SQL) 选择名称,其中 id = 更多值

php - Paypal Express Checkout 负面测试

php - PayPal Chained Payment(钱不去二次)

PayPal IPN 帮助(不是更新数据库)

PHP:将 UTF-8 字符串转换为 Ansi?

php - 如何获取谷歌日历API的验证码

php - 不再支持 PayPal IPN 和 fsockopen?

php - Paypal 沙盒 IPN : 14077410:ssl routines:ssl23_get_server_hello:sslv3 alert handshake failure

php 日历在 2012 年 2 月之后转到 2013 年 3 月

objective-c - 在 iPad native 应用程序中每月订阅的 Paypal 付款