刚开始这个项目。客户端应用程序是Braintree演示应用程序。我将其修改为指向我在localhost上运行的服务器
这就是我正在做的事情。
ios app向服务器发出请求以获取令牌
服务器使用以下方法从Braintree获取令牌并发送回服务器
BraintreeGateway gateway = new BraintreeGateway( Environment.SANDBOX, merchantAccountId, " .........&#34 ;, " ............." ); String token = gateway.clientToken()。generate(); // Braintree确实返回了一个令牌
ios演示应用程序使用drop-in视图创建一个随机数
ios演示应用程序将随机数发送到服务器
// nonce发送到服务器71a89c9d-6ca7-4804-a895-b0e7564425c6
服务器使用以下代码调用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;
最后一步得到了来自Braintree的403 com.braintreegateway.exceptions.AuthorizationException异常。错误流中的xml是未经授权的。来自Braintree的输入流说&#34;服务器返回HTTP响应代码:403为URL:https://api.sandbox.braintreegateway.com:443/merchants/vb38crtnzn77b9ys/transactions&#34;
感谢您的帮助
答案 0 :(得分:3)
事实证明,有两个ID。一个是merchantId,另一个是merchantAccountId。服务器将merchantId发送回客户端。稍后进行充电,请使用merchantAccountId。