2013-06-11 115 views
1

我正在编写接受比特币付款的脚本。我的$ json变量返回null。 var_dump()返回NULL。JSON响应的var_dump返回NULL

事情我已经尝试:1.我已经采取了$ callbackurl的价值和$ recievingaddress直接粘贴网址到浏览器,我已经得到了我用json_last_error JSON响应

  1. 并收到了“没有错误”的回复

  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); 

回答

2

不会链的卷曲/ 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()); 
} 
+0

非常感谢。我的问题是,卷曲会正确执行。事实证明,对于https,curl必须使用CA进行配置 – user1801060