fix(api): enhance pally webhook with comprehensive error handling and logging

This commit is contained in:
2026-05-31 15:11:54 +07:00
parent 2a0f5c454e
commit 936d1ad260
2 changed files with 82 additions and 29 deletions

View File

@@ -39,32 +39,35 @@ def main():
parser.add_argument(
"--status",
default="SUCCESS",
choices=["SUCCESS", "FAIL", "PROCESS"],
choices=["SUCCESS", "FAIL", "UNDERPAID", "OVERPAID"],
help="Статус платежа (по умолчанию SUCCESS)",
)
args = parser.parse_args()
pally_token = os.environ["PALLY_TOKEN"]
# Эти поля могут быть любыми строками — вебхук их не использует содержательно,
# только включает в подпись. Главное чтобы совпадали с тем, что пойдёт в подпись.
payment_id = "test_payment_001"
bill_id = f"test_bill_{args.bill_id}"
# Корректные поля согласно документации pally.info
inv_id = f"payment-{args.bill_id}" # InvId - идентификатор платежа
trs_id = f"LXZv3R{args.bill_id}" # TrsId - уникальный идентификатор счета
currency = "RUB"
order_id = str(args.bill_id) # order_id == id счёта в нашей БД
custom = str(args.bill_id) # custom field содержит ID счета в нашей БД
commission = "0.00" # Комиссия
# ИСПРАВЛЕНО: используем inv_id вместо payment_id для сигнатуры
signature = calculate_signature(
payment_id, args.status, str(args.amount), currency, order_id, pally_token
str(args.amount), 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": str(args.amount),
"Commission": commission,
"TrsId": trs_id,
"Status": args.status,
"CurrencyIn": currency,
"custom": custom,
"SignatureValue": signature,
}
print(f"{args.host}{ENDPOINT}")