From e85c40f8cdca1e3392da06f6539f0043f923b731 Mon Sep 17 00:00:00 2001 From: Fringg Date: Mon, 4 May 2026 05:54:11 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20apple=20refund=20handler=20=E2=80=94=20l?= =?UTF-8?q?ock=20apple=5Ftransactions=20row=20to=20prevent=20double=20dedu?= =?UTF-8?q?ction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/external/webhook_server.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/external/webhook_server.py b/app/external/webhook_server.py index 969168db..d9446456 100644 --- a/app/external/webhook_server.py +++ b/app/external/webhook_server.py @@ -601,7 +601,6 @@ class WebhookServer: product_id = txn_info.get('productId', '') from app.database.crud.apple_iap import ( - get_apple_transaction_by_transaction_id, mark_apple_transaction_refunded, ) from app.database.crud.user import lock_user_for_pricing @@ -611,10 +610,12 @@ class WebhookServer: lookup_id = original_txn_id or apple_txn_id async with AsyncSessionLocal() as db: - apple_txn = await get_apple_transaction_by_transaction_id(db, lookup_id) + from app.database.crud.apple_iap import get_apple_transaction_by_transaction_id_for_update + + apple_txn = await get_apple_transaction_by_transaction_id_for_update(db, lookup_id) if not apple_txn: # Try the other ID - apple_txn = await get_apple_transaction_by_transaction_id(db, apple_txn_id) + apple_txn = await get_apple_transaction_by_transaction_id_for_update(db, apple_txn_id) if not apple_txn: logger.warning(