fix(gateway): не плодить повторный регистрационный платёж после приёма #98
Reference in New Issue
Block a user
Delete Branch "feat/registration-payment-dedup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Stacked на #97 (feat/registration-refund). После последовательного мерджа (#91→#95→#97→dev) перетаргетится на dev.
Баг
При перезаходе/перезагрузке страницы оплаты в момент приёма вступительного взноса заводился ВТОРОЙ регистрационный платёж. Дедуп findActivePendingPayment ловит только status=PENDING; когда первый платёж уже PAID/COMPLETED (принят, аккаунт регистрируется), дедуп промахивался → createInitialPayment создавал платёж-дубль. Его нельзя ни подтвердить (processIncomingPayment → registerBlockchainAccount → «аккаунт уже зарегистрирован»), ни осмысленно отклонить — мусорный сирота в реестре.
Фикс
Регистрационный платёж одноразовый: берём последний рег-платёж пайщика; если он в живом статусе (PENDING/PROCESSING/PAID/COMPLETED) — возвращаем его, новый не создаём. Новый ордер только если прошлого нет либо он FAILED/EXPIRED/CANCELLED (легитимная повторная попытка / после resetRegistration). Авторитетная защита на бэке, не зависит от гонок на фронте (#95 server-truth + поллинг закрывают триггер, но источник дубля — бэк).
🤖 Generated with Claude Code