He instalado los demonios de Bitcoin, Litecoin y Dogecoin en el mismo servidor. Los tres están en funcionamiento, pero el demonio de Bitcoin no responde con nada cuando ejecuto bitcoind getinfo
. Puede ser problemas de red o algo por el estilo. Instalé PHP en el mismo servidor y creé un index.php
archivo en la /var/www/
carpeta.
Contenido del index.php
archivo:
<?php
include_once('Bitcoin.php');
include_once('jsonRPCClient.php');
$dogecoin = new jsonRPCClient('http://user:pass@localhost:8332/');
print_r($dogecoin->getinfo());
?>
Contenido de Bitcoin.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.
}
¿Hola?
Ok, estaba buscando tutoriales en Internet sobre "cómo integrar el demonio de bitcoin con php". Se me ocurrieron muchos y ninguno de ellos me ayudó a que funcionara sin problemas, algunos arrojaron errores inesperados y extraños después de completar el 90% y algunos de ellos lo suficientemente buenos como para arrojar un error al comenzar solo lo que me ahorró tiempo y esfuerzo. Ahora que he hecho lo que estaba buscando, ¿por qué no crear un tutorial paso a paso para ayudar a otros miembros? Entonces empecemos.
Antes de comenzar, debe instalar tmux, que lo ayuda a guardar su trabajo incluso si está desconectado del vps. Para instalar tmux:
sudo apt-get install tmux
para iniciar tmux simplemente escriba tmux y para volver a la pantalla mai presione ctrl b y luego d para restaurar la sesión nuevamente escriba tmux adjuntar.
Espero que tenga Ubuntu 12.x o posterior porque eso es lo que usé para la instalación. Inicie sesión en su VPS o en la terminal de su computadora e instale las propiedades del software python escribiendo el siguiente comando:
sudo apt-get install python-software-properties
luego agregue el repositorio ppa:bitcoin/bitcoin escribiendo el siguiente comando
sudo add-apt-repository ppa:bitcoin/bitcoin
En mi caso, esto no funcionó y arrojó un error que indica que no se encontró el comando add-apt-repository. En versiones posteriores de ubuntu, este comando no se encuentra en el paquete python-software-properties, como en versiones anteriores, pero está disponible en software-properties-common. Así que lo instalé ejecutando estos comandos:
sudo aptitude install software-properties-common
Para encontrar en qué paquete existe el comando que buscamos, lo siguiente será de ayuda:
sudo apt-fille update
Desafortunadamente, en mi caso, esto tampoco se instaló, así que lo instalé ejecutando el siguiente comando:
apt-get install apt-file
Ahora recibí el mensaje "El archivo está actualizado"
Ahora ejecute sudo apt-file search add-apt-repository
Se le pedirá que confirme esta instalación, presione la tecla Intro para confirmar.
ahora corre
sudo aptitude update
y luego sudo aptitude install bitcoind
Cree un nuevo directorio escribiendo:
mkdir ~/.bitcoin
cd ~/.bitcoin
Cree un nuevo archivo dentro de este directorio llamado bitcoin.conf escribiendo: nano bitcoin.conf
inserte el siguiente código en el archivo de texto:
server=1
daemon=1
rpcuser=any_username
rpcpassword=any_password
Salga presionando ctrl+x para confirmar los cambios, presione Y y luego presione la tecla de retorno. Inicie el demonio de bitcoin escribiendo:
bitcoind
El demonio de Bitcoin ahora está instalado y en ejecución, puede verificarlo ejecutando el siguiente comando
bitcoind getinfo
Ahora instalaremos apache y php en nuestro servidor
Para instalar apache ejecutaremos el siguiente código:
sudo apt-get install apache2
una vez que apache esté instalado, verifíquelo escribiendo su dirección IP en el navegador, dirá ¡ Funciona!
ahora instalaremos php con el siguiente comando:
sudo apt-get install php5 libapache2-mod-php5
ahora navegue a la carpeta var/www y descargue jsonRPCClient.php con el siguiente comando:
wget http://pmtocoins.com/JSON-RPC_PHP_light.zip
una vez descargado, descomprímalo escribiendo: unzip JSON*.zip
no moverse al directorio por: cd json*/includes
y mueva jsonRPCClient.php a su carpeta www
ahora cree un nuevo archivo index.php en la carpeta www con el siguiente código
<?php
include_once('jsonRPCClient.php');
$bitcoin = new jsonRPCClient('http://your_username:your_password@127.0.0.1:8332/');
print_r($bitcoin->getinfo());
?>
y ya terminó, navegue a su dirección IP en el navegador, por ejemplo, 161.232.12.1/index.php
Puede consultar la lista de llamadas de la API aquí: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list
. Puede usar la biblioteca de pago Bitcoin-PHP de código abierto -
https://github.com/cryptoapi/Payment-Gateway
<?
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>
Khan Shahrukh