style: apply ruff format to payment integrations
CI ruff format --check failed on 13 files. Applied ruff format to bring them in line with project formatting (line wrapping, trailing commas, quote consistency). No functional changes.
This commit is contained in:
+2
-10
@@ -2295,11 +2295,7 @@ class Settings(BaseSettings):
|
||||
return html.escape(self.get_antilopay_sberpay_display_name())
|
||||
|
||||
def is_jupiter_enabled(self) -> bool:
|
||||
return (
|
||||
self.JUPITER_ENABLED
|
||||
and self.JUPITER_TOKEN is not None
|
||||
and self.JUPITER_SECRET is not None
|
||||
)
|
||||
return self.JUPITER_ENABLED and self.JUPITER_TOKEN is not None and self.JUPITER_SECRET is not None
|
||||
|
||||
def get_jupiter_display_name(self) -> str:
|
||||
name = (self.JUPITER_DISPLAY_NAME or '').strip()
|
||||
@@ -2319,11 +2315,7 @@ class Settings(BaseSettings):
|
||||
return html.escape(self.get_jupiter_sbp_display_name())
|
||||
|
||||
def is_donut_enabled(self) -> bool:
|
||||
return (
|
||||
self.DONUT_ENABLED
|
||||
and self.DONUT_TOKEN is not None
|
||||
and self.DONUT_SECRET is not None
|
||||
)
|
||||
return self.DONUT_ENABLED and self.DONUT_TOKEN is not None and self.DONUT_SECRET is not None
|
||||
|
||||
def get_donut_display_name(self) -> str:
|
||||
name = (self.DONUT_DISPLAY_NAME or '').strip()
|
||||
|
||||
@@ -54,9 +54,7 @@ async def get_antilopay_payment_by_order_id(db: AsyncSession, order_id: str) ->
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
|
||||
async def get_antilopay_payment_by_invoice_id(
|
||||
db: AsyncSession, antilopay_payment_id: str
|
||||
) -> AntilopayPayment | None:
|
||||
async def get_antilopay_payment_by_invoice_id(db: AsyncSession, antilopay_payment_id: str) -> AntilopayPayment | None:
|
||||
"""Получает платеж по ID от Antilopay."""
|
||||
result = await db.execute(
|
||||
select(AntilopayPayment).where(AntilopayPayment.antilopay_payment_id == antilopay_payment_id)
|
||||
|
||||
@@ -54,13 +54,9 @@ async def get_donut_payment_by_order_id(db: AsyncSession, order_id: str) -> Donu
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
|
||||
async def get_donut_payment_by_invoice_id(
|
||||
db: AsyncSession, donut_transaction_id: str
|
||||
) -> DonutPayment | None:
|
||||
async def get_donut_payment_by_invoice_id(db: AsyncSession, donut_transaction_id: str) -> DonutPayment | None:
|
||||
"""Получает платёж по transaction_id, выданному Donut."""
|
||||
result = await db.execute(
|
||||
select(DonutPayment).where(DonutPayment.donut_transaction_id == donut_transaction_id)
|
||||
)
|
||||
result = await db.execute(select(DonutPayment).where(DonutPayment.donut_transaction_id == donut_transaction_id))
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
|
||||
|
||||
@@ -54,9 +54,7 @@ async def get_jupiter_payment_by_order_id(db: AsyncSession, order_id: str) -> Ju
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
|
||||
async def get_jupiter_payment_by_invoice_id(
|
||||
db: AsyncSession, jupiter_transaction_id: str
|
||||
) -> JupiterPayment | None:
|
||||
async def get_jupiter_payment_by_invoice_id(db: AsyncSession, jupiter_transaction_id: str) -> JupiterPayment | None:
|
||||
"""Получает платёж по transaction_id, выданному Jupiter."""
|
||||
result = await db.execute(
|
||||
select(JupiterPayment).where(JupiterPayment.jupiter_transaction_id == jupiter_transaction_id)
|
||||
|
||||
@@ -56,9 +56,7 @@ async def get_lava_payment_by_order_id(db: AsyncSession, order_id: str) -> LavaP
|
||||
|
||||
async def get_lava_payment_by_invoice_id(db: AsyncSession, lava_invoice_id: str) -> LavaPayment | None:
|
||||
"""Получает платёж по invoice_id, выданному Lava."""
|
||||
result = await db.execute(
|
||||
select(LavaPayment).where(LavaPayment.lava_invoice_id == lava_invoice_id)
|
||||
)
|
||||
result = await db.execute(select(LavaPayment).where(LavaPayment.lava_invoice_id == lava_invoice_id))
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
|
||||
|
||||
@@ -1478,7 +1478,9 @@ class LavaPayment(Base):
|
||||
return self.status in ['failed', 'expired', 'cancel', 'cancelled', 'amount_mismatch', 'error']
|
||||
|
||||
def __repr__(self) -> str: # pragma: no cover - debug helper
|
||||
return f'<LavaPayment(id={self.id}, order_id={self.order_id}, amount={self.amount_rubles}₽, status={self.status})>'
|
||||
return (
|
||||
f'<LavaPayment(id={self.id}, order_id={self.order_id}, amount={self.amount_rubles}₽, status={self.status})>'
|
||||
)
|
||||
|
||||
|
||||
class PromoGroup(Base):
|
||||
|
||||
@@ -2084,11 +2084,7 @@ def get_payment_methods_keyboard(amount_kopeks: int, language: str = DEFAULT_LAN
|
||||
)
|
||||
has_direct_payment_methods = True
|
||||
|
||||
if (
|
||||
settings.is_lava_enabled()
|
||||
and not settings.is_lava_card_enabled()
|
||||
and not settings.is_lava_sbp_enabled()
|
||||
):
|
||||
if settings.is_lava_enabled() and not settings.is_lava_card_enabled() and not settings.is_lava_sbp_enabled():
|
||||
lava_name = settings.get_lava_display_name()
|
||||
keyboard.append(
|
||||
[
|
||||
|
||||
@@ -199,9 +199,7 @@ class AuraPayService:
|
||||
# Сортируем ключи по алфавиту и конкатенируем значения
|
||||
# None → '' (PHP implode() converts null to empty string, not "None")
|
||||
sorted_keys = sorted(payload.keys())
|
||||
concatenated_values = ''.join(
|
||||
str(payload[key]) if payload[key] is not None else '' for key in sorted_keys
|
||||
)
|
||||
concatenated_values = ''.join(str(payload[key]) if payload[key] is not None else '' for key in sorted_keys)
|
||||
|
||||
expected = hmac.new(
|
||||
self.secret_key.encode('utf-8'),
|
||||
|
||||
@@ -398,9 +398,7 @@ class AntilopayPaymentMixin:
|
||||
)
|
||||
created_transaction = True
|
||||
|
||||
await antilopay_crud.link_antilopay_payment_to_transaction(
|
||||
db, payment=payment, transaction_id=transaction.id
|
||||
)
|
||||
await antilopay_crud.link_antilopay_payment_to_transaction(db, payment=payment, transaction_id=transaction.id)
|
||||
|
||||
should_credit_balance = created_transaction or not balance_already_credited
|
||||
|
||||
|
||||
@@ -115,11 +115,7 @@ class DonutPaymentMixin:
|
||||
|
||||
transaction_id = api_result.get('transaction_id')
|
||||
details = api_result.get('details') or {}
|
||||
payment_url = (
|
||||
api_result.get('redirect_url')
|
||||
or details.get('qrcode_url')
|
||||
or actual_return_url
|
||||
)
|
||||
payment_url = api_result.get('redirect_url') or details.get('qrcode_url') or actual_return_url
|
||||
|
||||
logger.info(
|
||||
'Donut: получен ответ API',
|
||||
@@ -374,9 +370,7 @@ class DonutPaymentMixin:
|
||||
)
|
||||
created_transaction = True
|
||||
|
||||
await donut_crud.link_donut_payment_to_transaction(
|
||||
db, payment=payment, transaction_id=transaction.id
|
||||
)
|
||||
await donut_crud.link_donut_payment_to_transaction(db, payment=payment, transaction_id=transaction.id)
|
||||
|
||||
should_credit_balance = created_transaction or not balance_already_credited
|
||||
|
||||
|
||||
@@ -94,9 +94,7 @@ class JupiterPaymentMixin:
|
||||
callback_url = self._build_jupiter_callback_url()
|
||||
customer_id = str(tg_id) if tg_id != 'guest' else f'guest-{order_id[-6:]}'
|
||||
customer_name = (
|
||||
getattr(user, 'first_name', None)
|
||||
or getattr(user, 'username', None)
|
||||
or settings.JUPITER_FALLBACK_NAME
|
||||
getattr(user, 'first_name', None) or getattr(user, 'username', None) or settings.JUPITER_FALLBACK_NAME
|
||||
)
|
||||
|
||||
api_result = await jupiter_service.create_payment(
|
||||
@@ -366,9 +364,7 @@ class JupiterPaymentMixin:
|
||||
)
|
||||
created_transaction = True
|
||||
|
||||
await jupiter_crud.link_jupiter_payment_to_transaction(
|
||||
db, payment=payment, transaction_id=transaction.id
|
||||
)
|
||||
await jupiter_crud.link_jupiter_payment_to_transaction(db, payment=payment, transaction_id=transaction.id)
|
||||
|
||||
should_credit_balance = created_transaction or not balance_already_credited
|
||||
|
||||
|
||||
@@ -146,9 +146,7 @@ class LavaPaymentMixin:
|
||||
)
|
||||
|
||||
lifetime = settings.LAVA_PAYMENT_LIFETIME_MINUTES
|
||||
expires_at = self._parse_lava_expired(expired_str) or (
|
||||
datetime.now(UTC) + timedelta(minutes=lifetime)
|
||||
)
|
||||
expires_at = self._parse_lava_expired(expired_str) or (datetime.now(UTC) + timedelta(minutes=lifetime))
|
||||
|
||||
lava_crud = import_module('app.database.crud.lava')
|
||||
local_payment = await lava_crud.create_lava_payment(
|
||||
@@ -456,9 +454,7 @@ class LavaPaymentMixin:
|
||||
)
|
||||
created_transaction = True
|
||||
|
||||
await lava_crud.link_lava_payment_to_transaction(
|
||||
db, payment=payment, transaction_id=transaction.id
|
||||
)
|
||||
await lava_crud.link_lava_payment_to_transaction(db, payment=payment, transaction_id=transaction.id)
|
||||
|
||||
should_credit_balance = created_transaction or not balance_already_credited
|
||||
|
||||
|
||||
Vendored
+5
-5
@@ -35,13 +35,15 @@ def _enable_apple_iap(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
monkeypatch.setattr(
|
||||
settings,
|
||||
'APPLE_IAP_PRODUCTS',
|
||||
json.dumps({
|
||||
json.dumps(
|
||||
{
|
||||
'com.bitnet.vpnclient.topup.100': 10_000,
|
||||
'com.bitnet.vpnclient.topup.300': 30_000,
|
||||
'com.bitnet.vpnclient.topup.500': 50_000,
|
||||
'com.bitnet.vpnclient.topup.1000': 100_000,
|
||||
'com.bitnet.vpnclient.topup.3000': 300_000,
|
||||
}),
|
||||
}
|
||||
),
|
||||
raising=False,
|
||||
)
|
||||
|
||||
@@ -297,9 +299,7 @@ class TestVerifyAndDecodeJWS:
|
||||
|
||||
def test_rejects_empty_x5c(self) -> None:
|
||||
service = AppleIAPService()
|
||||
header = (
|
||||
base64.urlsafe_b64encode(json.dumps({'alg': 'ES256', 'x5c': []}).encode()).rstrip(b'=').decode()
|
||||
)
|
||||
header = base64.urlsafe_b64encode(json.dumps({'alg': 'ES256', 'x5c': []}).encode()).rstrip(b'=').decode()
|
||||
payload = base64.urlsafe_b64encode(b'{}').rstrip(b'=').decode()
|
||||
sig = base64.urlsafe_b64encode(b'sig').rstrip(b'=').decode()
|
||||
assert service._verify_and_decode_jws(f'{header}.{payload}.{sig}') is None
|
||||
|
||||
Reference in New Issue
Block a user