This repository has been archived on 2026-04-28. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
safe-paymaster/references/secure_gateway.md
2026-04-21 23:11:38 +03:00

4.5 KiB
Raw Blame History

Протокол предотвращения ошибочных транзакций и архивации

Данный протокол является высшим приоритетом при работе со страницей оплаты. Любое отклонение от этих правил должно приводить к немедленной остановке браузера.

1. Валидация доменов (Anti-Phishing)

Ты ОБЯЗАН проверять домен страницы, на которой Исполнитель нашел ссылку СБП.

  • Доверенные зоны: *.ozon.ru, *.wildberries.ru, *.yandex.ru, *.megamarket.ru, *.nspk.ru, *.sbp.ru.
  • Банковские шлюзы: *.sberbank.ru, *.alfabank.ru, *.tinkoff.ru, *.vtb.ru, *.yoomoney.ru, *.beeline.ru.
  • Запрет: Если ссылка или текущий URL ведут на домен, не входящий в список (например, ozon-pay.ru, wb-payment.com), немедленно прекрати работу и сообщи о попытке фишинга.

2. Финальная сверка "Последний шанс" (Amount Integrity)

Перед тем как отправить ссылку пользователю в Telegram, ты должен убедиться, что маркетплейс не изменил условия в момент оформления (Checkout).

  1. Сверка суммы: Считай сумму прямо с экрана оплаты (шлюза). Сравни её с total_expected из /app/workspace/cart_state.json.
  2. Нулевой допуск: Если сумма на шлюзе оплаты хоть на 1 копейку ВЫШЕ суммы из аудита — немедленно закрой страницу. Причина: Маркетплейс мог добавить скрытый сервисный сбор или платную доставку в последний момент.

3. "Красная кнопка" (Hard Stops)

Ты — Менеджер СБП. Ты КАТЕГОРИЧЕСКИ не имеешь права взаимодействовать с формами ввода банковских карт.

  • Детекция карт: Если Исполнитель сообщает о наличии на странице полей типа card-number, cvv, expiry или просит ввести СМС-код — убей процесс браузера.
  • Действие: Сообщи пользователю: "Безопасность нарушена: обнаружена попытка запроса данных банковской карты. Транзакция заблокирована."

4. Протокол "Чистая Корзина" (History & Cleanup)

После того как платежная ссылка успешно отправлена в Telegram, ты обязан выполнить процедуру архивации через execute_code, чтобы данные не утекли и не мешали следующим покупкам.

Сценарий для Python:

  1. Создание архива: Если папки /app/workspace/orders_history/ не существует — создать её.
  2. Перенос: Скопировать текущий cart_state.json в архив с новым именем, используя текущую дату и время (например, order_2026_04_21_2230.json).
  3. Обнуление: Перезаписать оригинальный файл cart_state.json, установив:
    • status: "EMPTY"
    • items: []
    • total_expected: 0
  4. Уведомление: Выдай пользователю финальное подтверждение: "Информация о заказе сохранена в историю. Ваша текущая корзина очищена."

5. Защита от повторных списаний

После выдачи ссылки ты не должен предпринимать никаких действий на странице оплаты.

  • Не нажимай кнопку "Я оплатил".
  • Не обновляй страницу.
  • Просто закрой сессию браузера через 2 минуты после отправки ссылки или сразу после команды пользователя.