PayPal IPN和更新数据库

no.*_*no. 6 paypal paypal-ipn

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

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

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

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

但是,我想要它,所以它在我的数据库中更新他们的个人资料,以显示他们已经购买了该产品.

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

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

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

Sgt*_*oki 4

这实际上取决于您如何将用户存储在数据库中。

  1. 他们如何被识别,他们有用户名吗?
  2. 在将信息提交给 PayPal 之前,您是否将交易保存到数据库中?

基本上,您需要查看IPN 变量,并了解当脚本收到 IPN 消息时可以使用什么将数据与数据库关联起来。

假设您有以下数据库:

Users: ID, email, etc.. etc..

Transactions: ID, emailofUser, invoiceID, Success/Fail(bool)
Run Code Online (Sandbox Code Playgroud)

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

然后,当您想要确保该商品确实是购买的时,IPN 就会派上用场。您不想向某人提供购买商品只是为了发送到 PayPal 的好处,您希望确保他们实际完成付款。除了 IPN 变量之外,您还可以轻松使用“发票”变量(只要您在将数据发送到 PayPal 时正确定义它)。

假设您将买家发送到 PayPal,他完成结账,您的脚本会收到一条 IPN 消息。您需要执行以下操作:

  1. 验证IPN
  2. 检查这是哪张发票

    mysql_query("SELECT * FROM Transactions WHERE发票ID=$_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
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

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