Php JSON响应的var_dump返回NULL

Php JSON响应的var_dump返回NULL,php,bitcoin,Php,Bitcoin,我正在写一个接受比特币支付的脚本。我的$json变量返回null。var_dump()返回NULL 我尝试过的事情:1。我将$callbackurl和$receivingaddress的值直接粘贴到我的浏览器中,得到了一个JSON响应 我使用了json\u last\u error并收到了“无错误”响应 我已经逃过了魔咒,但这没有效果 我做错了什么 $receiving_address = BITCOIN_ADDRESS; if(get_magic_quotes_gpc()){

我正在写一个接受比特币支付的脚本。我的$json变量返回null。var_dump()返回NULL

我尝试过的事情:1。我将$callbackurl和$receivingaddress的值直接粘贴到我的浏览器中,得到了一个JSON响应

  • 我使用了json\u last\u error并收到了“无错误”响应

  • 我已经逃过了魔咒,但这没有效果

  • 我做错了什么

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

    不要像那样链接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());
    }
    

    谢谢。我的问题是如何正确执行curl。事实证明,对于https,curl必须配置CA