I use bitcoind. And I have simple bitcoin wallet with simple login-register system.
Error Code;
Fatal error: Uncaught exception 'Exception' with message 'Incorrect response id (request id: 1, response id: )' in /var/www/ponzi/htdocs/wallet/includes/jsonRPCClient.php:146 Stack trace: #0 /var/www/ponzi/htdocs/wallet/account.php(38): jsonRPCClient->__call('getaccountaddre...', Array) #1 /var/www/ponzi/htdocs/wallet/account.php(38): jsonRPCClient->getaccountaddress('kaka') #2 {main} thrown in /var/www/ponzi/htdocs/wallet/includes/jsonRPCClient.php on line 146
Account Page;
<?php include("includes/auth.php"); //include auth.php file on all secure pages ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>MyCoinWallet - Account</title>
<link rel="stylesheet" href="css/styles.css" type="text/css" />
</head>
<body>
<div id="main">
<div id="top"><div style='float:left;position:relative;top:25px;'><h2>MyCoinWallet</h2></div><div class="logomargin"><img src='images/logo-mockup2.png' /></div></div>
<div id="wrapper">
<div id="content">
<div class="innermargin">
<h1>MyCoinWallet Account</h1>
<br />
<form>
<br>
<p>Welcome <?php echo $_SESSION['username']; ?>!</p><br><br>
<?php
require_once('includes/db.php');
require_once('includes/config.php');
require_once('includes/jsonRPCClient.php');
require_once('includes/bcfunctions.php');
$bitcoin = new jsonRPCClient('http://MYUSER:MYPASS@localhost:8332');
$kadi = $_SESSION['username'];
// check for session address
if(isset($_SESSION['sendaddress'])) {
$sendaddress = refreshAddressIfStale($bitcoin,$_SESSION['sendaddress']); // session exists, check if its been used before
$_SESSION['sendaddress'] = $sendaddress;
} else {
// if address already exists in wallet (or new unfortunately), check the balance and set as main receivable address if zero
$curaddress = $bitcoin->getaccountaddress($kadi);
$sendaddress = refreshAddressIfStale($bitcoin,$curaddress);
$_SESSION['sendaddress'] = $sendaddress;
}
// save current balance
saveCurrentBalance($bitcoin, $_SESSION['sendaddress']);
$userBalance = $_SESSION['userbalance'];
$singleconfirmBalance = number_format($bitcoin->getbalance($_SESSION['username'], 0),8); // set to zero, this is near instant, set to one one on the side of caution
if($singleconfirmBalance > 0) { // user has unconfirmed transactions
$unconfirmedBalance = $singleconfirmBalance - $userBalance;
}
echo "Current Balance: ". $userBalance ."<br />";
if((isset($unconfirmedBalance)) && ($unconfirmedBalance > 0)) {
echo "Unconfirmed Balance: ". $unconfirmedBalance ."<br />";
}
echo "<h2>Recent Transactions:</h2><table>";
$transactions = $bitcoin->listtransactions($_SESSION['username']);
foreach($transactions as $trans) {
if(isset($trans['account'])) {
$transacct = $trans['account'];
} else {
$transacct = '';
}
if(isset($trans['address'])) {
$transaddress = $trans['address'];
} else {
$transaddress = '';
}
if(isset($trans['category'])) {
$transcategory = $trans['category'];
} else {
$transcategory = '';
}
if(isset($trans['amount'])) {
$transamount = $trans['amount'];
} else {
$transamount = '';
}
if(isset($trans['confirmations'])) {
$transconfirmations = $trans['confirmations'];
} else {
$transconfirmations = '';
}
if(isset($trans['blockhash'])) {
$transblockhash = $trans['blockhash'];
} else {
$transblockhash = '';
}
if(isset($trans['blockindex'])) {
$transblockindex = $trans['blockindex'];
} else {
$transblockindex = '';
}
if(isset($trans['blocktime'])) {
$transblocktime = $trans['blocktime'];
} else {
$transblocktime = '';
}
if(isset($trans['txid'])) {
$transtxid = $trans['txid'];
} else {
$transtxid = '';
}
if(isset($trans['time'])) {
$transtime = $trans['time'];
} else {
$transtime = '';
}
if(isset($trans['timereceived'])) {
$transtimereceived = $trans['timereceived'];
} else {
$transtimereceived = '';
}
/*
$transaddress = $trans['address'];
$transcategory = $trans['category'];
$transamount = $trans['amount'];
$transconfirmations = $trans['confirmations'];
$transblockhash = $trans['blockhash'];
$transblockindex = $trans['blockindex'];
$transblocktime = $trans['blocktime'];
$transtxid = $trans['txid'];
$transtime = $trans['time'];
$transtimereceived = $trans['timereceived'];
*/
echo "<tr><td>Address:</td><td>". $transaddress ."</td></tr>";
echo "<tr><td>Amount:</td><td>". number_format($transamount, 8) ."</td></tr>";
echo "<tr><td>Category:</td><td>". $transcategory ."</td></tr>";
echo "<tr><td>Confirmations:</td><td>". $transconfirmations ."</td></tr>";
echo "<tr><td>Blockhash:</td><td>". $transblockhash ."</td></tr>";
echo "<tr><td>txid:</td><td>". $transtxid ."</td></tr>";
echo "<tr><td>Time:</td><td>". date("Y - M - d H:i:s", $transtime) ."</td></tr>";
echo "<tr><td> </td></tr>";
}
?>
</table></form>
</div>
</div>
</div>
<div id="menu">
<div class="menumargin">
<a href='index.php'>Home</a>
<a href='account.php'>Account</a>
<a href='deposit.php'>Deposit</a>
<a href='withdraw.php'>Withdraw</a>
<a href='contact.php'>Contact</a>
<a href='#'>Logout</a>
</div>
</div>
<div id="footer"><a href="index.php">Home</a> | <a href="account.php">Account</a> | <a href="deposit.php">Deposit</a> | <a href="withdraw.php">Withdraw</a> | <a href="contact.php">Contact</a> | <a href="#">Logout</a> | </div>
</div>
</body>
</html>
jsonRPCClient.php;
<?php
/*
COPYRIGHT
Copyright 2007 Sergio Vaccaro <[email protected]>
This file is part of JSON-RPC PHP.
JSON-RPC PHP is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
JSON-RPC PHP is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JSON-RPC PHP; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* The object of this class are generic jsonRPC 1.0 clients
* http://json-rpc.org/wiki/specification
*
* @author sergio <[email protected]>
*/
/* converted old fopen method to curl and added ability to use ssl - Galen */
class jsonRPCClient {
/**
* Debug state
*
* @var boolean
*/
private $debug;
/**
* The server URL
*
* @var string
*/
private $url;
/**
* The request id
*
* @var integer
*/
private $id;
/**
* If true, notifications are performed instead of requests
*
* @var boolean
*/
private $notification = false;
/**
* Takes the connection parameters
*
* @param string $url
* @param boolean $debug
*/
public function __construct($url,$debug = false) {
// server URL
$this->url = $url;
// proxy
empty($proxy) ? $this->proxy = '' : $this->proxy = $proxy;
// debug state
empty($debug) ? $this->debug = false : $this->debug = true;
// message id
$this->id = 1;
}
/**
* Sets the notification state of the object. In this state, notifications are performed, instead of requests.
*
* @param boolean $notification
*/
public function setRPCNotification($notification) {
empty($notification) ?
$this->notification = false
:
$this->notification = true;
}
/**
* Performs a jsonRCP request and gets the results as an array
*
* @param string $method
* @param array $params
* @return array
*/
public function __call($method,$params) {
// check
if (!is_scalar($method)) {
throw new Exception('Method name has no scalar value');
}
// check
if (is_array($params)) {
// no keys
$params = array_values($params);
} else {
throw new Exception('Params must be given as array');
}
// sets notification or request task
if ($this->notification) {
$currentId = NULL;
} else {
$currentId = $this->id;
}
// prepares the request
$request = array(
'method' => $method,
'params' => $params,
'id' => $currentId
);
$request = json_encode($request);
$this->debug && $this->debug='***** Request *****'."\n".$request."\n".'***** End Of request *****'."\n\n";
// performs the HTTP POST
$ch = curl_init($this->url);
// curl ssl options
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$response = json_decode(curl_exec($ch),true);
curl_close($ch);
// debug output
if ($this->debug) {
echo nl2br($this->debug);
}
// final checks and return
if (!$this->notification) {
// check
if ($response['id'] != $currentId) {
throw new Exception('Incorrect response id (request id: '.$currentId.', response id: '.$response['id'].')');
}
if (!is_null($response['error'])) {
throw new Exception('Request error: '.$response['error']);
}
return $response['result'];
} else {
return true;
}
}
}
?>
Please help me!!