Оплата без ухода со страницы.
Встраиваемый JavaScript-сниппет, который рисует QR или кнопку deep-link прямо на вашей странице оформления — три строки кода, без карточной формы, без редиректа, без PCI.
Три строки на вашей странице — без карточной формы где бы то ни было.
Сервер продавца создаёт платёж, сумма фиксируется на стороне сервера. Браузер видит только непрозрачный paymentId — capability-токен, а не цену.
<script src="https://js.miapos.eu/v1/"></script> <div id="mia-pay"></div> <script> miaPOS.mount('#mia-pay', { paymentId, // created server-side; amount is fixed there onSuccess: () => location = '/thank-you', onFail: (e) => console.warn(e.reason), locale: 'ro' | 'ru' | 'en', }); </script>
Виджет работает в собственном Shadow DOM, опрашивает статус платежа и вызывает onSuccess в момент подтверждения банком. Бэкенд продавца параллельно получает RSA-подписанный вебхук — именно он является источником истины для заказа. Закрытие вкладки покупателем не теряет платёж.
Как это работает.
От корзины до подтверждения — на собственной странице продавца.
/pay с секретным ключом и Idempotency-Key. Сумма фиксируется здесь, на бэкенде продавца. В ответе — paymentId.miaPOS.mount('#el', { paymentId, ... }). Виджет обращается к публичному checkout-эндпоинту с capability-областью и отрисовывает QR (десктоп) или кнопку «Оплатить в банковском приложении» (мобайл).onSuccess виджета, но он используется только для редиректа вкладки покупателя.Один сниппет, каждый канал с webview.
Сниппет по своей природе channel-agnostic — без жёстких редиректов, без cookies, без привязки к window.location. Один и тот же модуль работает везде, где есть webview.
| Канал | Webview | Сниппет работает | Примечания |
|---|---|---|---|
| Сайт продавца | Браузер | Да — как есть | Основной сценарий использования. |
| Telegram | Mini App | Да — тот же код | Виджет работает внутри webview Mini App. |
| Instagram и TikTok | Link-out | Да — на лендинге | Из bio / Live / Shop-ссылки на лендинг miaPOS, где работает тот же сниппет. |
| Нет | Не в чате | Meta не разрешает webview в чате. Бэкенд переиспользуется без изменений через CTA-ссылку на размещённую страницу оплаты. |
Что это такое — и чем это не является.
Embed checkout — один из двух режимов e-commerce. Они дополняют друг друга, а не конкурируют.
Это
- JavaScript-сниппет, который продавец встраивает на свою страницу оформления
- Аддитивное расширение существующего e-commerce-протокола — плагины с редиректом продолжают работать без изменений
- Channel-agnostic ядро — тот же код может работать в Telegram Mini App
- Только IP-рельс — без карточных данных, без PAN, без 3DS, без PCI
- Эндпоинт с capability-областью — браузер видит только
paymentId
Это не
- Замена платёжных ссылок — за ними остаются сценарии no-code / счёт / QR-на-чеке
- Карточный процессор — карты не задействованы ни на одном этапе
- Страница на нашем домене в iframe — виджет рендерит собственный UI
- Источник истины для заказа — это вебхук на бэкенде продавца
- In-chat-опыт в WhatsApp — Meta там не разрешает webview
«Самое быстрое оформление заказа — то, в котором запрашивается минимум полей.»
Для продавцов, которым принадлежат их страницы — и их чаты.
Embed-сниппет уместен там, где бренд принадлежит продавцу, а не нам.
D2C-магазины
Покупатель остаётся на странице бренда от корзины до подтверждения. Оформление никогда не уходит на сторонний домен.
HoReCa и услуги
Предзаказы, депозиты и брони внутри бота в Telegram Mini App — тот же сниппет работает и там.
Цифровые товары
Мгновенный расчёт — мгновенный доступ. Виджет вызывает onSuccess в момент подтверждения банком.
Социальная коммерция
Link-out из Instagram и TikTok на лендинг, где работает тот же сниппет — одно ядро приёма платежей.
Подписки и SaaS
Регулярные платежи зависят от рельса — там, где их поддерживает базовая IPS.
Маркетплейсы и платформы
Положите сниппет в оформление заказа арендатора без форка интеграции для каждого арендатора.