Merge pull request #1629 from Fr1ngg/l1utns-bedolaga/fix-pal24-payment-status-error

Fix Pal24 payment status retrieval crash
This commit is contained in:
Egor
2025-10-31 21:17:57 +03:00
committed by GitHub
2 changed files with 20 additions and 0 deletions

View File

@@ -83,6 +83,12 @@ class Pal24Service:
logger.debug("Запрашиваем статус Pal24 платежа %s", payment_id)
return await self.client.get_payment_status(payment_id)
async def get_bill_payments(self, bill_id: str) -> Dict[str, Any]:
"""Возвращает список платежей, связанных со счетом."""
logger.debug("Запрашиваем платежи Pal24 счёта %s", bill_id)
return await self.client.get_bill_payments(bill_id)
@staticmethod
def parse_postback(payload: Dict[str, Any]) -> Dict[str, Any]:
required_fields = ["InvId", "OutSum", "Status", "SignatureValue"]

View File

@@ -42,6 +42,9 @@ class StubPal24Client:
async def get_payment_status(self, payment_id: str) -> Dict[str, Any]:
return {"id": payment_id, "status": "SUCCESS"}
async def get_bill_payments(self, bill_id: str) -> Dict[str, Any]:
return {"id": bill_id, "payments": [{"id": "PAY-1"}]}
def _enable_pal24(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setattr(type(settings), "is_pal24_enabled", lambda self: True, raising=False)
@@ -96,6 +99,17 @@ async def test_create_bill_requires_configuration(monkeypatch: pytest.MonkeyPatc
)
@pytest.mark.anyio("asyncio")
async def test_get_bill_payments(monkeypatch: pytest.MonkeyPatch) -> None:
_enable_pal24(monkeypatch)
client = StubPal24Client()
service = Pal24Service(client)
result = await service.get_bill_payments("BILL42")
assert result == {"id": "BILL42", "payments": [{"id": "PAY-1"}]}
def test_parse_postback_success(monkeypatch: pytest.MonkeyPatch) -> None:
_enable_pal24(monkeypatch)
sig = Pal24Client.calculate_signature("100.00", "INV1", api_token="sigsecret")