feat: add logs in order router

This commit is contained in:
2026-04-22 12:43:54 +03:00
parent 814ba9f318
commit 64125149be

View File

@@ -55,6 +55,14 @@ async def create_order(
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Accept': '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: try:
timeout = aiohttp.ClientTimeout(total=30) timeout = aiohttp.ClientTimeout(total=30)
async with aiohttp.ClientSession(timeout=timeout) as session: async with aiohttp.ClientSession(timeout=timeout) as session:
@@ -65,6 +73,12 @@ async def create_order(
response_json = json.loads(response_text) response_json = json.loads(response_text)
except json.JSONDecodeError: except json.JSONDecodeError:
response_json = {'raw': response_text} 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: if resp.status >= 400:
logger.warning(f'itpay payments POST {resp.status} {response_text}') logger.warning(f'itpay payments POST {resp.status} {response_text}')
raise ApplicationException(status_code=502, message='Payment provider error') 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: async def itpay_webhook(request: Request, logger: ILogger = Depends(get_logger)) -> ORJSONResponse:
raw = await request.body() raw = await request.body()
ct = (request.headers.get('content-type') or '').lower() 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: if 'application/json' in ct:
try: try:
parsed = json.loads(raw.decode('utf-8')) 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()} parsed = {k: (vals[0] if len(vals) == 1 else vals) for k, vals in qs.items()}
else: else:
parsed = raw.decode('utf-8', errors='replace') 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 = { log_payload = {
'event': 'itpay_webhook_payload',
'method': request.method, 'method': request.method,
'url': str(request.url), 'url': str(request.url),
'headers': {k: v for k, v in request.headers.items()}, 'headers': headers,
'body': parsed, 'body': parsed,
} }
logger.info(json.dumps(log_payload, ensure_ascii=False, default=str)) logger.info(json.dumps(log_payload, ensure_ascii=False, default=str))