Braintree Payments交易状态查询:电商网站支付网关技术问询
查询Braintree交易状态的方法
嘿,很高兴看到你的Braintree支付集成已经能正常接收付款并更新订单表了!查询交易状态其实有几种实用的方式,我给你详细说明下:
1. 从初始交易结果直接获取状态
其实在你调用Braintree_Transaction::sale()完成付款后,不需要额外查询,就能从返回的$result对象里直接拿到交易状态。你可以把这个状态和交易ID一起存入数据库,方便后续追溯:
$result = Braintree_Transaction::sale([ 'amount' => $total, 'orderId' => $order_id, 'merchantAccountId' => $active_country_braintree, 'paymentMethodNonce' => $nonce, 'customer' => [ 'firstName' => $first_name, 'lastName' => $last_name // 其他客户信息... ] ]); if ($result->success) { $transaction = $result->transaction; // 获取交易状态 $transactionStatus = $transaction->status; // 获取交易ID,建议存入订单表 $transactionId = $transaction->id; // 这里可以把$transactionStatus和$transactionId更新到你的订单表中 } else { // 处理交易失败的情况,比如打印错误信息 echo "交易失败: " . $result->message; }
2. 通过交易ID查询历史交易状态
如果你已经把交易ID存在数据库里,后续可以用Braintree_Transaction::find()方法查询最新状态:
// 从你的订单表中取出对应的交易ID $transactionId = "your_transaction_id_from_database"; try { $transaction = Braintree_Transaction::find($transactionId); $currentStatus = $transaction->status; // 还能获取其他交易详情,比如金额、付款方式、结算时间等 echo "交易状态: " . $currentStatus; echo "交易金额: " . $transaction->amount; } catch (Braintree_NotFoundError $e) { // 处理交易ID不存在的情况 echo "未找到对应交易: " . $e->getMessage(); }
3. 通过订单ID搜索交易
因为你在创建交易时传入了orderId参数,也可以通过订单ID来搜索对应的交易,适合需要批量查询或关联订单与交易的场景:
$searchResults = Braintree_Transaction::search([ Braintree_TransactionSearch::orderId()->is($order_id) ]); // 遍历搜索结果(一个订单可能对应多个交易,比如退款、重试等) foreach ($searchResults as $transaction) { echo "交易ID: " . $transaction->id; echo "交易状态: " . $transaction->status; echo "交易类型: " . $transaction->type; }
常见的交易状态说明
Braintree的交易状态有多种,常见的几个包括:
authorized: 付款已授权,等待结算submitted_for_settlement: 交易已提交结算settled: 交易已成功结算,资金将转入你的账户failed: 交易失败,可能是付款方式无效、额度不足等原因voided: 交易已撤销(在结算前)refunded: 交易已退款(结算后)
内容的提问来源于stack exchange,提问作者Paddy Hallihan
相关产品推荐
相关产品推荐

