04 · Acceptare inline

Plătiți fără a părăsi pagina.

Un snippet JavaScript drop-in care afișează codul QR sau un buton deep-link direct pe pagina dvs. de checkout — trei rânduri de cod, fără formular de card, fără redirecționare, fără PCI.

Embed în trei rânduriscript + div + mount()
Canaleweb · Telegram Mini App · landing-uri
Date cardniciuna — doar rail IP
StatusLive · sandbox deschis

Trei rânduri pe pagina dvs., niciun formular de card nicăieri.

Serverul comerciantului creează plata cu suma fixată pe server. Browserul nu deține niciodată decât un paymentId opac — un token de capabilitate, nu un preț.

<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>

Widget-ul rulează în propriul Shadow DOM, monitorizează starea plății și declanșează onSuccess în momentul în care banca confirmă. Backend-ul comerciantului primește în paralel un webhook semnat RSA — aceasta este sursa adevărului pentru comandă. Închiderea tabului cumpărătorului nu pierde niciodată plata.

Cum funcționează.

De la coș la confirmare, pe pagina proprie a comerciantului.

1
Serverul comerciantului creează plata
Apel server-la-server către /pay cu cheia secretă și un Idempotency-Key. Suma este fixată aici, pe backend-ul comerciantului. Răspunsul este un paymentId.
2
Pagina afișează widget-ul
Pagina comerciantului apelează miaPOS.mount('#el', { paymentId, ... }). Widget-ul citește endpoint-ul public de checkout, limitat la capabilitate, și afișează codul QR (desktop) sau un buton „Plătește în aplicația bancară” (mobil).
3
Cumpărătorul confirmă în aplicația sa bancară
Scanează codul QR cu aplicația bancară sau atinge deep-link-ul pe mobil pentru a o deschide direct. Cumpărătorul autorizează suma exactă în interiorul aplicației bancare de încredere — fără câmpuri de card, fără CVC, fără 3DS.
4
Webhook-ul finalizează comanda
Banca trimite un callback semnat către backend-ul comerciantului. Acela este adevărul plății. onSuccess al widget-ului se declanșează în paralel, dar este folosit doar pentru a redirecționa tab-ul cumpărătorului.
5
Același cod, fiecare canal cu webview
Exact același snippet se integrează într-un webview Telegram Mini App și pe paginile de landing folosite pentru link-out din Instagram și TikTok. Un singur nucleu de acceptare, multe suprafețe.

Un singur snippet, fiecare canal cu webview.

Snippet-ul este agnostic față de canal prin design — fără redirecționări dure, fără cookie-uri, fără cuplaj window.location. Același modul rulează oriunde rulează un webview.

CanalWebviewSnippet ruleazăNote
Site-ul comerciantuluiBrowserDa — așa cum esteCazul de utilizare principal.
TelegramMini AppDa — același codWidget-ul rulează în interiorul webview-ului Mini App.
Instagram și TikTokLink-outDa — pe landingDin linkul bio / Live / Shop către un landing miaPOS care rulează același snippet.
WhatsAppNiciunNu în chatMeta nu permite un webview în chat. Backend-ul este reutilizat nemodificat printr-un link CTA către o pagină de checkout găzduită.

Ce este — și ce nu este.

Embed checkout este unul dintre cele două moduri de e-commerce. Sunt complementare, nu concurente.

Este

  • Un snippet JavaScript pe care comerciantul îl integrează în pagina sa de checkout
  • O extensie aditivă a protocolului e-commerce existent — plugin-urile de redirecționare continuă să funcționeze nemodificate
  • Un nucleu agnostic față de canal — același cod poate rula într-un Telegram Mini App
  • Doar rail IP — fără date de card, fără PAN, fără 3DS, fără PCI
  • Un endpoint limitat la capabilitate — browserul nu deține niciodată decât paymentId

Nu este

  • Un înlocuitor pentru linkurile de plată — acestea dețin în continuare scenariile no-code / factură / QR pe bon
  • Un procesor de carduri — nu sunt implicate carduri în niciun moment
  • O pagină pe domeniul nostru într-un iframe — widget-ul își afișează propriul UI
  • Sursa adevărului pentru comandă — aceasta este webhook-ul de pe backend-ul comerciantului
  • O experiență în chat pe WhatsApp — Meta nu permite un webview acolo

„Cel mai rapid checkout este cel care solicită cele mai puține câmpuri.”

Pentru comercianții care își dețin propriul checkout — și propriile chat-uri.

Snippet-ul embed se potrivește acolo unde brandul este al comerciantului, nu al nostru.

Magazine web D2C

Păstrați cumpărătorul pe pagina brandului de la coș la confirmare. Checkout-ul nu trece niciodată pe un domeniu terț.

HoReCa și servicii

Precomenzi, depozite și fluxuri de rezervare în-bot în Telegram Mini Apps — același snippet rulează acolo.

Bunuri digitale

Decontare instant, deblocare instant. Widget-ul declanșează onSuccess în momentul în care banca confirmă.

Comerț social

Link-out din Instagram și TikTok către un landing care rulează același snippet — un singur nucleu de acceptare.

Abonamente și SaaS

Plățile recurente depind de rail, acolo unde IPS-ul de bază le suportă.

Marketplace-uri și platforme

Integrați snippet-ul în checkout-ul unui tenant fără a face fork la integrare per tenant.

Integrați-l sau rămâneți cu redirecționarea — ambele sunt live astăzi.

Track-ul embed este aditiv: plugin-urile WooCommerce, OpenCart, CS-Cart și PHP SDK continuă să funcționeze ca checkout-uri cu redirecționare. Alegeți embed atunci când comerciantul deține pagina sau chat-ul. Alegeți redirecționarea pentru scenariul no-code / factură / link-de-oriunde.