Skip to content

TinkoffAcquiring.openPaymentScreen - зависает белый экран с прелоадером #18

Open
decaseal opened this issue Oct 26, 2020 · 42 comments

Comments

@decaseal
Copy link

Использую 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
@MaryAPc
Copy link
Contributor

MaryAPc commented Oct 26, 2020

Здравствуйте! Судя по всему зависает на проверке 3DS. Должна загрузиться страница проверки кода банка. Карта какого банка была использована? Как долго пробовали ожидать загрузки?

@decaseal
Copy link
Author

Используется карта Тинькофф. Загрузки ждал 10 минут

@decaseal
Copy link
Author

Зависает запрос к https://ds1.mirconnect.ru/sc1/authreq

@decaseal
Copy link
Author

Пробовал следующие карты:

  • Дебетовая Тинькофф MasterCard
  • Кредитка Тинькофф MasterCard
  • Дебетовая Сбербанк Visa

@MaryAPc
Copy link
Contributor

MaryAPc commented Oct 27, 2020

Такое происходит только на прод контуре? https://securepay.tinkoff.ru
Или на тестовом тоже? какой терминал использовался, тест/прод?

@decaseal
Copy link
Author

decaseal commented Oct 27, 2020

Терминал прод, обновляемся со старой версии SDK.

@MaryAPc
Copy link
Contributor

MaryAPc commented Oct 27, 2020

Передала проблему в нашу поддержку, как будет прояснение ситуации, я вам сообщу

@decaseal
Copy link
Author

Большое спасибо. Если поддержке будет удобно связаться с нами на прямую, то можно писать на [email protected].

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 6, 2020

@decaseal Здравствуйте! сейчас такая проблема повторяется? коллеги сообщают, что платежи по терминалу проходят успешно

@decaseal
Copy link
Author

decaseal commented Nov 6, 2020

@MaryAPc Добрый день.

Все по прежнему, зависает запрос к https://ds1.mirconnect.ru/sc1/authreq.

P.S. Рабочая версия приложения, использующая старый SDK, работает. Возможно ваши коллеги видят успешные платежи с использованием старого SDK.

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 6, 2020

Терминалы используются одинаковые в старой и новой версиях?

@decaseal
Copy link
Author

decaseal commented Nov 6, 2020

Да, терминал один и тот же.

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 9, 2020

Если есть возможность, пришлите пожалуйтса PaymentId других неуспешных/зависающих операций, для того чтобы мы проанализировали проблему на большем кол-ве запросов

@decaseal
Copy link
Author

decaseal commented Nov 9, 2020

@MaryAPc
"PaymentId":"357188093" - Дебетовая, Tinkoff Black, MasterCard
"PaymentId":"357189062" - Кредитная, Tinkoff Drive, MasterCard
"PaymentId":"357189862" - Дебетовая, Сбербанк Молодежная, Visa

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 9, 2020

Подозреваем, что проблема в 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'
        }
    }

@decaseal
Copy link
Author

decaseal commented Nov 9, 2020

@MaryAPc
ProGuard включен только для release, тесты выполняю на debug.

Наши настройки ProGuard для SDK:

-keep class ru.tinkoff.acquiring.sdk.localization.** { *; }
-keep class ru.tinkoff.acquiring.sdk.requests.* { *; }

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 10, 2020

Мне удалось повторить проблему. Но не понятно почему и в каком месте теряется параметр, под капотом там используется обычный StringBuilder. Можете подтвердить догадку с помощью дебага?
Нужно поставить точку остановки в классе ThreeDsActivity, метод start3Ds, строка wvThreeDs.postUrl(.....)
И прислать значение переменной params, можно заменить реальные значения PaReq, MD

@decaseal
Copy link
Author

@MaryAPc

PaReq=eJxVU...ucXMT6&MD=ACQP-...4766&TermUrl=https%3A%2F%2Fsecurepay.tinkoff.ru%2Frest%2FSubmit3DSAuthorization

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 10, 2020

Спасибо, догадка не подтвердилась, параметр теряется в другом месте. Буду искать дальше

@decaseal
Copy link
Author

decaseal commented Nov 10, 2020

@MaryAPc,

Запустил chrome devtools. Судя по логам, запрос https://ds1.mirconnect.ru/sc1/authreq выполняется успешно, страница в devtools отрисовывается, при этом в приложении белый экран с прелоадером. onPageFinished не запускается. Так же, возможно, не запускается js window.onload после загрузки https://ds1.mirconnect.ru/sc1/authreq.

Скриншоты из devtools:

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 11, 2020

@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' }
    }
}

Сделайте ребилд приложения, запустите и попробуйте провести оплату

@decaseal
Copy link
Author

@MaryAPc

С фиксом прелоадер не зависает оплата проходит.

