Пример #1
0
function validate_ipn()
{
    global $ipn_data, $ipn_response, $paypal_url;
    $url_parsed = parse_url($paypal_url);
    $post_string = '';
    foreach ($_POST as $field => $value) {
        $ipn_data["{$field}"] = $value;
        $post_string .= $field . '=' . urlencode(stripslashes($value)) . '&';
    }
    $post_string .= "cmd=_notify-validate";
    // append ipn command
    // open the connection to paypal
    $fp = fsockopen($url_parsed['host'], "80", $err_num, $err_str, 30);
    if (!$fp) {
        $sql = 'insert into tb_dump (cdate,msg) values ("' . date('d-m-y H:i:s') . '","fsockopen error no. ' . $errnum . ': ' . $errstr . '")';
        $result = mysql_query($sql);
        return false;
    } else {
        fputs($fp, "POST " . $url_parsed['path'] . " HTTP/1.1\r\n");
        fputs($fp, "Host: " . $url_parsed['host'] . "\r\n");
        fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
        fputs($fp, "Content-length: " . strlen($post_string) . "\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        fputs($fp, $post_string . "\r\n\r\n");
        while (!feof($fp)) {
            $ipn_response .= fgets($fp, 1024);
        }
        fclose($fp);
        // close connection
    }
    if (stripos($ipn_response, "VERIFIED") > 0) {
        log_ipn_results(true, $last_error);
        return true;
    } else {
        $last_error = 'IPN Validation Failed.';
        log_ipn_results(false, $last_error);
        return false;
    }
}
Пример #2
0
    fputs($fp, $post_string . "\r\n\r\n");
    // loop through the response from the server and append to variable
    while (!feof($fp)) {
        $ipn_response .= fgets($fp, 1024);
    }
    fclose($fp);
    // close connection
}
if (eregi("VERIFIED", $ipn_response)) {
    // Valid IPN transaction.
    log_ipn_results(true);
    exit;
} else {
    // Invalid IPN transaction.  Check the log for details.
    $last_error = 'IPN Validation Failed.';
    log_ipn_results(false);
    exit;
}
function log_ipn_results($success)
{
    global $ipn_data, $last_error, $ipn_response;
    // Timestamp
    $text = '[' . date('m/d/Y g:i A') . '] - ';
    // Success or failure being logged?
    if ($success) {
        $text .= "SUCCESS!\n";
    } else {
        $text .= 'FAIL: ' . $last_error . "\n";
    }
    // Log the POST variables
    $text .= "IPN POST Vars from Paypal:\n";