1

ビットコインの支払いを受け入れるスクリプトを書いています。私の $json 変数は null を返します。var_dump() は NULL を返します。

私が試したこと: 1. $callbackurl の値を取得し、URL をブラウザーに直接貼り付けた $recifyingaddress で、JSON 応答を取得しました。

  1. json_last_error を使用しましたが、「エラーなし」の応答を受け取りました

  2. magic_quotes をエスケープしましたが、これは効果がありません

私は何を間違っていますか?

    $receiving_address = BITCOIN_ADDRESS;
    if(get_magic_quotes_gpc()){
        $callback_url = urlencode(stripslashes(CALLBACK_URL));
    }  else {
        $callback_url = urlencode(CALLBACK_URL);
    }

    $ch = curl_init("https://blockchain.info/api/receive?method=create&address=$receiving_address&shared=false&callback=$callback_url");
    curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $json=json_decode(curl_exec($ch),true);

    var_dump($json);
    echo $json[0]->text;

修正されたコードは次のとおりです。

    $receiving_address = BITCOIN_ADDRESS;
    if (get_magic_quotes_gpc()) {
        $callback_url = urlencode(stripslashes(CALLBACK_URL));
    } else {
        $callback_url = urlencode(CALLBACK_URL);
    }

    $ch = curl_init("https://blockchain.info/api/receive?method=create&address=$receiving_address&shared=false&callback=$callback_url");
    curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CAINFO, "C:\Program Files\BitNami WAMPStack\apache2\htdocs\coming\cacert.pem");

    $res = curl_exec($ch);
    if ($res === FALSE) {
        die("Curl failed with error: " . curl_error($ch));
    }


    //var_dump($res);
    $json = json_decode($res, true);
4

1 に答える 1

2

curl/json 呼び出しをそのように連鎖させないでください。あなたは、私たちが完璧な世界に住んでいて、何も失敗することはないと仮定しているだけです. それは非常に悪い決断です。外部リソースは失敗する可能性があり、失敗する可能性があることを常に想定し、各段階で失敗を確認してください。コードを次のように変更します。

$response = curl_exec($ch);
if ($result === FALSE) {
   die("Curl failed with error: " . curl_error($ch));
}
$json = json_decode($response, true);
if (is_null($json)) {
   die("Json decoding failed with error: ". json_last_error());
}
于 2013-06-11T15:39:31.567 に答える