Добавлен адаптер к tbank и формирование ссылки на оплату
This commit is contained in:
@@ -17,7 +17,7 @@ from app.adapters.delivery_providers.cdek.order_mapper import (
|
||||
)
|
||||
from app.cities import cities_map
|
||||
from app.config import AdapterConfig
|
||||
from app.schemas.order import OrderCreateRequest, OrderCreateResponse
|
||||
from app.schemas.payment import InitPaymentRequest
|
||||
from app.schemas.request import DeliveryCalculationRequest
|
||||
from app.schemas.response import DeliveryPrice
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -94,7 +94,7 @@ class CDEKClient:
|
||||
|
||||
raise CDEKClientError("CDEK tariff request failed unexpectedly.")
|
||||
|
||||
async def register_order(self, request: OrderCreateRequest) -> OrderCreateResponse:
|
||||
async def register_order(self, request: InitPaymentRequest) -> str:
|
||||
payload = map_cdek_order_request(request)
|
||||
for attempt in range(self._retry_attempts + 1):
|
||||
try:
|
||||
@@ -241,5 +241,5 @@ class CDEKProvider(DeliveryProvider):
|
||||
raw_payload = await self._client.get_raw_price(request)
|
||||
return map_cdek_response(raw_payload)
|
||||
|
||||
async def register_order(self, request: OrderCreateRequest) -> OrderCreateResponse:
|
||||
async def register_order(self, request: InitPaymentRequest) -> str:
|
||||
return await self._client.register_order(request)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user