我正在尝试使用PayPal IPN系统。 我已经设置好代码以使用其SandBox平台进行测试。 我正在寻找有关if (strcmp ($res, "VERIFIED") == 0) {我的代码部分未执行的原因。 不仅如此,该代码的任何部分都没有将任何输出写入“ log.txt”。

我希望查看我的代码以使我知道我要去哪里错了。

<?php
require_once('includes/mysql.inc.php');

if($_POST) {
    $req = 'cmd=' . urlencode('_notify-validate');
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }

    // post back to PayPal system to validate
    $header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Host: sandbox.paypal.com\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    $fp = fsockopen ('ssl://sandbox.paypal.com', 443, $errno, $errstr, 30);

    if (!$fp) {
        file_put_contents('log.txt', 'httperrrrr');
        die();
    } else {
        file_put_contents('log.txt', 'die here');
        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
            $data = print_r($res, TRUE);
            if (strcmp ($res, "VERIFIED") == 0) {
                file_put_contents('log.txt', 'verified');
                $username = $_POST['custom'];
                require_once('classes/admin.class.php');
                $activate = new Admin($db);
                $activate->modifyUser($username, 'activate');
            } else {
                file_put_contents('log.txt', 'noverifyshit');
            }
        }
    } else {
        file_put_contents('log.txt', 'no post');
    }
}
?>

===============>>#1 票数:0

我修好了它! 我只是添加了“ if($ _POST ['payment_status'] =“已完成”){”,代码现在执行为true。

这是我更新的代码:

<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
require_once('includes/mysql.inc.php');

if($_POST) {
    $req = 'cmd=_notify-validate';

    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }

    // post back to PayPal system to validate
    $header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Host: www.paypal.com\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

    if (!$fp) {
        file_put_contents('log.txt', 'httperrrrr');
        die();
    } else {
        file_put_contents('log.txt', 'die here');
        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
            if (strcmp ($res, "VERIFIED") == 0) {
                if ($_POST['payment_status'] = "Completed") {
                    file_put_contents('log.txt', 'verified');
                    $username = $_POST['custom'];
                    require_once('classes/admin.class.php');
                    $activate = new Admin($db);
                    $activate->modifyUser($username, 'activate');
                }
            } else {
                file_put_contents('log.txt', $_POST['payment_status']);
            }
        }
    }
}
?>

  ask by Jake Smith translate from so

未解决问题?本站智能推荐:

1回复

Paypal Sandbox IPN网址无法执行的可能原因是什么?

我正在尝试使用沙盒实现贝宝付款,但似乎无法理解为什么它无法调用/到达/执行我的IPN网址。 我一直在论坛上阅读一些尝试过的解决方案,但是似乎没有什么可以帮助我解决问题。 我得到了这个简单的表单代码: 我想我的表格还可以,我可以转到paypal付款并使用沙盒个人帐户类型进行付款
2回复

贝宝IPN-无法沙箱

我正在尝试使用网站上的选项编写一个简单的PayPal购买页面代码。 但是,我在测试时遇到了麻烦。 出于某些奇怪的原因,当我使用“ http://paypal.com/cgi-bin/webscr ”作为表单URL时,它似乎可以工作,但是如果没有人购买,我将无法测试IPN。 如果我将其保留为
1回复

PayPal IPN订阅-部分工作

我正在运行PayPal订阅,并且尝试根据收到的响应触发数据库写入。 直到昨天,该代码仍能正常工作。 但是今天,奇怪的是,代码在收到付款后就停止发送电子邮件。 我不确定这是PayPal一方还是我的小故障。 我认为这与我的代码无关紧要,因为我从代码中剥离了很多代码,并且目前使用IPN的基本版
1回复

PayPal IPN订阅

有没有一种设置贝宝IPN的方法,因此每次我的贝宝帐户上有更改时,它将触发我的脚本。 例如新付款,取消订阅,定期付款等? 我了解这只是对发给开发人员Webby的Paypal上发布的脚本的几处修改。 但是,我在使用他们的沙箱测试脚本时遇到了麻烦。 似乎它重置了IPN的连接和设置,订阅按钮
1回复

PayPal IPN - 排队

我正在使用paypal沙盒进行一些测试付款,直到今天它们都已经好了。 我没有收到来自PayPal的IPN,当我检查IPN通知历史记录时,所有消息都显示为已排队 如果我重新发送一个状态为已发送的IPN,我会收到这个罚款但没有新的IPN正在通过。 我检查了服务器上的错误日志,但我没有收
1回复

贝宝IPN无法正常工作,无法验证

我正在使用沙盒测试Paypal IPN,但无法正常工作。 结果总是显示为无效,我不知道为什么。 请帮助我检查编码中是否有任何错误。 (每次我发送IPN时,IPN历史记录中都没有记录数据。)
2回复

Paypal IPN现在返回无效-以前可以正常工作的PHP代码

我正在使用以下类来处理IPN数据: https : //github.com/WadeShuler/PHP-PayPal-IPN (并且已经使用了很长时间了) 上次成功处理的付款是在9月28日,下一次IPN付款是在10月5日,但返回的响应是INVALID,此后的所有付款都已返回。 如
1回复

PayPal IPN不断返回'INVALID'代码,无论我做什么

我知道这个问题已被多次询问,但是通过查看所有解决方案,它们似乎都不适合我。 我一直在PayPal网站上使用IPN模拟器将订阅集成到我的网站,但IPN总是返回无效。 我已经尝试了多种方法来实现这一点,但这是我目前的方法: 然后是Payment.php类,这也是PayPal发送请求的地方
1回复

贝宝IPN无法支付某些款项

我得到以下代码: 这段代码已经运行了2年多,没有任何问题,但是几个月前,由于某种原因,一些付款开始失败,并且Paypal开始发送IPN失败的警告电子邮件和其他内容... 我试图找到问题没有任何运气。 Paypals IPN Simulator发出的所有测试通知都可以正常工作,但是
2回复

PayPal IPN验证握手但IPN无效

我在使用“旧的”PayPal IPN代码时遇到了麻烦。 当我使用PayPal IPN模拟器时,我收到消息IPN was sent and the handshake was verified. 但在我的日志中,我可以看到IPN消息是Invalid 我已经检查了以下内容: 服务