PayPal IPN和更新数据库

问题描述 投票:6回答:1

我明白IPN的工作原理,以及发送信息、验证等的基本思路。但是,对于我的生活,我不能让它工作!!。

这是我想做的...

用户选择产品的某个部分进行购买,一旦点击,就会链接到一个paypal按钮,我在这个按钮上添加了2个文本字段。首先是用户ID,其次是所选部件的名称--这两个字段的值都是自动添加进去的。这一切都很好。

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

然而,我希望它能更新他们在我的数据库中的个人资料,以显示他们已经购买了该产品。

我知道使用PayPal的IPN,我可以将信息发送到我网站上的一个页面来检查,如果付款完成,然后采取任何需要的行动。

我已经尝试了PayPal网站本身的脚本,但我没有得到任何回应。谁能给我一个非常非常简单的方法来实现我的要求?因为每一个教程都过于复杂,或者不起作用,而且例子对我没有丝毫帮助,他们跟你说得好像你应该知道怎么做一样。

我甚至已经读完了整个PDF,但我还是对如何让这个工作毫无头绪。有什么帮助吗?

paypal paypal-ipn
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. 验证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
    }
    

你应该看看下面的链接,其中描述了更多关于管理你的订单的内容。

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

© www.soinside.com 2019 - 2024. All rights reserved.