0

我们正在更新我们的系统,旧的 IPN 需要以不同的方式处理。但是,我无法更改原始 IPN 发送地址。所以我必须从 old_IPNProcessor.php 中“反弹”IPN 消息并将其转发到 new_IPNProcessor.php。由于超出此问题范围的技术原因,我无法修改 old_IPNProcessor.php。

根据我的阅读,我必须使用 cURL 来完成此操作。我已经看到了一些代码,但我不确定它是如何实现的。例如,下面代码中的 $post var(来自https://stackoverflow.com/a/6213693/1390395)是直接来自 PayPal 的原始 json。它必须在 PHP 数组中才能工作吗?

function forwardIPN($post){
        $url = "new_IPNProcessor.php";

        // $post is the ipn message from PayPal
        $content = $post;

        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HTTPHEADER,
                array("Content-type: application/json"));
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $content);

        $json_response = curl_exec($curl);

        $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

        if ( $status != 201 ) {
            die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
        }


        curl_close($curl);

        $response = json_decode($json_response, true);


    }
4

0 回答 0