Безопасность виджета

Виджет удобен тем, что живёт целиком в браузере покупателя. Из этого следует и его главное ограничение — всё, что попало в браузер, покупатель может изменить. Ниже честно о том, где проходит граница и что с этим делать.
Параметры уходят в платёжный шлюз из браузера как есть, и подготовленный покупатель может изменить цену или состав до отправки. Подпись не включена намеренно: виджет ставится на страницу без разработки, и это плата за быстрый старт. Поэтому обязанность переходит к магазину — получив уведомление об оплате, сверьте сумму с той, которую ожидаете по заказу, и отгружайте только после совпадения.
Что делать, если сумма важна
Создавайте заказ на своей стороне — тогда цену определяет ваш сервер, а не форма в браузере:
- Создание заказа через API — состав и сумма приходят с вашего сервера, покупатель их не видит и не меняет.
- Готовый модуль CMS — то же самое, но настройкой в админке: модуль сам создаёт заказ из корзины магазина.
- Запрос о платеже — счёт формируете вы, покупатель только подтверждает оплату в приложении банка.
Проверяйте оплату у себя
Независимо от способа приёма платежа не считайте заказ оплаченным по возврату покупателя на страницу «спасибо»: этот адрес открывается в браузере и ничего не доказывает. Дождитесь уведомления о смене статуса и сверьте сумму с ожидаемой — это единственный надёжный сигнал.
Что виджет делает правильно
- Данные карты в виджет не попадают: он показывает форму заказа, а оплата проходит на платёжной странице шлюза.
- Форма живёт в отдельном фрейме, изолированном от вашей страницы: скрипты сайта не видят введённого покупателем, и наоборот.
- Идентификатор магазина в коде — публичный параметр, его не нужно прятать: он не даёт доступа ни к деньгам, ни к личному кабинету.
Коротко
Виджет закрывает быстрый старт, но проверка оплаты остаётся на вашей стороне. Начните с него, чтобы принять первые платежи, и переходите на заказы через API, когда суммы вырастут или появится учётная система.