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);
|
closeGooglePlayBannerIfVisible(m_deviceId, device.screenWidth, device.screenHeight);
|
||||||
|
|
||||||
QString fullNumber = xmlScreenParser.parseFullCardNumber();
|
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 holder = xmlScreenParser.parseCardDetailHolder();
|
||||||
const QString fullNumberClean = QString(fullNumber).remove(' ');
|
const QString fullNumberClean = QString(fullNumber).remove(' ');
|
||||||
|
|
||||||
|
|||||||
@ -450,6 +450,22 @@ void PayByCardScript::makePayment(
|
|||||||
continue;
|
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;
|
qDebug() << "[Dushanbe::PayByCard] Waiting for result, attempt" << attempt + 1;
|
||||||
QThread::msleep(2000);
|
QThread::msleep(2000);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -442,6 +442,22 @@ void PayByPhoneScript::makePayment(
|
|||||||
continue;
|
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;
|
qDebug() << "[Dushanbe::PayByPhone] Waiting for result, attempt" << attempt + 1;
|
||||||
QThread::msleep(2000);
|
QThread::msleep(2000);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user