Проблема интеграции демона Биткойн с PHP

Я установил демоны Bitcoin, Litecoin и Dogecoin на один и тот же сервер. Все три из них запущены и работают, но демон Биткойн ничего не отвечает, когда я запускаю bitcoind getinfo. Это могут быть проблемы с сетью или что-то в этом роде. Я установил PHP на тот же сервер и создал index.phpфайл в /var/www/папке.

Содержимое index.phpфайла:

<?php
    include_once('Bitcoin.php');
    include_once('jsonRPCClient.php');
    $dogecoin = new jsonRPCClient('http://user:pass@localhost:8332/');
    print_r($dogecoin->getinfo());
?>

Содержание биткойн.php:

<?php
    class Bitcoin (
        // @var string
        private $username;
        // @var string
        private @password;
        // @var string
        private $url;
        // @var string
        private $id;

        public function __construct($url,$username,$password)
        {
            $this->url=$url;
            $this->username = $username;
            $this->password = $password;
            $this->id = 1;
        }

        public function __call($method,$params)
        {
            $params = array_values($params);

            $request = json_encode(array(
                                       'method' =>strtolower($method),
                                       'params' => $params,
                                       'id' => $this-> id));
            $curl = curl_init();
            curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content type:application/json"));
            curl_setopt($curl, CURLOPT_URL, $this->url);
            curl_setopt($curl, CURLOPT_USERPWD, $this->username.":".$this->password);
            curl_setopt($curl, CURLOPT_POST, TRUE);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
            $response = curl_exec($curl);
            curl_close($curl);

            if(!$resposne)
            {
                throw new Exception('Unable to connect to '.$this->url, 0);
            }
            $response = json_decode($response,true);
        }

        Then there are a condition to throw a different error upon a different situation.

    }
@peter-mortensen, что дополнительные строки нужны только для того, чтобы не вводить все исключения, которых в реальном файле не было.

Ответы (2)

Привет?

Хорошо, я искал по всему Интернету учебные пособия о том, «как интегрировать биткойн-демон с php». Я нашел много, и ни один из них не помог мне заставить его работать безупречно, некоторые из них выдавали неожиданные и странные ошибки после завершения 90%, а некоторые из них достаточно хороши, чтобы выдать ошибку только при запуске, что сэкономило мое время и усилия. Теперь, когда я сделал то, что искал, почему бы не создать пошаговое руководство, чтобы помочь другим участникам. Итак, приступим.

Прежде чем мы начнем, вы должны установить tmux, который поможет вам сохранить вашу работу, даже если вы отключены от vps. Чтобы установить tmux:

sudo apt-get install tmux

чтобы запустить tmux, просто введите tmux, а чтобы вернуться на экран mai, нажмите ctrl b, а затем d, чтобы снова восстановить сеанс, введите tmux attach.

Я ожидаю, что у вас есть Ubuntu 12.x или новее, потому что это то, что я использовал для установки. Войдите в свой VPS или терминал вашего компьютера и установите свойства программного обеспечения Python, введя следующую команду:

sudo apt-get install python-software-properties

затем добавьте репозиторий ppa:bitcoin/bitcoin, введя следующую команду

sudo add-apt-repository ppa:bitcoin/bitcoin

В моем случае это не сработало и выдало ошибку о том, что команда add-apt-repository не найдена. В более поздних версиях Ubuntu эта команда не находится в пакете python-software-properties, как в предыдущих версиях, но доступна в software-properties-common. Поэтому я установил его, выполнив следующие команды:

sudo aptitude install software-properties-common

Чтобы узнать, в каком пакете находится искомая команда, вам поможет следующее:

sudo apt-fille update

К сожалению, в моем случае это также не было установлено, поэтому я установил его, выполнив следующую команду:

apt-get install apt-file

Теперь я получил сообщение «Файл обновлен»

Теперь запустите sudo apt-file search add-apt-repository.

Вам будет предложено подтвердить эту установку, нажмите клавишу Enter для подтверждения.

Теперь беги

sudo aptitude update

а затем sudo aptitude установить биткойн

Создайте новый каталог, набрав:

mkdir ~/.bitcoin
cd ~/.bitcoin

Создайте внутри этого каталога новый файл с именем bitcoin.conf, набрав: nano bitcoin.conf

вставьте следующий код в текстовый файл:

server=1
daemon=1
rpcuser=any_username
rpcpassword=any_password

Выйдите, нажав ctrl+x, чтобы подтвердить изменения, нажмите Y, а затем нажмите клавишу возврата. Запустите биткойн-демон, набрав:

bitcoind

Биткойн-демон теперь установлен и запущен, вы можете проверить его, выполнив следующую команду

bitcoind getinfo

Теперь мы установим apache и php на наш сервер.

Чтобы установить apache, мы запустим следующий код:

sudo apt-get install apache2

как только Apache будет установлен, проверьте его, введя свой IP-адрес в браузере, он скажет, что он работает!

теперь мы установим php с помощью следующей команды:

sudo apt-get install php5 libapache2-mod-php5

теперь перейдите в папку var/www и загрузите jsonRPCClient.php с помощью следующей команды:

wget http://pmtocoins.com/JSON-RPC_PHP_light.zip

после загрузки разархивируйте его, набрав: unzip JSON*.zip

нет перехода в каталог по: cd json*/includes

и переместите jsonRPCClient.php в папку www

теперь создайте новый файл index.php в папке www со следующим кодом

<?php
include_once('jsonRPCClient.php');
$bitcoin = new jsonRPCClient('http://your_username:your_password@127.0.0.1:8332/');
print_r($bitcoin->getinfo());
?>

и вы сделали переход на свой IP-адрес в браузере, например, 161.232.12.1/index.php

Вы можете посмотреть список вызовов API здесь: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list

. Вы можете использовать библиотеку платежей Bitcoin-PHP с открытым исходным кодом -

https://github.com/cryptoapi/Платежный шлюз

    <?
        require_once( "cryptobox.class.php" );

        $options = array( 
        "private_key" => "",        // private key from gourl.io
        "orderID"     => "your_product1_or_signuppage1_etc",
        "amountUSD"   => 2          // 2 USD
        );  

        // Initialise Payment Class
        $box1 = new Cryptobox ($options);

        // Display Payment Box or successful payment result   
        $paymentbox = $box1->display_cryptobox();

        // A. Process Received Payment
        if ($box1->is_paid()) 
        { 
            // Your code here to handle a successful cryptocoin payment
            // ...
        }  
        else $message .= "The payment has not been made yet";
    ?>
    <!DOCTYPE html>
    <html><head></head>
    <body>
    <?= $paymentbox ?>
    <?= $message ?>
    </body>
    </html>
Это не решает проблему спрашивающего. Он хочет общаться со своим собственным биткойн-демоном