Добавлен адаптер к tbank и формирование ссылки на оплату

This commit is contained in:
Раис Юсупалиев
2026-04-12 18:56:41 +03:00
parent ab0b66e1c2
commit 2b201a08be
34 changed files with 1322 additions and 268 deletions
@@ -2,11 +2,10 @@
from typing import Any
from app.schemas.order import (
OrderCreateRequest,
OrderCreateResponse,
OrderPackage,
OrderParty,
from app.schemas.payment import (
InitPaymentRequest,
PaymentPackage,
PaymentParty,
)
@@ -14,7 +13,7 @@ class CDEKOrderMappingError(ValueError):
"""Raised when CDEK order payload cannot be mapped."""
def map_cdek_order_request(request: OrderCreateRequest) -> dict[str, Any]:
def map_cdek_order_request(request: InitPaymentRequest) -> dict[str, Any]:
payload: dict[str, Any] = {
"type": request.type,
"tariff_code": request.tariff_code,
@@ -33,7 +32,7 @@ def map_cdek_order_request(request: OrderCreateRequest) -> dict[str, Any]:
return payload
def map_cdek_order_response(payload: dict[str, Any]) -> OrderCreateResponse:
def map_cdek_order_response(payload: dict[str, Any]) -> str:
entity = payload.get("entity")
if not isinstance(entity, dict):
raise CDEKOrderMappingError("CDEK order response must include entity object.")
@@ -42,10 +41,10 @@ def map_cdek_order_response(payload: dict[str, Any]) -> OrderCreateResponse:
if not isinstance(order_uuid, str) or not order_uuid:
raise CDEKOrderMappingError("CDEK order response must include entity.uuid.")
return OrderCreateResponse(provider="cdek", order_uuid=order_uuid)
return order_uuid
def _map_order_party(party: OrderParty) -> dict[str, Any]:
def _map_order_party(party: PaymentParty) -> dict[str, Any]:
return {
"name": party.name,
"email": party.email,
@@ -53,7 +52,7 @@ def _map_order_party(party: OrderParty) -> dict[str, Any]:
}
def _map_order_package(package: OrderPackage) -> dict[str, Any]:
def _map_order_package(package: PaymentPackage) -> dict[str, Any]:
payload = package.model_dump(mode="python", exclude_none=True)
payload["weight"] = package.weight * 1000
return payload