Проблема с urlencode

559
07 августа 2017, 12:55

Добрый день!

Работаю с API Blockchain. Для корректной работы необходимо отправить с помощь curl несколько параметров, один из которых callback_url, который должен быть закодирован.

$secret = 'testing';
            $my_xpub = 'testing';
            $my_api_key = 'testing';
            $my_callback_url = 'http://lava.ideah.ru/IPN/blockchain='.$secret;
            $call_url = urlencode($my_callback_url);
            $root_url = 'https://api.blockchain.info/v2/receive';
            // ################################### Generate forward adress BTC ######################################## //
            $fields['xpub'] = $my_xpub;
            $fields['callback'] = $call_url;
            $fields['key'] = $my_api_key;
            $url = $root_url;
            $ch = curl_init();
            $url = $url . '?' . http_build_query($fields);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_VERBOSE, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, 120);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            $response = curl_exec($ch);
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            $response = json_decode($response, true);
            if ($httpCode == 200) {
                    $status_adress = "success";
                    $forwarding_address = $response['address'];
            } else {
                    $status_adress = "error";
                    $forwarding_address = "undefined";
                    $error_message = $response['message'];
            }

Проблема в том, что Blockchain возвращает мне ошибку:

Callback parameter is not URL encoded

Я попробовал отправить параметры следующим способом:

$parameters = 'xpub=' .$my_xpub. '&callback=' .urlencode($my_callback_url). '&key=' .$my_api_key;
            $response = file_get_contents($root_url . '?' . $parameters);
            $object = json_decode($response);
            $forwarding_address = $object->address;

В этом случае ошибку не получаю, но итоговые callback ссылки разные:

http%3A%2F%2Flava.ideah.ru%2FIPN%2Fblockchain%3DZzsMLGKe162CfA5EcG6j&amp - 2 случай

http%3A%2F%2Flava.ideah.ru%2FIPN%2Fblockchain%3DZzsMLGKe162CfA5EcG6j - 1 случай

Почему так происходит и где моя ошибка? Благодарен за любую помощь!

READ ALSO
Найти совпадение чисел через запятую в другой строке чисел через запятую

Найти совпадение чисел через запятую в другой строке чисел через запятую

Подскажите, пожалуйста, как можно проверить совпадение чисел:

298
OpenCart | E-mail введен неверно

OpenCart | E-mail введен неверно

Здравствуйте! Сайт отказывается принимать любой email, не даёт регистрировать пользователей, как исправить этот момент, с чем может быть связана...

560
array_merge динамичиские переменные

array_merge динамичиские переменные

Подскажите пжс как можно заменить кол-во элементов в array_merge на автоматичесую подстановку, тк

387
Загрузка файлов Wordpress

Загрузка файлов Wordpress

Нужно дать право неавторизированным пользователям загружать только картинки на серверИспользую js код

414