AcquiringSdkAndroid
AcquiringSdkAndroid copied to clipboard
TinkoffAcquiring.openPaymentScreen - зависает белый экран с прелоадером
Использую TinkoffAcquiring.openPaymentScreen.
После ввода данных карты и нажатия Pay зависает белый экран с прелоадером.
Лог:
I/System.out: Tinkoff Acquiring SDK: === Parameters: {"CustomerKey":"40","TerminalKey":"...","Token":"..."}
I/System.out: Tinkoff Acquiring SDK: === Sending POST request to https://securepay.tinkoff.ru/v2/GetCardList
I/System.out: Tinkoff Acquiring SDK: === Got server response: [{"CardId":"1773316","Pan":"521324******2696","Status":"D","RebillId":"","CardType":0,"ExpDate":"0921"}]
I/System.out: Tinkoff Acquiring SDK: === Request done with success, sent for processing
I/System.out: Tinkoff Acquiring SDK: === Parameters: {"Description":"Предоставление права использования ПО Топвизор - Счет ID401279","Receipt":{"Email":"[email protected]","Items":[{"Amount":100,"Name":"ПО Топвизор ID401279","Price":100,"Quantity":1.0,"Tax":"none"}],"Taxation":"usn_income_outcome"},"Language":"EN","DATA":{"chargeFlag":"false"},"Amount":"100","CustomerKey":"40","TerminalKey":"...","Token":"...","OrderId":"401279"}
I/System.out: Tinkoff Acquiring SDK: === Sending POST request to https://securepay.tinkoff.ru/v2/Init
I/System.out: Tinkoff Acquiring SDK: === Got server response: {"Success":true,"ErrorCode":"0","TerminalKey":"...","Status":"NEW","PaymentId":"344973847","OrderId":"401279","Amount":100}
I/System.out: Tinkoff Acquiring SDK: === Request done with success, sent for processing
I/System.out: Tinkoff Acquiring SDK: === Parameters: {"PaymentId":"344973847","TerminalKey":"...","Token":"..."}
I/System.out: Tinkoff Acquiring SDK: === Sending POST request to https://securepay.tinkoff.ru/v2/Check3dsVersion
I/System.out: Tinkoff Acquiring SDK: === Got server response: {"Success":true,"ErrorCode":"0","Message":"OK","Version":"1.0.0"}
I/System.out: Tinkoff Acquiring SDK: === Request done with success, sent for processing
I/System.out: Tinkoff Acquiring SDK: === Parameters: {"InfoEmail":"[email protected]","PaymentId":"344973847","TerminalKey":"...","Token":"...","SendEmail":true,"CardData":"..."}
I/System.out: Tinkoff Acquiring SDK: === Sending POST request to https://securepay.tinkoff.ru/v2/FinishAuthorize
I/System.out: Tinkoff Acquiring SDK: === Got server response: {"Success":true,"ErrorCode":"0","TerminalKey":"...","Status":"3DS_CHECKING","PaymentId":"344973847","OrderId":"401279","Amount":100,"ACSUrl":"https://ds1.mirconnect.ru:443/sc1/pareq","MD":"ACQP-5971590169","PaReq":"..."}
I/System.out: Tinkoff Acquiring SDK: === Request done with success, sent for processing
P.S.:
Судя по дебагеру, код попадает в ThreeDsWebViewClient.onPageFinished, где устанавливается
progressBar?.visibility = View.GONE
view.visibility = View.VISIBLE
И сразу же после этого в ThreeDsWebViewClient.onPageStarted, отменяя content.visibility
content?.visibility = View.INVISIBLE
progressBar?.visibility = View.VISIBLE
Здравствуйте! Судя по всему зависает на проверке 3DS. Должна загрузиться страница проверки кода банка. Карта какого банка была использована? Как долго пробовали ожидать загрузки?
Используется карта Тинькофф. Загрузки ждал 10 минут
Зависает запрос к https://ds1.mirconnect.ru/sc1/authreq
Пробовал следующие карты:
- Дебетовая Тинькофф MasterCard
- Кредитка Тинькофф MasterCard
- Дебетовая Сбербанк Visa
Такое происходит только на прод контуре? https://securepay.tinkoff.ru Или на тестовом тоже? какой терминал использовался, тест/прод?
Терминал прод, обновляемся со старой версии SDK.
Передала проблему в нашу поддержку, как будет прояснение ситуации, я вам сообщу
Большое спасибо. Если поддержке будет удобно связаться с нами на прямую, то можно писать на [email protected].
@decaseal Здравствуйте! сейчас такая проблема повторяется? коллеги сообщают, что платежи по терминалу проходят успешно
@MaryAPc Добрый день.
Все по прежнему, зависает запрос к https://ds1.mirconnect.ru/sc1/authreq.
P.S. Рабочая версия приложения, использующая старый SDK, работает. Возможно ваши коллеги видят успешные платежи с использованием старого SDK.
Терминалы используются одинаковые в старой и новой версиях?
Да, терминал один и тот же.
Если есть возможность, пришлите пожалуйтса PaymentId других неуспешных/зависающих операций, для того чтобы мы проанализировали проблему на большем кол-ве запросов
@MaryAPc "PaymentId":"357188093" - Дебетовая, Tinkoff Black, MasterCard "PaymentId":"357189062" - Кредитная, Tinkoff Drive, MasterCard "PaymentId":"357189862" - Дебетовая, Сбербанк Молодежная, Visa
Подозреваем, что проблема в SDK. По какой-то причине не передается параметр PaReq при загрузке страницы. Скажите, у вас включен proguard для сборки (minifyEnabled true)? например так:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
@MaryAPc ProGuard включен только для release, тесты выполняю на debug.
Наши настройки ProGuard для SDK:
-keep class ru.tinkoff.acquiring.sdk.localization.** { *; }
-keep class ru.tinkoff.acquiring.sdk.requests.* { *; }
Мне удалось повторить проблему. Но не понятно почему и в каком месте теряется параметр, под капотом там используется обычный StringBuilder. Можете подтвердить догадку с помощью дебага? Нужно поставить точку остановки в классе ThreeDsActivity, метод start3Ds, строка wvThreeDs.postUrl(.....) И прислать значение переменной params, можно заменить реальные значения PaReq, MD
@MaryAPc
PaReq=eJxVU...ucXMT6&MD=ACQP-...4766&TermUrl=https%3A%2F%2Fsecurepay.tinkoff.ru%2Frest%2FSubmit3DSAuthorization
Спасибо, догадка не подтвердилась, параметр теряется в другом месте. Буду искать дальше
@MaryAPc,
Запустил chrome devtools. Судя по логам, запрос https://ds1.mirconnect.ru/sc1/authreq выполняется успешно, страница в devtools отрисовывается, при этом в приложении белый экран с прелоадером. onPageFinished не запускается. Так же, возможно, не запускается js window.onload после загрузки https://ds1.mirconnect.ru/sc1/authreq.
Скриншоты из devtools:
- http://joxi.ru/823axlbt8zbZwr?d=1 (https://ds1.mirconnect.ru/sc1/pareq)
- http://joxi.ru/52aazP8tklQ9g2?d=1 (https://ds1.mirconnect.ru/sc1/authreq)
@decaseal я подготовила для вас snapshot с фиксом, замените зависимость ui на следующее:
implementation 'ru.tinkoff.acquiring:ui:2.1.1-SNAPSHOT'
В файл build,gradle проекта добавте:
allprojects {
repositories {
.......
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
}
Сделайте ребилд приложения, запустите и попробуйте провести оплату
@MaryAPc
С фиксом прелоадер не зависает оплата проходит.
Однако есть некоторые косяки по интерфейсу:
- После нажатия Pay появляется экран с кнопкой "Please click here to continue" (http://joxi.ru/ZrJaYPNtnQBjPA?d=1).
- Нажатие на кнопку вызывает экран подтверждения платежа.
- После ввода кода из смс платеж проходит и опять появляется экран с кнопкой "Please click here to continue".
- Нажатие на кнопку закрывает экран, вызывается метод
onActivityResult.
Этот платеж был по карте Тинькофф Банка?
И пришлите пожалуйста paymentId операции
@MaryAPc
"PaymentId":"360292972" - Дебетовая, Tinkoff Black, MasterCard "PaymentId":"360294332" - Кредитная, Tinkoff Drive, MasterCard "PaymentId":"360295746" - Дебетовая, Сбербанк Молодежная, Visa
По карте Visa Сбербанка тоже была кнопка на 3DS?
@MaryAPc Да, все тоже самое, только снизу иконка не MasterCard а Visa
Поняла, спасибо, передам коллегам, попробуем выяснить почему показываются кнопки
С какой модели девайса проводились тесты и какая у него версия Android? Приложение со старой версией SDK тестировалось на таком же девайсе и кнопки на 3DS не было или тоже была?
В релизе версия 2.2.0 без дополнительных лоадеров, можете переходить на нее вместо снэпшота