Braintree PHP 库 (3.8.0) 错误处理

Braintree PHP Library (3.8.0) Error Handling

PHP 库 returns 来自大多数 API 调用的结果对象。官方区分验证错误和交易错误的方式是什么?

Braintree 文档 似乎建议使用 sizeof($result->errors) > 0 来确定是否发生了验证错误。但是当发生交易错误时,这也是 > 0。

我能想到的唯一其他方法是以某种方式确定交易对象是否存在于 $result 对象中,有点 hack,然后查看交易对象中的状态

完全披露:我在 Braintree 工作。如果您有任何其他问题,请随时联系我们的 support 团队。

您是正确的,检查交易错误的建议方法是查看是否存在交易对象。下面是一段代码,说明了 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;
}