04 · Встроенный приём оплаты

Оплата без ухода со страницы.

Встраиваемый JavaScript-сниппет, который рисует QR или кнопку deep-link прямо на вашей странице оформления — три строки кода, без карточной формы, без редиректа, без PCI.

Встраивание в три строкиscript + div + mount()
Каналывеб · Telegram Mini App · лендинги
Карточные данныенет — только IP-рельс
СтатусДоступно · песочница открыта

Три строки на вашей странице — без карточной формы где бы то ни было.

Сервер продавца создаёт платёж, сумма фиксируется на стороне сервера. Браузер видит только непрозрачный 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-подписанный вебхук — именно он является источником истины для заказа. Закрытие вкладки покупателем не теряет платёж.

Как это работает.

От корзины до подтверждения — на собственной странице продавца.

1
Сервер продавца создаёт платёж
Server-to-server вызов /pay с секретным ключом и Idempotency-Key. Сумма фиксируется здесь, на бэкенде продавца. В ответе — paymentId.
2
Страница рисует виджет
Страница продавца вызывает miaPOS.mount('#el', { paymentId, ... }). Виджет обращается к публичному checkout-эндпоинту с capability-областью и отрисовывает QR (десктоп) или кнопку «Оплатить в банковском приложении» (мобайл).
3
Покупатель подтверждает в банковском приложении
Сканируйте QR в банковском приложении или тапните по deep-link на мобайле, чтобы открыть его напрямую. Покупатель авторизует точную сумму внутри доверенного банковского приложения — без полей карты, без CVC, без 3DS.
4
Вебхук финализирует заказ
Банк отправляет подписанный callback на бэкенд продавца. Это и есть истина платежа. Параллельно срабатывает onSuccess виджета, но он используется только для редиректа вкладки покупателя.
5
Один и тот же код — в каждом канале с webview
Тот же самый сниппет вставляется в webview Telegram Mini App и на лендинги, используемые для link-out из Instagram и TikTok. Одно ядро приёма платежей — много поверхностей.

Один сниппет, каждый канал с webview.

Сниппет по своей природе channel-agnostic — без жёстких редиректов, без cookies, без привязки к window.location. Один и тот же модуль работает везде, где есть webview.

КаналWebviewСниппет работаетПримечания
Сайт продавцаБраузерДа — как естьОсновной сценарий использования.
TelegramMini AppДа — тот же кодВиджет работает внутри webview Mini App.
Instagram и TikTokLink-outДа — на лендингеИз bio / Live / Shop-ссылки на лендинг miaPOS, где работает тот же сниппет.
WhatsAppНетНе в чате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.

Маркетплейсы и платформы

Положите сниппет в оформление заказа арендатора без форка интеграции для каждого арендатора.

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

Embed-трек аддитивен: плагины WooCommerce, OpenCart, CS-Cart и PHP SDK продолжают работать как чекаут с редиректом. Выбирайте embed, когда продавцу принадлежит страница или чат. Выбирайте редирект для сценария no-code / счёт / ссылка-из-любого-места.