Однако есть некоторые косяки по интерфейсу:

  1. После нажатия Pay появляется экран с кнопкой "Please click here to continue" (http://joxi.ru/ZrJaYPNtnQBjPA?d=1).
  2. Нажатие на кнопку вызывает экран подтверждения платежа.
  3. После ввода кода из смс платеж проходит и опять появляется экран с кнопкой "Please click here to continue".
  4. Нажатие на кнопку закрывает экран, вызывается метод onActivityResult.

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 11, 2020

Этот платеж был по карте Тинькофф Банка?

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 11, 2020

И пришлите пожалуйста paymentId операции

@decaseal
Copy link
Author

@MaryAPc

"PaymentId":"360292972" - Дебетовая, Tinkoff Black, MasterCard
"PaymentId":"360294332" - Кредитная, Tinkoff Drive, MasterCard
"PaymentId":"360295746" - Дебетовая, Сбербанк Молодежная, Visa

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 12, 2020

По карте Visa Сбербанка тоже была кнопка на 3DS?

@decaseal
Copy link
Author

@MaryAPc
Да, все тоже самое, только снизу иконка не MasterCard а Visa

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 12, 2020

Поняла, спасибо, передам коллегам, попробуем выяснить почему показываются кнопки

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 12, 2020

С какой модели девайса проводились тесты и какая у него версия Android?
Приложение со старой версией SDK тестировалось на таком же девайсе и кнопки на 3DS не было или тоже была?

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 19, 2020

В релизе версия 2.2.0 без дополнительных лоадеров, можете переходить на нее вместо снэпшота

@decaseal
Copy link
Author

Добрый день. Проблема с белым экраном возникла на другом устройстве - asus zb602kl, android 9. Версия SDK 2.2.0.

Попытки оплаты:

  • "PaymentId":"374041767"
  • "PaymentId":"374050226"
  • "PaymentId":"374050912"

P.S. В chrome devtools вижу, что после запроса https://ds1.mirconnect.ru:443/vbv1/pareq приходит html с кнопкой, но на экране телефона копка не отображается.

@decaseal
Copy link
Author

Такая же ситуация на Nokia 4.2 (TA-1157), android 10.

Попытки оплаты:

  • "PaymentId":"374165229"
  • "PaymentId":"374167856"
  • "PaymentId":"374169169"

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 26, 2020

То есть теперь показывается экран 3DS но без кнопки? И дальше ничего не происходит?

@decaseal
Copy link
Author

  1. В классе ThreeDsActivity вызывается метод start3Ds, wvThreeDs.postUrl со всеми параметрами.
  2. Показывается белый экран без прелоадера.
  3. Запрос к https://ds1.mirconnect.ru:443/vbv1/pareq завершается успешно, возвращая html с кнопкой, без редиректа на https://ds1.mirconnect.ru/sc1/authreq. ThreeDsWebViewClient.onPageFinished не вызывается.
  4. Белый экран без прелоадера висит все это время и продолжает висеть бесконечно.

@MaryAPc
Copy link
Contributor

MaryAPc commented Nov 27, 2020

Такой вопрос, на устройствах случайно не включен какой либо vpn? Платежи из России тестируете?

@decaseal
Copy link
Author

VPN не включен, платежи из России, СПБ

@decaseal
Copy link
Author

Снова появился белый экран. Проверил так-же на SDK старой версии - 1.7.4 - там тоже белый экран.

@MaryAPc
Copy link
Contributor

MaryAPc commented Jun 15, 2021

Здравствуйте! Мы не обнаружили проблемы на стороне SDK или нашего сервера, если это происходит из-за редиректов, то это зависит от платежных систем, которые преоставляют страницы для 3DS. Также проблема может быть если запросы идут через какие то программы-перехватчики трафика. Если до вашего последнего обращения белого экрана не было, то хотелось бы узнать были ли какие то действия на вашей стороне перед тем как проблема снова появилась, возможно найдем причину

@decaseal
Copy link
Author

Не срабатывает submit формы с запросом к https://ds1.mirconnect.ru:443/sc1/authreq.
http://joxi.ru/LmGLeP8ilQZpp2?d=1

Если вытащить кнопку submit из тега noscript, она так-же не срабатывает.
http://joxi.ru/brR15PLIO584aA?d=1

@decaseal
Copy link
Author

decaseal commented Jun 16, 2021

При этом после нажатия на кнопку назад (http://joxi.ru/eAOXYPlik0Go6r?d=1) экран sdk закрывается, и форма срабатывает (http://joxi.ru/l2Z5RP1I7KVywm?d=1)

@decaseal
Copy link
Author

Есть новости?

@Kwaskoff
Copy link

Снова проблема с оплатой. Перенаправляет на https://ds1.mirconnect.ru/vbv1/pareq - а он лежит. Я dns lookup сделал - похоже все ваши их ns0x.mirconnect.ru лежат =(

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants