From 93da7f52a56e2f4926cf02090853b9acc46b2e8f Mon Sep 17 00:00:00 2001 From: trnsmkotik Date: Mon, 6 Apr 2026 19:53:05 +0700 Subject: [PATCH] Fix for windows --- android/ozon/GetLastTransactionsScript.cpp | 11 +++++++++-- android/ozon/PayByCardScript.cpp | 12 +++++++++--- android/ozon/PayByPhoneScript.cpp | 12 +++++++++--- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/android/ozon/GetLastTransactionsScript.cpp b/android/ozon/GetLastTransactionsScript.cpp index 8694bfd..73a11a4 100644 --- a/android/ozon/GetLastTransactionsScript.cpp +++ b/android/ozon/GetLastTransactionsScript.cpp @@ -56,8 +56,15 @@ static QString recognizeTextFromImage(const QByteArray &pngData) { } static QString extractTransactionId(const QString &ocrText) { - QRegularExpression reId(R"(\S{1,3}\s+операции\s*=?\s*([A-Za-zА-Яа-яЁё0-9]+))"); - if (auto m = reId.match(ocrText); m.hasMatch()) return m.captured(1); + // ID может быть на одной строке: "ID операции B606513042211200000120011700501" + // или с дефисами: "ID операции po-3140eb01-002c-5000-8000-033396b637e1" + // или разбит на 2 строки: "ID ... po-3140eb01-002c-5000-8000-033396b\n ... 637e1" + QRegularExpression reId(R"(ID\s+операции\s*=?\s*([A-Za-zА-Яа-яЁё0-9\-]+(?:\s+[A-Za-zА-Яа-яЁё0-9\-]+)?))"); + if (auto m = reId.match(ocrText); m.hasMatch()) { + QString id = m.captured(1); + id.remove(QRegularExpression(R"(\s+)")); + return id; + } QRegularExpression reRef(R"(№\s*(Ф-[\d-]+))"); if (auto m = reRef.match(ocrText); m.hasMatch()) return m.captured(1); diff --git a/android/ozon/PayByCardScript.cpp b/android/ozon/PayByCardScript.cpp index 60a28ca..1e0e1d3 100644 --- a/android/ozon/PayByCardScript.cpp +++ b/android/ozon/PayByCardScript.cpp @@ -46,9 +46,15 @@ static QString recognizeTextFromImage(const QByteArray &pngData) { } static QString extractTransactionId(const QString &ocrText) { - // "ID операции A60130542076330K0000040011670301" или "ID операции = Аб60650..." - QRegularExpression reId(R"(ID\s+операции\s*=?\s*([A-Za-zА-Яа-я0-9]+))"); - if (auto m = reId.match(ocrText); m.hasMatch()) return m.captured(1); + // "ID операции B606513042211200000120011700501" + // "ID операции po-3140eb01-002c-5000-8000-033396b637e1" + // или разбит на 2 строки + QRegularExpression reId(R"(ID\s+операции\s*=?\s*([A-Za-zА-Яа-яЁё0-9\-]+(?:\s+[A-Za-zА-Яа-яЁё0-9\-]+)?))"); + if (auto m = reId.match(ocrText); m.hasMatch()) { + QString id = m.captured(1); + id.remove(QRegularExpression(R"(\s+)")); + return id; + } // "№ Ф-2026-25235663" QRegularExpression reRef(R"(№\s*(Ф-[\d-]+))"); diff --git a/android/ozon/PayByPhoneScript.cpp b/android/ozon/PayByPhoneScript.cpp index 6cce510..a8b7055 100644 --- a/android/ozon/PayByPhoneScript.cpp +++ b/android/ozon/PayByPhoneScript.cpp @@ -46,9 +46,15 @@ static QString recognizeTextFromImage(const QByteArray &pngData) { } static QString extractTransactionId(const QString &ocrText) { - // "ID операции A60130542076330K0000040011670301" или "ID операции = Аб60650..." - QRegularExpression reId(R"(ID\s+операции\s*=?\s*([A-Za-zА-Яа-я0-9]+))"); - if (auto m = reId.match(ocrText); m.hasMatch()) return m.captured(1); + // "ID операции B606513042211200000120011700501" + // "ID операции po-3140eb01-002c-5000-8000-033396b637e1" + // или разбит на 2 строки + QRegularExpression reId(R"(ID\s+операции\s*=?\s*([A-Za-zА-Яа-яЁё0-9\-]+(?:\s+[A-Za-zА-Яа-яЁё0-9\-]+)?))"); + if (auto m = reId.match(ocrText); m.hasMatch()) { + QString id = m.captured(1); + id.remove(QRegularExpression(R"(\s+)")); + return id; + } // "№ Ф-2026-25235663" QRegularExpression reRef(R"(№\s*(Ф-[\d-]+))");