diff --git a/api/routes/pally.py b/api/routes/pally.py
index 10744ad..6e1805e 100644
--- a/api/routes/pally.py
+++ b/api/routes/pally.py
@@ -34,7 +34,7 @@ async def pally_callback(
bot: Bot = Depends(get_bot),
deps: APIDependenciesDTO = Depends(get_deps),
):
- oid = InvId.removeprefix("payment-")
+ oid = custom or ""
raw_string = f"{OutSum}:{InvId}:{settings.pally_token}"
expected_signature = hashlib.md5(raw_string.encode("utf-8")).hexdigest().upper()
@@ -49,7 +49,7 @@ async def pally_callback(
logger.info("Received successfully paid bill %s", TrsId)
if not oid.isdigit():
- logger.critical("Invalid InvId format for TrsId %s: %s", TrsId, InvId)
+ logger.critical("Invalid custom field format for TrsId %s", TrsId)
return "OK"
bill = await deps.bills_repository.get_bill_by_id(session, int(oid))
diff --git a/bot/texts.py b/bot/texts.py
index d1a71df..b62bf73 100644
--- a/bot/texts.py
+++ b/bot/texts.py
@@ -174,17 +174,15 @@ REFERALS_MENU = (
# ОФОРМЛЕНИЕ ПОДПИСКИ
# ============================================================
-SUBSCRIPTION_DEVICE_SELECTOR = (
- f"{MALENIA_QUESTION} Сколько устройств вы хотите подключить?\n\nЦена: {{price}}₽"
-)
+SUBSCRIPTION_DEVICE_SELECTOR = f"{MALENIA_QUESTION} Сколько устройств вы хотите подключить?\n\nЦена: {{price}}₽"
-SUBSCRIPTION_DURATION_SELECTOR = f"{MALENIA_QUESTION} На какой срок хотите оформить подписку?\n\nИтого: {{price}}₽ (скидка: {{discount}}%)"
+SUBSCRIPTION_DURATION_SELECTOR = (
+ f"{MALENIA_QUESTION} На какой срок хотите оформить подписку?\n\nИтого: {{price}}₽ (скидка: {{discount}}%)"
+)
WHITELISTS_ALREADY_ON = "Белые списки уже активны."
-CHECKOUT_PAYMENT_CHOICE = (
- f"{MALENIA_BANK} Пополнение баланса:\n\n❓ Выберите способ оплаты:"
-)
+CHECKOUT_PAYMENT_CHOICE = f"{MALENIA_BANK} Пополнение баланса:\n\n❓ Выберите способ оплаты:"
# ============================================================
@@ -205,13 +203,13 @@ BILL_CREATED = _BILL_TEMPLATE + _DIVIDER + _BILL_LINK
INSUFFICIENT_FUNDS = f"{MALENIA_CROSS} Недостаточно средств для проведения операции.\n\n💰 Текущий баланс: {{balance}}₽\n💸 Требуется: {{amount}}₽\n\n{MALENIA_CARD} Пополните баланс на {{diff}}₽"
-SUCCESSFULLY_CREATED_SUBSCRIPTION = f"{MALENIA_HEART} Ваша подписка успешно оплачена! Ссылка на добавления доступна в главном меню."
+SUCCESSFULLY_CREATED_SUBSCRIPTION = (
+ f"{MALENIA_HEART} Ваша подписка успешно оплачена! Ссылка на добавления доступна в главном меню."
+)
DEPOSIT_AMOUNT = f"{MALENIA_COINS} Укажите сумму пополнения:"
-DEPOSIT_AMOUNT_FALLBACK = (
- f"{MALENIA_CROSS} Сумма пополнения указана неверно, повторите попытку."
-)
+DEPOSIT_AMOUNT_FALLBACK = f"{MALENIA_CROSS} Сумма пополнения указана неверно, повторите попытку."
DEPOSIT_AMOUNT_BELOW_MINIMAL = (
f"{MALENIA_CROSS} Сумма пополнения ниже минимальной - {{threshold}}₽."
diff --git a/tests/send_pally_webhook.py b/tests/send_pally_webhook.py
index 9d14381..0c19582 100644
--- a/tests/send_pally_webhook.py
+++ b/tests/send_pally_webhook.py
@@ -21,7 +21,6 @@ load_dotenv()
ENDPOINT = "/pally/result"
-
def calculate_signature(
out_sum: str,
inv_id: str,
@@ -47,21 +46,25 @@ def main():
pally_token = os.environ["PALLY_TOKEN"]
- inv_id = str(args.bill_id)
- out_sum = str(args.amount)
- trs_id = f"test_trs_{args.bill_id}"
+ # Эти поля могут быть любыми строками — вебхук их не использует содержательно,
+ # только включает в подпись. Главное чтобы совпадали с тем, что пойдёт в подпись.
+ payment_id = "test_payment_001"
+ bill_id = f"test_bill_{args.bill_id}"
currency = "RUB"
+ order_id = str(args.bill_id) # order_id == id счёта в нашей БД
- signature = calculate_signature(out_sum, inv_id, pally_token)
+ signature = calculate_signature(
+ payment_id, args.status, str(args.amount), currency, order_id, pally_token
+ )
payload = {
- "InvId": inv_id,
- "OutSum": out_sum,
- "Commission": "0",
- "TrsId": trs_id,
- "Status": args.status,
- "CurrencyIn": currency,
- "SignatureValue": signature,
+ "id": payment_id,
+ "bill_id": bill_id,
+ "status": args.status,
+ "req_amount": str(args.amount),
+ "currency": currency,
+ "order_id": order_id,
+ "signature": signature,
}
print(f"{args.host}{ENDPOINT}")