Только начал проект. Приложение на стороне клиента — это демонстрационное приложение Braintree. Я изменил его, чтобы указать на мой сервер, работающий на локальном хосте.
Вот что я делаю.
iOS-приложение отправляет запрос на сервер для получения токена
сервер использует метод ниже, чтобы получить токен от Braintree и отправить обратно на сервер
Шлюз BraintreeGateway = новый BraintreeGateway(Environment.SANDBOX,merchantAccountId, "........", "............" ); Строковый токен = gateway.clientToken().generate(); // Braintree вернул токен
Демонстрационное приложение ios создает одноразовый номер с выпадающим представлением
Демонстрационное приложение ios отправляет одноразовый номер на сервер
// одноразовый номер отправляется на сервер 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;
Последний шаг получил исключение 403 com.braintreegateway.exceptions.AuthorizationException от Braintree. XML-файл из потока ошибок неавторизован. Входной поток от Braintree говорит: «Сервер вернул код ответа HTTP: 403 для URL-адреса: https://api.sandbox.braintreegateway.com:443/merchants/vb38crtnzn77b9ys/transactions"
Спасибо за помощь