fix: correct RioPay API header case and remove undocumented fields

Header was 'x-api-token' but RioPay API expects 'X-Api-Token'
(case-sensitive check on their side), causing 403 Invalid API token.

Also removed undocumented 'currency' and 'failUrl' fields from
create_order payload per official RioPay API docs.
This commit is contained in:
Fringg
2026-03-18 17:00:56 +03:00
parent aec01ce0d4
commit 1a87d438fe
2 changed files with 2 additions and 10 deletions
-3
View File
@@ -87,7 +87,6 @@ class RioPayPaymentMixin:
# Генерируем уникальный order_id с telegram_id для удобного поиска
order_id = f'rp{tg_id}_{uuid.uuid4().hex[:6]}'
amount_rubles = amount_kopeks / 100
currency = settings.RIOPAY_CURRENCY
# Срок действия платежа (1 час по умолчанию)
expires_at = datetime.now(UTC) + timedelta(hours=1)
@@ -105,11 +104,9 @@ class RioPayPaymentMixin:
# Используем API для создания заказа
result = await riopay_service.create_order(
amount=amount_rubles,
currency=currency,
external_id=order_id,
purpose=description,
success_url=success_url or settings.RIOPAY_SUCCESS_URL,
fail_url=fail_url or settings.RIOPAY_FAIL_URL,
)
payment_url = result.get('paymentLink')
+2 -7
View File
@@ -45,7 +45,7 @@ class RioPayService:
def _get_headers(self) -> dict[str, str]:
"""Формирует заголовки для API запросов."""
return {
'x-api-token': self.api_token,
'X-Api-Token': self.api_token,
'Content-Type': 'application/json',
}
@@ -67,11 +67,10 @@ class RioPayService:
self,
*,
amount: float,
currency: str = 'RUB',
external_id: str,
purpose: str = 'Пополнение баланса',
success_url: str | None = None,
fail_url: str | None = None,
) -> dict[str, Any]:
"""
Создает заказ через API RioPay.
@@ -82,21 +81,17 @@ class RioPayService:
"""
payload: dict[str, Any] = {
'amount': str(amount),
'currency': currency,
'externalId': external_id,
'purpose': purpose,
}
if success_url:
payload['successUrl'] = success_url
if fail_url:
payload['failUrl'] = fail_url
logger.info(
'RioPay API create_order',
external_id=external_id,
amount=amount,
currency=currency,
)
try: