PayPal IPN和更新数据库

时间:2011-02-20 20:52:03

标签: paypal paypal-ipn

我理解IPN是如何运作的,以及发送信息,验证等的基本思路。但对于我的生活,我无法让它发挥作用!!

这就是我要做的......

用户选择要购买的产品的某个部分,一旦他们点击它,它们就会链接到我添加了2个文本字段的paypal按钮。首先是用户ID,第二个是他们所选部分的名称 - 两者都是自动添加的值。一切正常。

然后他们按立即购买并填写他们的卡详细信息并购买并重定向到成功页面。

但是,我想要它,以便在我的数据库中更新他们的个人资料,以表明他们已经购买了该产品。

据我所知,使用PayPal的IPN,我可以将信息发送到我网站上的页面进行检查,如果付款完成,则可以采取任何必要的措施。

我已经尝试过PayPal网站本身的脚本,但根本没有回复。有人能给我一个真正的,真正简单的方法来实现我追求的目标吗?因为每个教程都过于复杂或不起作用,这些例子对我没有任何帮助,他们会和你说话,好像你应该知道它是如何完成的。

我甚至已经阅读了整篇PDF文章,但我仍然对如何使这项工作毫无头绪。有什么帮助吗?

1 个答案:

答案 0 :(得分:4)

这实际上取决于您将用户存储在数据库中的方式。

  1. 他们如何识别,他们是否有用户名?
  2. 您是否在向PayPal提交信息之前将交易保存到数据库?
  3. 基本上,您需要查看IPN Variables,并了解在脚本收到IPN邮件时可以使用哪些数据与数据库关联。

    假设您有以下数据库:

    Users: ID, email, etc.. etc..
    
    Transactions: ID, emailofUser, invoiceID, Success/Fail(bool)
    

    您希望在将数据发送到PayPal之前将信息存储到数据库 - “嘿,这个人被发送到PayPal购买”。

    然后,当您想要确保物品实际购买时,IPN就会进入。您不希望向某人提供仅仅因为发送到PayPal而购买商品的好处,您希望确保他们实际完成了付款。关闭IPN变量,您可以轻松使用'invoice'变量(只要您在将数据发送到PayPal时适当地定义它)。

    因此,假设您向PayPal发送买家,他完成结帐,并且您的脚本会收到IPN消息。您需要执行以下操作:

    1. Verify the IPN
    2. 检查这是什么发票

      mysql_query(“SELECT * FROM Transactions WHERE invoiceID = $ _ POST ['invoice']”);

    3. 查看交易是否成功。

      if ($_POST['payment_status'] == 'completed')
      { 
      //update whatever information you need to
      }
      else
      {
      //something else happened with this transaction, put a flag on it for review by
      //an admin
      }
      
    4. 您应该查看下面的链接,其中介绍了有关管理订单的更多信息

      Order Management Automation Order Management Guide