Fix card balance retrieval from incorrect placeholder in GetCardInfoScript. Add retry logic for "Оплатить" button tap in PayByPhoneScript and PayByCardScript to handle bottom sheet dismissal.
This commit is contained in:
parent
e7cf9a311e
commit
f65840f28b
@ -149,7 +149,11 @@ void GetCardInfoScript::doStart() {
|
||||
closeGooglePlayBannerIfVisible(m_deviceId, device.screenWidth, device.screenHeight);
|
||||
|
||||
QString fullNumber = xmlScreenParser.parseFullCardNumber();
|
||||
const double cardBalance = xmlScreenParser.parseCardDetailBalance();
|
||||
// Баланс берём с домашнего экрана (parseBalanceFromHomeScreen выше):
|
||||
// в Душанбе все карты привязаны к одному счёту, и на экране детали
|
||||
// карты баланс часто отображается как placeholder "0,00 TJS" пока
|
||||
// данные подгружаются с сервера.
|
||||
const double cardBalance = balance;
|
||||
const QString holder = xmlScreenParser.parseCardDetailHolder();
|
||||
const QString fullNumberClean = QString(fullNumber).remove(' ');
|
||||
|
||||
|
||||
@ -450,6 +450,22 @@ void PayByCardScript::makePayment(
|
||||
continue;
|
||||
}
|
||||
|
||||
// Sheet "Подтверждение платежа" пропал, но снова виден input-экран
|
||||
// (кнопка "Оплатить" вернулась) — значит тап по "Подтверждаю" промахнулся
|
||||
// и Compose дисмиснул bottom sheet (clip на scrim/Закрыть/X). Перезапускаем
|
||||
// цикл: тапаем "Оплатить" → следующая итерация увидит sheet и retryConfirm
|
||||
// выше повторно тапнет "Подтверждаю".
|
||||
Node retryOplatit = xmlScreenParser.findNodeByContentDesc(QString::fromUtf8("Оплатить"));
|
||||
if (retryOplatit.isEmpty()) {
|
||||
retryOplatit = xmlScreenParser.findButtonNode(QString::fromUtf8("Оплатить"), false);
|
||||
}
|
||||
if (!retryOplatit.isEmpty() && retryOplatit.clickable) {
|
||||
qDebug() << "[Dushanbe::PayByCard] Sheet dismissed, re-tapping 'Оплатить' to restart confirm flow";
|
||||
AdbUtils::makeTap(deviceId, retryOplatit.x(), retryOplatit.y());
|
||||
QThread::msleep(3000);
|
||||
continue;
|
||||
}
|
||||
|
||||
qDebug() << "[Dushanbe::PayByCard] Waiting for result, attempt" << attempt + 1;
|
||||
QThread::msleep(2000);
|
||||
}
|
||||
|
||||
@ -442,6 +442,22 @@ void PayByPhoneScript::makePayment(
|
||||
continue;
|
||||
}
|
||||
|
||||
// Sheet "Подтверждение платежа" пропал, но снова виден input-экран
|
||||
// (кнопка "Оплатить" вернулась) — значит тап по "Подтверждаю" промахнулся
|
||||
// и Compose дисмиснул bottom sheet (clip на scrim/Закрыть/X). Перезапускаем
|
||||
// цикл: тапаем "Оплатить" → следующая итерация увидит sheet и retryConfirm
|
||||
// выше повторно тапнет "Подтверждаю".
|
||||
Node retryOplatit = xmlScreenParser.findNodeByContentDesc(QString::fromUtf8("Оплатить"));
|
||||
if (retryOplatit.isEmpty()) {
|
||||
retryOplatit = xmlScreenParser.findButtonNode(QString::fromUtf8("Оплатить"), false);
|
||||
}
|
||||
if (!retryOplatit.isEmpty() && retryOplatit.clickable) {
|
||||
qDebug() << "[Dushanbe::PayByPhone] Sheet dismissed, re-tapping 'Оплатить' to restart confirm flow";
|
||||
AdbUtils::makeTap(deviceId, retryOplatit.x(), retryOplatit.y());
|
||||
QThread::msleep(3000);
|
||||
continue;
|
||||
}
|
||||
|
||||
qDebug() << "[Dushanbe::PayByPhone] Waiting for result, attempt" << attempt + 1;
|
||||
QThread::msleep(2000);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user