即时付款通知

时间:2014-04-06 17:11:57

标签: paypal paypal-ipn

我想拥有VIP购买按钮,我有带文本框的按钮(由PP生成)和这个代码(它不完整,它的经典IPN代码是paypal在教程中给你的,我只显示部分变化):< / p>

...........
    // STEP 3: Inspect IPN validation result and act accordingly

    if (strcmp ($res, "VERIFIED") == 0) {
        // The IPN is verified, process it:
        // check whether the payment_status is Completed 
        // check that txn_id has not been previously processed
        // check that receiver_email is your Primary PayPal email
        // check that payment_amount/payment_currency are correct
        // process the notification

        // assign posted variables to local variables
        $item_name = $_POST['item_name']; 
        $item_number = $_POST['item_number'];
        $payment_status = $_POST['payment_status'];
        $payment_amount = $_POST['mc_gross'];
        $payment_currency = $_POST['mc_currency'];
        $txn_id = $_POST['txn_id'];
        $receiver_email = $_POST['receiver_email'];
        $payer_email = $_POST['payer_email'];
        $player_indentificator = $_POST["player_id"];
        mail("ales.nezbeda@gmail.com", "TEST", $player_indentificator)

        // IPN message values depend upon the type of notification sent.
        // To loop through the &_POST array and print the NV pairs to the screen:
        foreach($_POST as $key => $value) {
          echo $key." = ". $value."<br>";
        }
    } else if (strcmp ($res, "INVALID") == 0) {
        // IPN invalid, log for manual investigation
        echo "The response from IPN was: <b>" .$res ."</b>";
    }
    ?>

但是当我支付时,我没有收到那封电子邮件。为什么?也许我做错了,也许是非常错误。

1 个答案:

答案 0 :(得分:0)

1)您需要确保在您正在使用的帐户中启用了IPN。如果您正在使用沙箱,则需要确保在该帐户配置文件中启用IPN并指向您要使用的IPN URL。如果您正在使用真实帐户,则可以在该真实帐户中执行相同的操作。我经常看到有人在一个地方设置它,但后来他们向另一个地方提交了付款。确保这不是这种情况。

2)可以使用HTML按钮中的notify_url参数或API请求中的NotifyURL参数覆盖配置文件。您使用这些方法中的任何一种吗?如果是这样,请仔细检查URL的值,以确保您访问正确的URL。

3)如果您已验证上述内容,则需要在您正在使用的PayPal帐户中查看您的IPN历史记录。它会告诉你它是否在发生交易时发送IPN,它还会显示它在发布IPN时从服务器返回的结果代码。

如果您在IPN历史记录中没有看到任何日志,那么您需要仔细检查我上面提到的内容,因为它由于某种原因而没有配置为发送。

如果你确实看到了那里的日志,但是他们显示的结果不是200,那么这意味着你的IPN脚本有问题需要解决。可能是语法错误或类似的东西。查看Web服务器日志可以帮助您确定错误。

我喜欢做的另一件事是创建一个简单的HTML表单,其中包含一些隐藏字段,这些字段代表了我期望从IPN获得的内容。将表单的操作设置为您的IPN URL,然后您可以在浏览器中加载它并提交它以在屏幕上查看结果。这可以极大地提高您查找和修复问题的能力。一旦你按照预期的那样使一切工作正常,你可以放心,当发送真正的IPN时,它将以相同的方式工作。

请记住,在测试时,数据不是来自PayPal,因此无法验证。您需要确保设置代码逻辑以相应地处理它。我喜欢记录未经验证的IPN并向我发送一封电子邮件,我需要查看该事务,因为它未经验证。