← Главная

DS-798 — Ретест антифрода 15.04.2026

Стенд frontend: https://deploy-preview-979--chatplace-front.netlify.app/
Стенд backend: https://api-2020.review.chatplace.io/
Дата теста: 15.04.2026
Связанная задача: DS-974 (isTrialBlocked на фронте — статус: Код ревью)

Сводная таблица

#ПроверкаРезультат
1Stripe: антифрод по карте (4242)✅ PASS
2Stripe: антифрод по карте (5555)✅ PASS
3UI: сырой exception вместо тоста❌ FAIL
4isTrialBlocked скрывает trial на фронте⏳ DS-974
5Админка: история блокировок✅ PASS
6Админка: маска карты❌ FAIL (пусто)
7Админка: отмена блокировки❌ FAIL
8CP: оплата на review✅ PASS
9CP: антифрод по card_hash❌ FAIL
10Параллельные Stripe+CP платежи в DB⚠️ Аномалия
11user_fingerprint=NULL в card_fingerprints❌ FAIL
12Провайдер в админке vs DB⚠️ Рассинхрон

1. Stripe: антифрод по карте — ✅ PASS

Юзер 798test1@mail.com (15.04, Telegram-бот, карта 4242 4242 4242 4242, Stripe)
Результат: trial заблокирован. В админке 3 записи (10:44, 10:45, 10:46), причина «Карта уже использовалась», провайдер stripe.

Юзер 798stripe2@mail.com (новая карта 5555 5555 5555 4444, Stripe, USD)
Результат: trial активирован корректно (первый раз картой). paymentProvider=1, currency=USD, pmLastFour=4444.

Юзер 798stripe3@mail.com (повтор карты 5555 5555 5555 4444, Stripe)
Результат: trial заблокирован. В админке 1 запись (12:18).

Вывод: Stripe антифрод работает корректно — повторная карта блокируется.

2. UI обработки ошибки — ❌ FAIL

При блокировке триала показывается сырой exception:

exceptions.subscription.trialBlocked
Пожалуйста, повторите попытку позже, чтобы произвести другой платёж

Network: create-stripe → 500. Воспроизводится на RU и EN интерфейсе.
Ожидание (Рустам): тост «Не удалось обработать платёж».

3. isFraudBlocked / isTrialBlocked — ⏳ DS-974

После антифрод-блокировки кнопка «Подключить на 7 дней бесплатно» остаётся видна. JSON: isTrialBlocked=false. DS-974 ещё не вмёржена (Код ревью).

4. Админка: история блокировок — ✅ PASS (с замечаниями)

798test1: 3 записи видны. 798stripe3: 1 запись видна.
❌ Маска карты пустая — колонка «Карта» показывает «-» во всех записях. Ожидание: маска типа ****4242.

5. Админка: отмена блокировки — ❌ FAIL

Модалка открывается, поле «Причина снятия (необязательно)».

798test1 (3 попытки): ошибка «Блокировка не найдена или уже снята». Статус остаётся «Активна».
798stripe3 (1 попытка): ошибка «User not exists». Статус остаётся «Активна».

Оба варианта — FAIL. Отмена блокировки не работает.

6. CloudPayments: оплата на review — ✅ PASS

798test1@mail.com: CP, карта 4242, рубли → Pro. UI: «Вы подключили тариф Pro», Visa *4242.

7. CloudPayments: антифрод по карте — ❌ FAIL

798test1@mail.com — CP, карта 4242, рубли → Pro (15.04)
798cp2@mail.com — CP, та же карта 4242, рубли → trial выдан (isTrial=true, isTrialBlocked=false)

DB evidence (card_fingerprints):
798test1: provider=cloudpayments, card_hash=f24240e8…
798cp2: provider=cloudpayments, card_hash=f24240e8… (одинаковый!)

В админке у 798cp2 — 0 записей антифрод-блокировок.
Вывод: антифрод НЕ проверяет card_hash между аккаунтами при оплате через CP.

8. DB: параллельные Stripe+CP платежи — ⚠️ Аномалия

При каждой оплате через Stripe создаются ДВЕ записи в payments:

providercurrencypricestatustype
1 (Stripe)USD032 (trial)
3 (CP)RUB10011 (paid)

Пример 798stripe2@mail.com. Тот же паттерн у 798a4, 798b4, 798v4, 798bot1, 798mob1.
card_fingerprint записывается только для Stripe, CP-платёж не создаёт запись в card_fingerprints.

9. DB: user_fingerprint=NULL в card_fingerprints — ❌ FAIL

У ВСЕХ юзеров в card_fingerprints поле user_fingerprint = NULL. Device context не связывается с картой.

При этом в user_fingerprints fingerprint записывается корректно:

