比特币发送不返回任何错误

Posted

技术标签:

【中文标题】比特币发送不返回任何错误【英文标题】:Bitcoin sendfrom not returning any errors 【发布时间】:2013-09-23 16:10:13 【问题描述】:

我正在尝试验证比特币引擎是否响应,一旦在帐户余额和正确的钱包中执行正确的金额,我将获得交易 ID,但如果我输入的金额过多并且假钱包,我没有收到任何错误,只是一个空白带有 html、head 和 body 元素的页面。是否有任何调试模式或我可以做些什么来接收任何响应?

$message = ($bitcoin->sendfrom($mywallet,$to_wallet,$wammount));

我正在使用 jsonRPCClient 连接比特币引擎。

但是,当我使用 RPC 命令在控制台中执行此操作时

我得到这个:帐户资金不足(代码 -6)

重定向代码

if ($message !== '') 
ob_start(); 
header("Location: mywallet.php?error=done");
die();

 else  


ob_start(); 
header("Location: mywallet.php?error=true");
die();


    

更新是的,我会更多 ob_start();上面的问题是,一旦尝试(尝试,捕获)事件,我在成功时得到空白页面(所以不是像我正在做的正常方式那样的交易 ID,我正在取回交易 ID)在失败时我无法连接到比特币服务器.我只需要听起来很简单,我如何验证交易是成功还是失败,成功 -> 我得到了 ID,失败 -> 我得到了错误作为回报。所以我可以在提交表单后将用户转移到页面上的正确位置。实际上我正在做的是提取资金表格,用户在其中插入金额和他的钱包以将资金从比特币账户取回他的私人账户。希望这将有助于理解。

更新 2 我已经改变了结构,似乎工作得很好,基本上是在寻找“无法”这个词,因为事务 ID 没有那个词,我得到的其他异常是“无法连接到服务器......”谢谢你指导我。有什么反馈吗?

try 
       $message = ($bitcoin->sendfrom($mywallet,$to_wallet,$wammount));
      
catch (Exception $e) 
       $e->getMessage();


// exit;

if (!strpos($e,'Unable') !== false)

header("Location: mywallet.php?error=done");
die();

 else  


header("Location: mywallet.php?error=true");
die();


    

【问题讨论】:

【参考方案1】:

你使用的是什么比特币 php 库?看起来可能是this one?

如果是这样,它不会返回错误消息,它是throws BitCoinClientException

所以你需要类似的东西

  try 
       $message = ($bitcoin->sendfrom($mywallet,$to_wallet,$wammount));
       
  catch (Exception $e) 
       echo $e->getMessage();
   

更新中 ob_start 似乎是多余的,因为您在标题位置之前不输出任何内容。除非你在达到这一点之前已经输出了一些东西,在这种情况下你不能发送一个标题。因此,您需要在任何输出之前将 ob_start 向上移动到脚本的顶部。

您也没有向 wallet.php 脚本发送消息。或者你已经完成了?


RE:更新 2 我可能要补充的一件事是,可能会出现一些我们尚未想到的不包含“无法”的其他异常消息。我会做更多类似的事情:

$errorOccured = false;
try 
       $message = ($bitcoin->sendfrom($mywallet,$to_wallet,$wammount));
      
catch (Exception $e) 
       $errrorMessage = $e->getMessage();
       $errorOccured = true;



if (!$errorOccured) 
   ...
 
else 
header("Location: mywallet.php?error=true&errormsg=" . $errorMessage);
...

这需要修改 mywallet.php 以接受 $errorMessage 作为附加的 GET 参数,以便您可以将其发送回用户。在成功时另外使用另一个参数来发送 $message 可能会很好,该参数将包含事务 ID。

【讨论】:

以上是关于比特币发送不返回任何错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Electrum JSON-RPC 发送比特币

比特币代码分析4 节点发现机制

了解火爆的区块链和比特币

比特币合约比特币数字黄金的地位不易撼动,以太坊翻转比特币还有三大不确定因素

求教,比特币钱包怎么与php建立连接

区块链学习之比特币