From 64125149becb20e7bd3a2395fa80c8b255c30bce Mon Sep 17 00:00:00 2001 From: Noloquideus Date: Wed, 22 Apr 2026 12:43:54 +0300 Subject: [PATCH] feat: add logs in order router --- src/presentation/routing/order.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/presentation/routing/order.py b/src/presentation/routing/order.py index f1fb30e..8b58cb8 100644 --- a/src/presentation/routing/order.py +++ b/src/presentation/routing/order.py @@ -55,6 +55,14 @@ async def create_order( 'Content-Type': 'application/json', 'Accept': 'application/json', } + logger.info(json.dumps({ + 'event': 'itpay_payment_create_request', + 'client_payment_id': client_payment_id, + 'amount_usdt': str(body.amount_usdt), + 'amount_rub': amount_str, + 'url': url, + 'payload': payload, + }, ensure_ascii=False, default=str)) try: timeout = aiohttp.ClientTimeout(total=30) async with aiohttp.ClientSession(timeout=timeout) as session: @@ -65,6 +73,12 @@ async def create_order( response_json = json.loads(response_text) except json.JSONDecodeError: response_json = {'raw': response_text} + logger.info(json.dumps({ + 'event': 'itpay_payment_create_response', + 'client_payment_id': client_payment_id, + 'status': resp.status, + 'response': response_json, + }, ensure_ascii=False, default=str)) if resp.status >= 400: logger.warning(f'itpay payments POST {resp.status} {response_text}') raise ApplicationException(status_code=502, message='Payment provider error') @@ -93,6 +107,13 @@ async def create_order( async def itpay_webhook(request: Request, logger: ILogger = Depends(get_logger)) -> ORJSONResponse: raw = await request.body() ct = (request.headers.get('content-type') or '').lower() + logger.info(json.dumps({ + 'event': 'itpay_webhook_received', + 'method': request.method, + 'url': str(request.url), + 'content_type': ct, + 'body_size': len(raw), + }, ensure_ascii=False, default=str)) if 'application/json' in ct: try: parsed = json.loads(raw.decode('utf-8')) @@ -104,10 +125,12 @@ async def itpay_webhook(request: Request, logger: ILogger = Depends(get_logger)) parsed = {k: (vals[0] if len(vals) == 1 else vals) for k, vals in qs.items()} else: parsed = raw.decode('utf-8', errors='replace') + headers = {k: v for k, v in request.headers.items() if k.lower() not in {'authorization', 'cookie'}} log_payload = { + 'event': 'itpay_webhook_payload', 'method': request.method, 'url': str(request.url), - 'headers': {k: v for k, v in request.headers.items()}, + 'headers': headers, 'body': parsed, } logger.info(json.dumps(log_payload, ensure_ascii=False, default=str))