fix(pally): use InvId as primary bill identifier instead of custom field

This commit is contained in:
2026-05-31 15:17:48 +07:00
parent 936d1ad260
commit 18f994aed9
2 changed files with 21 additions and 14 deletions

View File

@@ -46,27 +46,28 @@ def main():
pally_token = os.environ["PALLY_TOKEN"]
# Корректные поля согласно документации pally.info
inv_id = f"payment-{args.bill_id}" # InvId - идентификатор платежа
trs_id = f"LXZv3R{args.bill_id}" # TrsId - уникальный идентификатор счета
# ИСПРАВЛЕНО: InvId должен содержать ID счета из БД (это order_id при создании счета)
# Именно InvId используется в webhook handler для поиска счета в БД
inv_id = str(args.bill_id) # InvId = bill ID из нашей БД (order_id при создании)
trs_id = f"LXZv3R{args.bill_id}" # TrsId - уникальный идентификатор счета в Pally
currency = "RUB"
custom = str(args.bill_id) # custom field содержит ID счета в нашей БД
custom = None # custom field не используется в production (остается None)
commission = "0.00" # Комиссия
# ИСПРАВЛЕНО: используем inv_id вместо payment_id для сигнатуры
# Сигнатура рассчитывается с использованием InvId (который содержит bill ID)
signature = calculate_signature(
str(args.amount), inv_id, pally_token
)
# ИСПРАВЛЕНО: используем правильные имена полей согласно документации
# Используем правильные имена полей согласно документации pally.info
payload = {
"InvId": inv_id,
"InvId": inv_id, # Содержит ID счета из БД
"OutSum": str(args.amount),
"Commission": commission,
"TrsId": trs_id,
"Status": args.status,
"CurrencyIn": currency,
"custom": custom,
"custom": custom, # None в production
"SignatureValue": signature,
}