Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单击银行IPN版本6 PHP/Laravel_Php_Laravel_Clickbank - Fatal编程技术网

单击银行IPN版本6 PHP/Laravel

单击银行IPN版本6 PHP/Laravel,php,laravel,clickbank,Php,Laravel,Clickbank,我正在尝试为Clickbank创建一个IPN侦听器,但到目前为止我还没有成功 我使用了clickbank网站上列出的代码示例: 对于ipn v4,我设法获得ipn测试仪的验证确认,并将输出保存在日志中。但是对于v6,我甚至不能将输出保存到日志文件中。看起来clickbank甚至没有发送任何东西。他们的文档是模糊的,我想知道这段代码是否应该首先工作 有人有这方面的经验吗?除了回复200以外,我还应该返回其他内容吗 提前感谢。 <?php function ipnVerification

我正在尝试为Clickbank创建一个IPN侦听器,但到目前为止我还没有成功

我使用了clickbank网站上列出的代码示例:


对于ipn v4,我设法获得ipn测试仪的验证确认,并将输出保存在日志中。但是对于v6,我甚至不能将输出保存到日志文件中。看起来clickbank甚至没有发送任何东西。他们的文档是模糊的,我想知道这段代码是否应该首先工作

有人有这方面的经验吗?除了回复200以外,我还应该返回其他内容吗

提前感谢。


<?php

function ipnVerification() {
    $secretKey="YOUR SECRET KEY";
    $pop = "";
    $ipnFields = array();
    foreach ($_POST as $key => $value) {
        if ($key == "cverify") {
            continue;
        }
        $ipnFields[] = $key;
    }
    sort($ipnFields);
    foreach ($ipnFields as $field) {
        // if Magic Quotes are enabled $_POST[$field] will need to be
        // un-escaped before being appended to $pop
        $pop = $pop . $_POST[$field] . "|";
    }
    $pop = $pop . $secretKey;
    $calcedVerify = sha1(mb_convert_encoding($pop, "UTF-8"));
    $calcedVerify = strtoupper(substr($calcedVerify,0,8));
    return $calcedVerify == $_POST["cverify"];
}

?>
您可以使用它来验证您的IPN。它会很好地工作



您可以使用它来验证您的IPN。它将非常好地工作

您可以做一些事情,这些事情在我的代码中工作得非常好。 (1) PHP版本-如果您使用的是PHP7+,请尝试将其更改为PHP5.6 (2) 使用$HTTP_RAW_POST_数据而不是file_get_内容(我知道file_get_内容更好,但在不起作用时使用替代方法)

下面是要尝试的代码, $secretKey=“您的加密密钥”


在我的代码中,您可以做一些非常好的事情。 (1) PHP版本-如果您使用的是PHP7+,请尝试将其更改为PHP5.6 (2) 使用$HTTP_RAW_POST_数据而不是file_get_内容(我知道file_get_内容更好,但在不起作用时使用替代方法)

下面是要尝试的代码, $secretKey=“您的加密密钥”


你可以开罚单/发邮件/打电话给他们。我知道我以前做过这样的事情,因为有过时的文档。你也可以用或代替200。谢谢你的快速回复,我试过了,但他们说他们不支持api实现。你有那时候的示例代码吗?对不起,我没有。我从未处理过Clickbank,但我处理过其他API,这通常就是我所做的。给他们打电话或发电子邮件。对不起,我帮不了你。谢谢安德鲁。我会调查的。科曼-你有没有想过解决这个问题的办法。你可以开罚单/发邮件/打电话给他们。我知道我以前做过这样的事情,因为有过时的文档。你也可以用或代替200。谢谢你的快速回复,我试过了,但他们说他们不支持api实现。你有那时候的示例代码吗?对不起,我没有。我从未处理过Clickbank,但我处理过其他API,这通常就是我所做的。给他们打电话或发电子邮件。对不起,我帮不了你。谢谢安德鲁。我会调查的。科曼-你有没有想出解决这个问题的办法。
<?php

function ipnVerification() {
    $secretKey="YOUR SECRET KEY";
    $pop = "";
    $ipnFields = array();
    foreach ($_POST as $key => $value) {
        if ($key == "cverify") {
            continue;
        }
        $ipnFields[] = $key;
    }
    sort($ipnFields);
    foreach ($ipnFields as $field) {
        // if Magic Quotes are enabled $_POST[$field] will need to be
        // un-escaped before being appended to $pop
        $pop = $pop . $_POST[$field] . "|";
    }
    $pop = $pop . $secretKey;
    $calcedVerify = sha1(mb_convert_encoding($pop, "UTF-8"));
    $calcedVerify = strtoupper(substr($calcedVerify,0,8));
    return $calcedVerify == $_POST["cverify"];
}

?>
// get JSON from raw body...
//$message = json_decode(file_get_contents('php://input'));

$message = $HTTP_RAW_POST_DATA;
$message = json_decode($message, true);
$messageString = http_build_query($message);    //converts associative array in to string
error_log("message string: $messageString");
$encrypted = $message['notification'];
$iv = $message['iv'];
error_log("IV: $iv");

// decrypt the body...
$decrypted = trim(openssl_decrypt(base64_decode($encrypted),'AES-256-CBC',substr(sha1($secretKey), 0, 32),OPENSSL_RAW_DATA, base64_decode($iv)), "\0..\32");

error_log("Decrypted: $decrypted");

////UTF8 Encoding, remove escape back slashes, and convert the decrypted string to a JSON object...
$sanitizedData = utf8_encode(stripslashes($decrypted));
$jsonDecodeData = json_decode($decrypted, true);
$jsonDecodeDataString = http_build_query($jsonDecodeData);