每当我通过 Braintree API 或通过他们的沙箱创建交易时,它都会经历许多状态,如授权、提交结算、已结算......所有这一切大约需要 24 小时。我想问一下,有没有一种方法可以让我在沙箱/api 中创建交易,并立即解决或争议。我不知道为什么要花这么多时间......例如在网上购物时,我的信用卡会立即被扣款。如何通过 braintree 支付沙箱实现同样的目标?
我在布伦特里工作。看起来我们已经回复了您的支持邮件,但我会在这里发布给有同样问题的其他人。
每个客户端库都有一种在沙盒中即时结算交易的方法。对于 PHP,它在 TestHelper 中:
class Braintree_TestHelper
{
. . .
public static function settle($transactionId)
{
$http = new Braintree_Http(Braintree_Configuration::$global);
$path = Braintree_Configuration::$global->merchantPath() . '/transactions/' . $transactionId . '/settle';
$http->put($path);
}
. . .
}
在生产中,您运行的任何交易通常会立即显示为信用卡上的费用,但它不是“永久的”并且在交易结算之前钱不会真正转移。换句话说,即使结算可能需要 24 小时,但费用不会花那么长时间显示在卡上。
自答案以来,情况略有变化。想法是一样的,但是从 2023 版本的 PHP SDK 开始,这是一种“强制结算”交易的可能方式:
use Braintree\Configuration;
Configuration::environment('sandbox');
Configuration::merchantId('yourmid');
Configuration::publicKey('yourpbk');
Configuration::privateKey('yourprk');
Configuration::gateway()->testing()->settle('transactionid');