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:
@@ -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')
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user