[CL-W14] LOW-пачка №2: cooling-off double-pay, unsigned webhook кеш, idempotency на vault deposit #518
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/claude-w14-low-batch2"
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?
Что сделано
LOW-пачка №2 из
docs/vault/reviews/mega-audit-20260610.md(money-paths):requiresProviderRefundбылtrueдля STRIPE/NOWPAYMENTS, хотя код уже зачислил возврат на внутренний баланс пользователя — support, действуя по флагу (ручной Stripe card-refund), выплатил бы дважды. Флаг теперь всегдаfalse; лживый комментарий «credit to platform balance» заменён правдой; trade-off с EU Directive 2011/83 («тем же платёжным средством») задокументирован в коде — настоящий card-refund flow (PENDING_PROVIDER_REFUND + идемпотентныйstripe.refunds.createБЕЗ внутреннего кредита) — отдельное решение CEO.idempotencyGuardне кеширует 2xx-ответ, помеченныйres.locals.webhookSignatureInvalid— подделанный IPN без подписи больше не резервирует idem-ключ и не кеширует 200 на 24h. Флаг ставит nowpayments.handler (его anti-probing 200 сохранён); Sumsub/OpenBanking шлют 401 → не кешировались и раньше.requireIdempotencyKeyнаPOST /vault/deposit(double-submit = 2x дебет + 2x on-chain deposit + лишний газ); frontendvault.api.depositшлёт ключ через общийgenerateIdempotencyKey.Зачем
Закрытие money-path-хвоста мега-аудита: A1.2 — операционный двойной возврат; B1.1 — Redis-мусор от неподписанных IPN; B3.3 — паритет vault deposit с buyFromBalance/payouts по идемпотентности.
План тестирования
Где могу ошибаться
admin-merge reason: solo-dev (Rule 103.1)
0c471912c-> effective APPROVE0c471912c)