fix: update recept
This commit is contained in:
@@ -49,6 +49,21 @@ class CreatePaymentCloudkassirCommand:
|
||||
email = str(user.email or '').strip()
|
||||
if not email:
|
||||
raise ApplicationException(status_code=400, message='User email missing')
|
||||
supplier_name = ' '.join(
|
||||
part
|
||||
for part in (
|
||||
str(user.last_name or '').strip(),
|
||||
str(user.first_name or '').strip(),
|
||||
str(user.middle_name or '').strip(),
|
||||
)
|
||||
if part
|
||||
)
|
||||
if not supplier_name:
|
||||
raise ApplicationException(status_code=400, message='User full name missing')
|
||||
supplier_inn = str(user.inn or '').strip()
|
||||
if not supplier_inn:
|
||||
raise ApplicationException(status_code=400, message='User inn missing')
|
||||
phone = str(user.phone or '').strip() or None
|
||||
|
||||
paid_total = _parse_money(payment.amount)
|
||||
if paid_total is None:
|
||||
@@ -100,6 +115,9 @@ class CreatePaymentCloudkassirCommand:
|
||||
total_amount=total_amount,
|
||||
principal_amount=principal_amount,
|
||||
service_fee=service_fee,
|
||||
phone=phone,
|
||||
supplier_name=supplier_name,
|
||||
supplier_inn=supplier_inn,
|
||||
request_id=str(ULID()),
|
||||
)
|
||||
receipt_model = receipt_response.get('Model')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from typing import Protocol, Optional, Callable
|
||||
from typing import Any,Callable,Optional,Protocol
|
||||
from src.application.domain.enums.log_format import LogFormat
|
||||
from src.application.domain.enums.log_level import LogLevel
|
||||
|
||||
@@ -43,26 +43,26 @@ class ILogger(Protocol):
|
||||
"""Get current service instance id"""
|
||||
...
|
||||
|
||||
def debug(self, message: str) -> None:
|
||||
def debug(self, message: Any) -> None:
|
||||
"""Log debug message"""
|
||||
...
|
||||
|
||||
def info(self, message: str) -> None:
|
||||
def info(self, message: Any) -> None:
|
||||
"""Log info message"""
|
||||
...
|
||||
|
||||
def warning(self, message: str) -> None:
|
||||
def warning(self, message: Any) -> None:
|
||||
"""Log warning message"""
|
||||
...
|
||||
|
||||
def error(self, message: str) -> None:
|
||||
def error(self, message: Any) -> None:
|
||||
"""Log error message"""
|
||||
...
|
||||
|
||||
def critical(self, message: str) -> None:
|
||||
def critical(self, message: Any) -> None:
|
||||
"""Log critical message"""
|
||||
...
|
||||
|
||||
def exception(self, message: str) -> None:
|
||||
def exception(self, message: Any) -> None:
|
||||
"""Log exception with traceback"""
|
||||
...
|
||||
@@ -15,7 +15,8 @@ class IReceipt(ABC):
|
||||
principal_amount: Decimal,
|
||||
service_fee: Decimal,
|
||||
phone: str | None = None,
|
||||
customer_inn: str = '',
|
||||
supplier_name: str = '',
|
||||
supplier_inn: str = '',
|
||||
success_url: str | None = None,
|
||||
fail_url: str | None = None,
|
||||
request_id: str | None = None,
|
||||
|
||||
@@ -41,7 +41,8 @@ class ClaudeKassirClient(IReceipt):
|
||||
principal_amount: Decimal,
|
||||
service_fee: Decimal,
|
||||
phone: str | None = None,
|
||||
customer_inn: str = '',
|
||||
supplier_name: str = '',
|
||||
supplier_inn: str = '',
|
||||
success_url: str | None = None,
|
||||
fail_url: str | None = None,
|
||||
request_id: str | None = None,
|
||||
@@ -68,15 +69,15 @@ class ClaudeKassirClient(IReceipt):
|
||||
'amount': float(principal),
|
||||
'vat': 0,
|
||||
'method': 4,
|
||||
'object': 1,
|
||||
'object': 4,
|
||||
'measurement_unit': 'шт',
|
||||
'agent_info': {
|
||||
'type': 6,
|
||||
},
|
||||
'supplier_info': {
|
||||
'name': 'Принципал',
|
||||
'phones': [],
|
||||
'inn': self._inn,
|
||||
'phones': [phone] if phone else [],
|
||||
'name': supplier_name,
|
||||
'inn': supplier_inn,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -99,7 +100,7 @@ class ClaudeKassirClient(IReceipt):
|
||||
'email': email,
|
||||
'phone': phone,
|
||||
},
|
||||
'Email': 'company@elcsa.ru',
|
||||
'Email': email,
|
||||
'SuccessUrl': success_url or self._success_url,
|
||||
'FailUrl': fail_url or self._fail_url,
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ class Logger(ILogger):
|
||||
def clear_trace_id(self) -> None:
|
||||
trace_id_var.set("N/A")
|
||||
|
||||
def _prepare_log_data(self, level: LogLevel, message: str) -> dict[str, Any]:
|
||||
def _prepare_log_data(self, level: LogLevel, message: Any) -> dict[str, Any]:
|
||||
current_frame = inspect.currentframe()
|
||||
if (
|
||||
current_frame
|
||||
@@ -75,21 +75,24 @@ class Logger(ILogger):
|
||||
line_number = 0
|
||||
|
||||
log_data = {
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"level": level.name,
|
||||
"instance_id": self.instance_id,
|
||||
"file": filename,
|
||||
"line": line_number,
|
||||
"trace_id": trace_id_var.get(),
|
||||
"message": message,
|
||||
'timestamp': datetime.now().isoformat(),
|
||||
'level': level.name,
|
||||
'instance_id': self.instance_id,
|
||||
'file': filename,
|
||||
'line': line_number,
|
||||
'trace_id': trace_id_var.get(),
|
||||
}
|
||||
if isinstance(message, dict):
|
||||
log_data.update(message)
|
||||
else:
|
||||
log_data['message'] = message
|
||||
|
||||
if level == LogLevel.EXCEPTION:
|
||||
log_data["exception"] = traceback.format_exc()
|
||||
log_data['exception'] = traceback.format_exc()
|
||||
|
||||
return log_data
|
||||
|
||||
def _log(self, level: LogLevel, message: str) -> None:
|
||||
def _log(self, level: LogLevel, message: Any) -> None:
|
||||
if level >= self.min_level:
|
||||
log_data = self._prepare_log_data(level, message)
|
||||
|
||||
@@ -100,9 +103,9 @@ class Logger(ILogger):
|
||||
f"{log_data['timestamp']} - {log_data['level']} - "
|
||||
f"{log_data['instance_id']} - {log_data['trace_id']} - "
|
||||
f"{log_data['file']}:{log_data['line']} - "
|
||||
f"{log_data['message']}"
|
||||
f"{log_data.get('message', log_data.get('event', ''))}"
|
||||
)
|
||||
if "exception" in log_data:
|
||||
if 'exception' in log_data:
|
||||
log_message += f"\nTraceback:\n{log_data['exception']}"
|
||||
|
||||
self._write(log_message)
|
||||
@@ -110,20 +113,20 @@ class Logger(ILogger):
|
||||
def _write(self, message: str) -> None:
|
||||
sys.stdout.write(message + "\n")
|
||||
|
||||
def debug(self, message: str) -> None:
|
||||
def debug(self, message: Any) -> None:
|
||||
self._log(LogLevel.DEBUG, message)
|
||||
|
||||
def info(self, message: str) -> None:
|
||||
def info(self, message: Any) -> None:
|
||||
self._log(LogLevel.INFO, message)
|
||||
|
||||
def warning(self, message: str) -> None:
|
||||
def warning(self, message: Any) -> None:
|
||||
self._log(LogLevel.WARNING, message)
|
||||
|
||||
def error(self, message: str) -> None:
|
||||
def error(self, message: Any) -> None:
|
||||
self._log(LogLevel.ERROR, message)
|
||||
|
||||
def critical(self, message: str) -> None:
|
||||
def critical(self, message: Any) -> None:
|
||||
self._log(LogLevel.CRITICAL, message)
|
||||
|
||||
def exception(self, message: str) -> None:
|
||||
def exception(self, message: Any) -> None:
|
||||
self._log(LogLevel.EXCEPTION, message)
|
||||
@@ -1,5 +1,4 @@
|
||||
from fastapi import Depends
|
||||
import orjson
|
||||
from faststream.rabbit.fastapi import RabbitMessage,RabbitRouter
|
||||
from pydantic import BaseModel
|
||||
from src.application.contracts import ILogger
|
||||
@@ -28,12 +27,12 @@ async def crypto_transfer_completed_handler(
|
||||
token=trace_id_var.set(trace_id)
|
||||
try:
|
||||
payload=msg_body.model_dump(mode='json')
|
||||
logger.info(orjson.dumps({
|
||||
logger.info({
|
||||
'event':'crypto_transfer_completed_received',
|
||||
'payload':payload,
|
||||
'rabbit_message_id':message.message_id,
|
||||
'rabbit_correlation_id':message.correlation_id,
|
||||
},default=str).decode())
|
||||
})
|
||||
finally:
|
||||
trace_id_var.reset(token)
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ async def create_order(
|
||||
'itpay_id': o.itpay_id,
|
||||
'order_status': o.status.value if o.status is not None else None,
|
||||
}
|
||||
logger.info(orjson.dumps(log_ids, default=str).decode())
|
||||
logger.info(log_ids)
|
||||
return ORJSONResponse(content=content, status_code=http_code)
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ async def itpay_webhook(
|
||||
'payment_status': status,
|
||||
'itpay_metadata': data.get('metadata'),
|
||||
}
|
||||
logger.info(orjson.dumps(log_payload, default=str).decode())
|
||||
logger.info(log_payload)
|
||||
if status == 'completed':
|
||||
payment = ItpayPaymentData.model_validate(data)
|
||||
await payment_command(payment)
|
||||
|
||||
Reference in New Issue
Block a user