emailfingerprintdevice
798test17d6770ac…Комп Натальи (15.04)
798-claud7d6770ac…Комп Натальи (14.04)
798cp2afa8883d…Другой комп (13.04)
798mob140c8c86e…Мобильный
798a4/b4/v4/cp1-3/mir1-2/bot1afa8883d…Один комп (9 юзеров)

10. Провайдер в админке vs DB — ⚠️ Рассинхрон

В админке блокировки показывают «stripe», но payments для 798test1 — все provider=3 (CP), currency=RUB.

DB Evidence (полный)

card_fingerprints

emailprovidercard_hashuser_fingerprint
798cp2cloudpaymentsf24240e8…NULL
798test1cloudpaymentsf24240e8…NULL
798stripe2stripe6AK7yoqQQae7cXEvNULL
798a4stripe0trqiz6XoXzeotX8NULL

Тестовые аккаунты

EmailПровайдерКартаДатаИтог
798test1@mail.comCP424215.04Pro (антифрод заблокировал trial)
798cp2@mail.comCP424213→15.04Trial выдан ❌
798-claud@mail.comCP424214.04Pro
798stripe2@mail.comStripe5555…444415.04Trial (первый раз) ✅
798stripe3@mail.comStripe5555…444415.04Trial заблокирован ✅

📋 Текст для Jira-комментария

DS-798 — ретест антифрода (15.04.2026, стенд 979 + api-2020)

Frontend: https://deploy-preview-979--chatplace-front.netlify.app/
Backend: https://api-2020.review.chatplace.io/
Связанная задача: DS-974 (isTrialBlocked — Код ревью)

СВОДКА:
 #  | Проверка                              | Результат
----+----------------------------------------+----------
 1  | Stripe: антифрод по карте (4242)       | ✅ PASS
 2  | Stripe: антифрод по карте (5555)       | ✅ PASS
 3  | UI: сырой exception вместо тоста       | ❌ FAIL
 4  | isTrialBlocked скрывает trial          | ⏳ DS-974
 5  | Админка: история блокировок            | ✅ PASS
 6  | Админка: маска карты                   | ❌ FAIL (пусто)
 7  | Админка: отмена блокировки             | ❌ FAIL
 8  | CP: оплата на review                   | ✅ PASS
 9  | CP: антифрод по card_hash              | ❌ FAIL
10  | Параллельные Stripe+CP платежи в DB    | ⚠️ Аномалия
11  | user_fingerprint=NULL в card_fingerprints | ❌ FAIL
12  | Провайдер в админке vs DB              | ⚠️ Рассинхрон

─── Расшифровка ───

1. Stripe антифрод — ✅ PASS
798test1@mail.com (карта 4242): trial заблокирован, в админке 3 записи.
798stripe2@mail.com (новая карта 5555): trial активирован (первый раз).
798stripe3@mail.com (повтор 5555): trial заблокирован, в админке 1 запись.

2. UI ошибки — ❌ FAIL
Показывается сырой exception: exceptions.subscription.trialBlocked
Network: create-stripe → 500
Ожидание (Рустам): тост «Не удалось обработать платёж»

3. isTrialBlocked на фронте — ⏳ DS-974
После блокировки кнопка «Подключить на 7 дней бесплатно» остаётся видна.
DS-974 ещё не вмёржена (Код ревью).

4. Админка: история блокировок — ✅ PASS
❌ Маска карты пустая — колонка «Карта» показывает «-» во всех записях.

5. Админка: отмена блокировки — ❌ FAIL
798test1: «Блокировка не найдена или уже снята» — статус не меняется.
798stripe3: «User not exists» — статус не меняется.

6. CP оплата — ✅ PASS
798test1: CP, карта 4242, рубли → Pro.

7. CP антифрод — ❌ FAIL
798cp2@mail.com: CP, та же карта 4242 → trial выдан (isTrial=true, isTrialBlocked=false).
DB: card_hash одинаковый (f24240e8…) у обоих юзеров.
В админке у 798cp2 — 0 записей антифрод-блокировок.

8. Параллельные платежи — ⚠️ Аномалия
При Stripe оплате создаются 2 записи: provider=1 (USD, status=3) + provider=3 (RUB 100₽, status=1).
card_fingerprint записывается только для Stripe.

9. user_fingerprint — ❌ FAIL
У ВСЕХ юзеров в card_fingerprints поле user_fingerprint = NULL.
Device context не связывается с картой.

10. Провайдер в админке vs DB — ⚠️ Рассинхрон
В админке «stripe», в DB — provider=3 (CP).

Тестовые аккаунты (review api-2020):
798test1, 798cp2, 798-claud, 798stripe2, 798stripe3
+ вчерашние: 798a4, 798b4, 798v4, 798bot1, 798mob1, 798cp1/2/3, 798mir1/2
DS-798 ретест 15.04.2026 · Natasha QA · review api-2020 · Только SELECT запросы