AcquiringSdkAndroid
AcquiringSdkAndroid copied to clipboard
transactionInfo in createPaymentDataRequest(price: Money) method
Добрый день.
Меня смутила функция fun openGooglePay(activity: Activity, price: Money, requestCode: Int)
Пытаясь выяснить, почему у меня не работает оплата через googlePay, залез в createPaymentDataRequest
Cложилось впечатление, что JSON формируется неправильно, а именно в getTransactionInfo поле суммы заполняется в 100 раз большим значением. Это прослеживается и на тестовом проекте, если выбрать товар "Нечетный интеграл..." за 20,99 то получится Json следующего вида:
{ "apiVersion":2, "apiVersionMinor":0, "allowedPaymentMethods":[ { "type":"CARD", "parameters":{ "allowedAuthMethods":[ "PAN_ONLY", "CRYPTOGRAM_3DS" ], "allowedCardNetworks":[ "VISA", "MASTERCARD" ] }, "tokenizationSpecification":{ "type":"PAYMENT_GATEWAY", "parameters":{ "gateway":"tinkoff", "gatewayMerchantId":"TestSDK" } } } ], "transactionInfo":{ "totalPrice":"2099.00", "totalPriceStatus":"FINAL", "currencyCode":"RUB" }, "shippingAddressRequired":false, "shippingAddressParameters":{ "phoneNumberRequired":false } }
Прошу обратить внимание на totalPrice, который получается равным "2099.00".
val formattedPrice = BigDecimal(price.coins).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString()
Соответственно, при price.coins == 100, получим "100.00", вместо "1.00"
Здравствуйте! Спасибо за обращение, действительно есть ошибка в форматировании суммы. Однако параметр totalPrice и в целом объект TransactionInfo не используется в процессе оплаты, он нужен только для визуального отображения данных в окне Google Pay https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo Таким образом, если вы полагали, что у вас не работает оплата через GP из-за этого, то это не так, проблема в чем то другом. Рекомендую проверить шаги интеграции, при необходимости обращайтесь к нам снова!