diff --git a/api/routes/pally.py b/api/routes/pally.py index 6e1805e..f26df08 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 = custom or "" + oid = InvId 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 custom field format for TrsId %s", TrsId) + logger.critical("Invalid InvId 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 b62bf73..d1a71df 100644 --- a/bot/texts.py +++ b/bot/texts.py @@ -174,15 +174,17 @@ REFERALS_MENU = ( # ОФОРМЛЕНИЕ ПОДПИСКИ # ============================================================ -SUBSCRIPTION_DEVICE_SELECTOR = f"{MALENIA_QUESTION} Сколько устройств вы хотите подключить?\n\nЦена: {{price}}₽" - -SUBSCRIPTION_DURATION_SELECTOR = ( - f"{MALENIA_QUESTION} На какой срок хотите оформить подписку?\n\nИтого: {{price}}₽ (скидка: {{discount}}%)" +SUBSCRIPTION_DEVICE_SELECTOR = ( + f"{MALENIA_QUESTION} Сколько устройств вы хотите подключить?\n\nЦена: {{price}}₽" ) +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❓ Выберите способ оплаты:" +) # ============================================================ @@ -203,13 +205,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 0c19582..9d14381 100644 --- a/tests/send_pally_webhook.py +++ b/tests/send_pally_webhook.py @@ -21,6 +21,7 @@ load_dotenv() ENDPOINT = "/pally/result" + def calculate_signature( out_sum: str, inv_id: str, @@ -46,25 +47,21 @@ def main(): pally_token = os.environ["PALLY_TOKEN"] - # Эти поля могут быть любыми строками — вебхук их не использует содержательно, - # только включает в подпись. Главное чтобы совпадали с тем, что пойдёт в подпись. - payment_id = "test_payment_001" - bill_id = f"test_bill_{args.bill_id}" + inv_id = str(args.bill_id) + out_sum = str(args.amount) + trs_id = f"test_trs_{args.bill_id}" currency = "RUB" - order_id = str(args.bill_id) # order_id == id счёта в нашей БД - signature = calculate_signature( - payment_id, args.status, str(args.amount), currency, order_id, pally_token - ) + signature = calculate_signature(out_sum, inv_id, pally_token) payload = { - "id": payment_id, - "bill_id": bill_id, - "status": args.status, - "req_amount": str(args.amount), - "currency": currency, - "order_id": order_id, - "signature": signature, + "InvId": inv_id, + "OutSum": out_sum, + "Commission": "0", + "TrsId": trs_id, + "Status": args.status, + "CurrencyIn": currency, + "SignatureValue": signature, } print(f"{args.host}{ENDPOINT}")