0

システムを更新しており、古い IPN は別の方法で処理する必要があります。ただし、元の IPN 送信先アドレスを変更することはできません。そのため、old_IPNProcessor.php から IPN メッセージを「バウンス」して、new_IPNProcessor.php に転送する必要があります。この質問の範囲を超える技術的な理由で、old_IPNProcessor.php を変更することはできません。

私が読んだことから、これを達成するにはcURLを使用する必要があります。このためのコードを見たことがありますが、それがどのように実装されているかはわかりません。たとえば、以下のコード ( https://stackoverflow.com/a/6213693/1390395から) の $post 変数は、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