diff --git a/android/ozon/PayByCardScript.cpp b/android/ozon/PayByCardScript.cpp index ba5b27e..466bded 100644 --- a/android/ozon/PayByCardScript.cpp +++ b/android/ozon/PayByCardScript.cpp @@ -136,7 +136,7 @@ void PayByCardScript::doStart() { xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(adbId, ++m_counter)); } - makePayment(device.adbSerial, app.package, app.pinCode, device.screenWidth, device.screenHeight); + makePayment(device.adbSerial, app.package, app.pinCode, app.phone, device.screenWidth, device.screenHeight); emit finishedWithResult(m_error); } @@ -145,6 +145,7 @@ void PayByCardScript::makePayment( const QString &deviceId, const QString &packageName, const QString &pinCode, + const QString &bankProfilePhone, const int width, const int height ) { @@ -346,6 +347,7 @@ void PayByCardScript::makePayment( qDebug() << "[PayByCard] Saved transaction to DB, id:" << txId << "fee:" << fee; // Ищем кнопку "Документы" и достаём ID операции + QString externalId; Node docBtn = xmlScreenParser.findButtonNode("Документы", false); if (!docBtn.isEmpty() && txId != -1) { qDebug() << "[PayByCard] Tapping 'Документы'..."; @@ -377,13 +379,7 @@ void PayByCardScript::makePayment( const QString ocrText = recognizeTextFromImage(screenshot); if (!ocrText.isEmpty()) { qDebug() << "[PayByCard] OCR result:\n" << ocrText; - const QString externalId = extractTransactionId(ocrText); - if (!externalId.isEmpty()) { - TransactionDAO::updateBankTrExternalId(txId, externalId); - qDebug() << "[PayByCard] Extracted transaction ID:" << externalId; - } else { - qWarning() << "[PayByCard] Could not extract transaction ID from OCR text"; - } + externalId = extractTransactionId(ocrText); } } } else { @@ -394,6 +390,15 @@ void PayByCardScript::makePayment( QThread::msleep(1000); } + if (externalId.isEmpty() && txId != -1) { + externalId = "ozon_" + bankProfilePhone + "_" + QString::number(QDateTime::currentSecsSinceEpoch()); + qDebug() << "[PayByCard] Generated fallback transaction ID:" << externalId; + } + if (!externalId.isEmpty() && txId != -1) { + TransactionDAO::updateBankTrExternalId(txId, externalId); + qDebug() << "[PayByCard] Transaction ID:" << externalId; + } + AdbUtils::goBack(deviceId); QThread::msleep(1000); AdbUtils::goBack(deviceId); diff --git a/android/ozon/PayByCardScript.h b/android/ozon/PayByCardScript.h index c28725c..8e630b0 100644 --- a/android/ozon/PayByCardScript.h +++ b/android/ozon/PayByCardScript.h @@ -29,6 +29,7 @@ private: const QString &deviceId, const QString &packageName, const QString &pinCode, + const QString &bankProfilePhone, int width, int height ); diff --git a/android/ozon/PayByPhoneScript.cpp b/android/ozon/PayByPhoneScript.cpp index c0c26cd..a0c00cf 100644 --- a/android/ozon/PayByPhoneScript.cpp +++ b/android/ozon/PayByPhoneScript.cpp @@ -137,7 +137,7 @@ void PayByPhoneScript::doStart() { xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(adbId, ++m_counter)); } - makePayment(device.adbSerial, app.package, app.pinCode, device.screenWidth, device.screenHeight); + makePayment(device.adbSerial, app.package, app.pinCode, app.phone, device.screenWidth, device.screenHeight); emit finishedWithResult(m_error); } @@ -146,6 +146,7 @@ void PayByPhoneScript::makePayment( const QString &deviceId, const QString &packageName, const QString &pinCode, + const QString &bankProfilePhone, const int width, const int height ) { @@ -464,6 +465,7 @@ void PayByPhoneScript::makePayment( qDebug() << "[PayByPhone] Saved transaction to DB, id:" << txId; // Ищем кнопку "Документы" и достаём ID операции + QString externalId; Node docBtn = xmlScreenParser.findButtonNode("Документы", false); if (!docBtn.isEmpty() && txId != -1) { qDebug() << "[PayByPhone] Tapping 'Документы'..."; @@ -495,13 +497,7 @@ void PayByPhoneScript::makePayment( const QString ocrText = recognizeTextFromImage(screenshot); if (!ocrText.isEmpty()) { qDebug() << "[PayByPhone] OCR result:\n" << ocrText; - const QString externalId = extractTransactionId(ocrText); - if (!externalId.isEmpty()) { - TransactionDAO::updateBankTrExternalId(txId, externalId); - qDebug() << "[PayByPhone] Extracted transaction ID:" << externalId; - } else { - qWarning() << "[PayByPhone] Could not extract transaction ID from OCR text"; - } + externalId = extractTransactionId(ocrText); } } } else { @@ -512,6 +508,15 @@ void PayByPhoneScript::makePayment( QThread::msleep(1000); } + if (externalId.isEmpty() && txId != -1) { + externalId = "ozon_" + bankProfilePhone + "_" + QString::number(QDateTime::currentSecsSinceEpoch()); + qDebug() << "[PayByPhone] Generated fallback transaction ID:" << externalId; + } + if (!externalId.isEmpty() && txId != -1) { + TransactionDAO::updateBankTrExternalId(txId, externalId); + qDebug() << "[PayByPhone] Transaction ID:" << externalId; + } + AdbUtils::goBack(deviceId); QThread::msleep(1000); AdbUtils::goBack(deviceId); diff --git a/android/ozon/PayByPhoneScript.h b/android/ozon/PayByPhoneScript.h index bd6760e..27cd548 100644 --- a/android/ozon/PayByPhoneScript.h +++ b/android/ozon/PayByPhoneScript.h @@ -31,6 +31,7 @@ private: const QString &deviceId, const QString &packageName, const QString &pinCode, + const QString &bankProfilePhone, int width, int height );