Библиотека PHP Braintree (3.8.0) Обработка ошибок

Библиотека PHP возвращает объекты результатов большинства вызовов API. Каков официальный способ отличить ошибку проверки от ошибки транзакции?

Документы Брейнтри, кажется, предлагают использовать sizeof($result->errors) > 0 определить, произошли ли ошибки проверки. Но это также> 0, когда произошла ошибка транзакции.

Единственный другой способ, который я могу придумать, - это как-то определить, существует ли объект транзакции внутри $result объект, немного взломать, а затем просмотреть статус в объекте транзакции

1 ответ

Решение

Полное раскрытие: я работаю в Braintree. Если у вас есть какие-либо дополнительные вопросы, свяжитесь с нашей службой поддержки.

Вы правы в том, что предлагаемый способ проверки на наличие ошибок транзакции заключается в проверке наличия объекта транзакции. Вот фрагмент кода, иллюстрирующий соответствующую обработку ошибок для Braintree\Transaction::sale вызов.

if ($result->success){
    $transaction = $result->transaction;
} elseif (!is_null($result->transaction)){
    $transaction = $result->transaction;
    $_SESSION["errors"] = "Transaction status - " . $result->transaction->status;
} else {
    $errorString = "";

    foreach($result->errors->deepAll() as $error) {
        $errorString .= $error->code . "-" . $error->message . "\n";
    }

    $_SESSION["errors"] = $errorString;
}
Другие вопросы по тегам