Braintree ios + java事务API返回403

时间:2014-12-12 04:36:50

标签: braintree

刚开始这个项目。客户端应用程序是Braintree演示应用程序。我将其修改为指向我在localhost上运行的服务器

这就是我正在做的事情。

  1. ios app向服务器发出请求以获取令牌

  2. 服务器使用以下方法从Braintree获取令牌并发送回服务器

    BraintreeGateway gateway = new BraintreeGateway(               Environment.SANDBOX,               merchantAccountId,               " .........&#34 ;,               " ............."             ); String token = gateway.clientToken()。generate(); // Braintree确实返回了一个令牌

  3. ios演示应用程序使用drop-in视图创建一个随机数

  4. ios演示应用程序将随机数发送到服务器

    // nonce发送到服务器71a89c9d-6ca7-4804-a895-b0e7564425c6

  5. 服务器使用以下代码调用Braintree API

        TransactionRequest request = new TransactionRequest()
        .amount(new BigDecimal(19.0f))
        .merchantAccountId(merchantAccountId)
        .paymentMethodNonce(nonce)
        .options()
            .submitForSettlement(true)
            .done()
        .channel("MyShoppingCartProvider");
        Result<Transaction> result = gateway.transaction().sale(request);
        return result;
    
  6. 最后一步得到了来自Braintree的403 com.braintreegateway.exceptions.AuthorizationException异常。错误流中的xml是未经授权的。来自Braintree的输入流说&#34;服务器返回HTTP响应代码:403为URL:https://api.sandbox.braintreegateway.com:443/merchants/vb38crtnzn77b9ys/transactions&#34;

    感谢您的帮助

1 个答案:

答案 0 :(得分:3)

事实证明,有两个ID。一个是merchantId,另一个是merchantAccountId。服务器将merchantId发送回客户端。稍后进行充电,请使用merchantAccountId。