Class 'Transaction' 调用 braintree 退款时未找到

Class 'Transaction' not found while calling braintree refund

我正在将 braintree 支付整合到我的应用程序中。我已成功创建交易,现在正在处理退款功能,refund() 方法在 'Transaction' class 中,所以我尝试使用 'Transaction::refund()' 调用,但它没有被调用,而是显示了Class 'Transaction' 未找到错误

我的代码:

require_once('../assets/plugins/braintree/includes/braintree_init.php');
---------
---------
if(post('refund_mode') == 'braintree'){
  include_once '/var/www/vhosts/my_app_name/assets/plugins/braintree/vendor/braintree/braintree_php/lib/Braintree/Transaction.php'; 
  $result = Transaction::refund($braintree_transaction_id, $refund_amount);
  echo "<pre>"; print_r($result);exit;
}

这样调用refund()方法是否正确,如果不正确如何调用refund()方法?谁能帮我看看我的错误是什么?

完全公开,我在 Braintree 工作。如果您有任何其他问题,我建议联系 support

语法与您输入的内容相当接近,但它确实取决于您使用的 Braintree PHP SDK 库的版本。在较新的版本中,您将需要使用实例方法,而不是 class 方法来执行退款。如果您使用的是最新版本的 SDK,您的请求可能如下所示:

$result = $gateway->transaction()->refund($braintree_transaction_id, $refund_amount);

但是,如果您使用的是旧版本的 SDK,您的请求将类似于以下内容:

$result = Braintree_Transaction::refund($braintree_transaction_id, $refund_amount);

我建议检查您使用的是哪个版本的 SDK。如果它较旧,我发现最好阅读 class methods vs instance methods to learn about the differences. Otherwise, referring to Braintree's developer documentation 可以证明对构建 API 请求有帮助。