You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Braintree Python调用sale接口开启submit_for_settlement报AuthorizationError

Braintree Sandbox 提交自动结算报AuthorizationError问题解决方案

核心原因

该报错本质是你当前使用的API凭证或者沙箱配置,不支持创建交易时直接提交结算的操作权限,和交易本身的参数合法性无关(这也是你移除submit_for_settlement参数后交易可以正常创建的原因)。

排查与解决步骤

  • 校验API角色权限:登录Braintree沙箱后台,进入「Settings > Users and Roles」页面,找到当前调用接口使用的API密钥对应的角色,确认该角色已勾选Transaction: Submit for Settlement权限。多数沙箱默认的开发角色未开通该权限,即使你登录的账户是管理员身份,API密钥的权限是独立分配的。
  • 检查沙箱结算配置:进入「Settings > Processing」页面,在结算设置板块确认开启了「允许交易创建时直接提交结算」的开关,同时确认你使用的商户账户(对应代码里的merchant_account_id)没有设置自动结算的金额阈值、支付方式限制。
  • 临时兼容方案(适合权限调整后依旧报错的沙箱环境):Braintree沙箱本身存在一定的功能校验bug,你可以拆分交易流程为两步实现相同的直接结算效果,该方式的权限校验逻辑和直接传参略有不同,绝大多数场景下可以绕过报错,代码示例如下:
# 第一步:创建仅授权的交易
sale_result = self.braintree_client.transaction.sale(
    {
        "amount": charge["amount"],
        "payment_method_token": "token_stored",
        "merchant_account_id": merchant_id,
    }
)
if sale_result.is_success:
    # 第二步:立即调用结算接口完成结算
    settle_result = self.braintree_client.transaction.submit_for_settlement(
        sale_result.transaction.id,
        charge["amount"]
    )
  • 确认支付方式合法性:如果你使用的payment_method_token是自定义生成的测试令牌,建议替换为Braintree官方沙箱测试卡生成的合法令牌,部分自定义模拟支付方式不支持直接结算操作。

内容的提问来源于stack exchange,提问作者g66 Gopanear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:36:07