PHP 库会返回大多数 API 调用的结果对象。区分验证错误和交易错误的官方方法是什么?
Braintree docs 似乎建议使用sizeof($result->errors) > 0
来确定是否发生了验证错误。但这也是>发生交易错误时为0。
我能想到的另一种方法是以某种方式确定事务对象是否存在于$result
对象中,有点黑客,然后查看事务对象中的状态
答案 0 :(得分:4)
完全披露:我在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;
}