Добавлен CI, добавлена отправка письма о получении оплаты, добавлен order_id в success_url
Deploy / deploy (push) Successful in 1m22s

This commit is contained in:
Раис Юсупалиев
2026-05-27 23:29:51 +03:00
parent 50124fb2c9
commit ba8612d28e
25 changed files with 572 additions and 158 deletions
@@ -153,9 +153,9 @@ class CDEKClient:
raise CDEKClientError("CDEK tariff request failed unexpectedly.")
async def register_order(
self, request: InitPaymentRequest
self, request: InitPaymentRequest, order_uuid: str
) -> CDEKOrderRegistrationResult:
payload = map_cdek_order_request(request)
payload = map_cdek_order_request(request, order_uuid)
for attempt in range(self._retry_attempts + 1):
try:
token = await self._auth_client.get_access_token()
@@ -490,9 +490,9 @@ class CDEKProvider(DeliveryProvider):
) from exc
async def register_order(
self, request: InitPaymentRequest
self, request: InitPaymentRequest, order_uuid: str
) -> CDEKOrderRegistrationResult:
return await self._client.register_order(request)
return await self._client.register_order(request, order_uuid)
async def get_order(self, cdek_order_uuid: str) -> CDEKOrderInfo:
return await self._client.get_order(cdek_order_uuid)
@@ -42,9 +42,11 @@ class CDEKWaybillInfo:
url: str | None
def map_cdek_order_request(request: InitPaymentRequest) -> dict[str, Any]:
def map_cdek_order_request(
request: InitPaymentRequest, order_uuid: str
) -> dict[str, Any]:
payload: dict[str, Any] = {
"number": request.order_uuid,
"number": order_uuid,
"type": 2,
"tariff_code": request.system_data.tariff.tariff_code,
"print": _CDEK_WAYBILL_PRINT_TYPE,
@@ -52,7 +54,7 @@ def map_cdek_order_request(request: InitPaymentRequest) -> dict[str, Any]:
"recipient": _map_party(request.receiver_contact),
"from_location": _map_location(request.sender_address),
"to_location": _map_location(request.receiver_address),
"packages": [_map_package(request)],
"packages": [_map_package(request, order_uuid)],
}
if request.content.description:
payload["comment"] = request.content.description
@@ -280,12 +282,12 @@ def _map_location(address: Address) -> dict[str, Any]:
}
def _map_package(request: InitPaymentRequest) -> dict[str, Any]:
def _map_package(request: InitPaymentRequest, order_uuid: str) -> dict[str, Any]:
system_data: SystemData = request.system_data
weight_grams = kilograms_string_to_grams(request.system_data.weight)
description = request.content.description or request.order_uuid
description = request.content.description or order_uuid
package: dict[str, Any] = {
"number": request.order_uuid,
"number": order_uuid,
"weight": weight_grams,
"comment": description,
}
+11 -10
View File
@@ -56,8 +56,8 @@ class SMTPEmailSender:
to: str,
subject: str,
body: str,
attachment_bytes: bytes,
attachment_filename: str,
attachment_bytes: bytes | None = None,
attachment_filename: str | None = None,
) -> None:
message = self._build_message(
to=to,
@@ -95,20 +95,21 @@ class SMTPEmailSender:
to: str,
subject: str,
body: str,
attachment_bytes: bytes,
attachment_filename: str,
attachment_bytes: bytes | None = None,
attachment_filename: str | None = None,
) -> EmailMessage:
message = EmailMessage()
message["From"] = self._from_address
message["To"] = to
message["Subject"] = subject
message.set_content(body)
message.add_attachment(
attachment_bytes,
maintype="application",
subtype="pdf",
filename=attachment_filename,
)
if attachment_bytes is not None and attachment_filename is not None:
message.add_attachment(
attachment_bytes,
maintype="application",
subtype="pdf",
filename=attachment_filename,
)
return message
+1 -1
View File
@@ -137,7 +137,7 @@ class TBankAdapter:
"Amount": amount_kopecks,
"OrderId": order_uuid,
"NotificationURL": self._notification_url,
"SuccessURL": self._success_url,
"SuccessURL": f"{self._success_url}/{order_uuid}",
}
payload["Token"] = _build_tbank_token(payload, password=self._password)
return payload