PayPal IPN和更新数据库

6
我了解IPN的工作原理,以及信息发送、验证等基本概念。但是我就是无法让它工作起来!!
这是我想做的事情......
用户选择购买产品的某个部分,一旦点击它,他们将链接到一个PayPal按钮,我已经添加了两个文本字段。第一个是用户ID,第二个是他们选择的部件名称 - 这两个值都会自动添加。这一切都很好。
然后他们按下“立即购买”按钮并填写卡的详细信息,购买成功并重定向到成功页面。
但是,我希望它更新他们在我的数据库中的个人资料,以显示他们已经购买了该产品。
我知道使用PayPal的IPN可以将信息发送到我的网站上的页面进行检查,如果付款完成,则采取必要的措施。
我尝试了PayPal网站上的脚本,但完全没有响应。有人能给我一个非常简单的方法来实现我的目标吗?因为所有的教程都过于复杂或者不起作用,而且例子对我毫无帮助,它们对你说话时好像你应该已经知道如何完成。
我甚至读了整个PDF文件,但仍然不知道如何让它工作。有任何帮助吗?

1
我正在尝试实现相同的事情,+1。 - Jeff
1个回答

4
这实际上取决于你将用户存储在数据库中的方式。
  1. 他们如何被识别,是否有用户名?
  2. 在提交信息到PayPal之前,您是否将交易保存到数据库中?
基本上,您需要查看IPN变量并查看在脚本接收到IPN消息时可以用来将数据与数据库关联的内容。
假设您有以下数据库:
Users: ID, email, etc.. etc..

Transactions: ID, emailofUser, invoiceID, Success/Fail(bool)

您希望在将数据发送到PayPal之前将信息存储到数据库中 -“嘿,这个人被发送到PayPal购买了这个东西”。
然后,当您想要确保实际购买该商品时,IPN就会出现。您不希望仅因为被发送到PayPal而为某人提供购买商品的好处,而是要确保他们实际完成付款。根据IPN变量,您可以轻松使用“发票”变量(只要在将数据发送到PayPal时适当定义它)。
假设您将买家发送到PayPal,他完成结账,您的脚本收到IPN消息。您需要执行以下操作:
  1. Verify the IPN
  2. Check what invoice this is for

    mysql_query("SELECT * FROM Transactions WHERE invoiceID=$_POST['invoice']");

  3. See if the transaction is successful or not.

    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
    }
    

您应该查看下面的链接,这些链接描述了有关管理订单的更多信息

订单管理自动化 订单管理指南


1
非常感谢!不幸的是,最终我使用了一种不同的付款方式,因此无法实际尝试和测试它。但根据你的说明,它似乎非常易懂,详细并且我看不出为什么它不能正常工作。我相信在未来我一定会需要它的。 - no.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接