0

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

$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();


    }
4

1 回答 1

0

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

如果是这种情况,它不会返回错误消息,它会抛出 BitCoinClientException

所以你需要类似的东西

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

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

此外,您没有向 wallet.php 脚本发送消息。或者你在那个时候完成了吗?


回复:更新 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。

于 2013-09-23T16:22:08.587 回答