2013-09-23 4 views
1

Я пытаюсь проверить реакцию биткойнов, выполнив правильную сумму в балансе счета и исправив кошелек. Я получаю идентификатор транзакции, но если я ввожу сумму слишком много и поддельный кошелек, я не получаю никаких ошибка в возвращении только пустой страницы с элементами html, head и body. Есть ли какой-либо режим отладки или что я могу сделать, чтобы получить ответ?Биткойн sendfrom не возвращает никаких ошибок

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


    } 

Update Да Правильно я буду больше ob_start(); выше, дело в том, что когда я пытаюсь (пытаюсь, поймаю) событие, я получаю пустую страницу по SUCCESS (так что не идентификатор транзакции, как обычно, я делаю, я возвращаю идентификатор транзакции) по FAIL Я получаю Невозможно подключиться к Bitcoin Server , То, что мне просто нужно, очень просто, как я могу проверить, что транзакция SUCCESSFUL или FAIL, SUCCESSFUL -> Я получил идентификатор в ответ, FAIL -> У меня есть Ошибка взамен. SO Я могу перенаправить пользователей в нужные места на странице после отправки формы. Фактически я делаю это, снимая форму средств, где пользователь вводит сумму и свой кошелек, чтобы вернуть средства с учетной записи биткойна на свой личный счет. Надеюсь, это поможет понять.

UPDATE 2 я изменил конструкцию для этого и, кажется, работает очень хорошо, в основном ищет «Невозможно» слово как идентификатор транзакции не имеет это слово и другое исключение я получаю «Не удается подключиться к серверу ... «Спасибо, что направили меня. Любая обратная связь?

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

В какой библиотеке библиотеки bitcoin вы используете? Похоже, возможно 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 на успех, который будет содержать идентификатор транзакции.

Смежные вопросы