1

paypal 開発者サイトの ipn.php サンプル コードの次の 2 行の目的は何ですか?

$response = curl_exec($request);
$status   = curl_getinfo($request, CURLINFO_HTTP_CODE);

と をテストする$response$status、値が返されますが@status、値は0あり$responseません。

上記の 2 行を実行する前のすべてのコードを次に示します。

<?php

    // Does this code actually run?
    error_log("yes");

    // Capture the post
    $ipn_post_data = $_POST;

    // Choose url
    if(array_key_exists('test_ipn', $ipn_post_data) && 1 === (int) $ipn_post_data['test_ipn'])
        $url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    else
        $url = 'https://www.paypal.com/cgi-bin/webscr';

    // Set up request to PayPal
    $request = curl_init();
    curl_setopt_array($request, array
    (
        CURLOPT_URL => $url,
        CURLOPT_POST => TRUE,
        CURLOPT_POSTFIELDS => http_build_query(array('cmd' => '_notify-validate') + $ipn_post_data),
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_HEADER => FALSE,
        CURLOPT_SSL_VERIFYPEER => TRUE,
        CURLOPT_CAINFO => 'cacert.pem',
    ));

    // Execute request and get response and status code
    $response = curl_exec($request);
    $status   = curl_getinfo($request, CURLINFO_HTTP_CODE);

Apache エラー ログにa が表示yesされるので、paypal が IPN データをテスト サーバーに返すと、このファイルが実行されることがわかります。

ただし、$payment_statusペイパルからの返信を確認すると、常に機能します。つまり、支払いが正常に機能した場合$payment_statusComplete、保留中の場合$payment_statusはサーバーへのペイパルの返信Pendingなどです。したがって、コードは機能しますが、空白であるため$responseとが使用されている理由がわかりません。$status

4

3 に答える 3

0

車輪の再発明よりもライブラリの使用を検討する必要があります。私は個人的にhttps://github.com/Quixotix/PHP-PayPal-IPNを使用しています

于 2013-09-08T11:03:47.717 に答える