04 · Inline-Akzeptanz

Bezahlen, ohne die Seite zu verlassen.

Ein einbettbares JavaScript-Snippet, das den QR-Code oder einen Deep-Link-Button direkt in Ihrem Checkout rendert — drei Zeilen Code, kein Kartenformular, keine Weiterleitung, kein PCI.

Drei-Zeilen-EinbettungScript + Div + mount()
KanäleWeb · Telegram Mini App · Landing Pages
Kartendatenkeine — nur IP-Schiene
StatusLive · Sandbox offen

Drei Zeilen auf Ihrer Seite, nirgends ein Kartenformular.

Der Server des Händlers erstellt die Zahlung mit serverseitig festgelegtem Betrag. Der Browser hält stets nur eine undurchsichtige paymentId — ein Capability-Token, keinen Preis.

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

Das Widget läuft in seinem eigenen Shadow DOM, fragt den Zahlungsstatus ab und löst onSuccess in dem Moment aus, in dem die Bank bestätigt. Das Backend des Händlers erhält parallel einen RSA-signierten Webhook — das ist die maßgebliche Quelle für die Bestellung. Das Schließen des Tabs des Käufers führt nie zum Verlust der Zahlung.

So funktioniert es.

Vom Warenkorb bis zur Bestätigung — auf der eigenen Seite des Händlers.

1
Händler-Server erstellt die Zahlung
Server-zu-Server-Aufruf an /pay mit dem geheimen Schlüssel und einem Idempotency-Key. Der Betrag wird hier, im Backend des Händlers, festgelegt. Die Antwort ist eine paymentId.
2
Die Seite rendert das Widget
Die Seite des Händlers ruft miaPOS.mount('#el', { paymentId, ... }) auf. Das Widget liest den öffentlichen, Capability-beschränkten Checkout-Endpoint und rendert den QR-Code (Desktop) oder einen „In Bank-App bezahlen"-Button (Mobil).
3
Käufer bestätigt in seiner Bank-App
QR-Code mit der Banking-App scannen oder auf Mobilgeräten den Deep-Link antippen, um sie direkt zu öffnen. Der Käufer autorisiert den exakten Betrag in der vertrauten Banking-App — keine Kartenfelder, kein CVC, kein 3DS.
4
Webhook schließt die Bestellung ab
Die Bank sendet einen signierten Callback an das Backend des Händlers. Das ist die Wahrheit der Zahlung. Das onSuccess des Widgets wird parallel ausgelöst, dient aber nur dazu, den Tab des Käufers weiterzuleiten.
5
Derselbe Code, jeder Kanal mit Webview
Genau dasselbe Snippet lässt sich in ein Telegram Mini App Webview einsetzen sowie auf Landing Pages, die für Instagram und TikTok Link-out verwendet werden. Ein Akzeptanzkern, viele Oberflächen.

Ein Snippet, jeder Kanal mit Webview.

Das Snippet ist von Grund auf kanalagnostisch — keine harten Weiterleitungen, keine Cookies, keine Kopplung an window.location. Dasselbe Modul läuft überall dort, wo es ein Webview gibt.

KanalWebviewSnippet läuftHinweise
Händler-WebsiteBrowserJa — wie es istPrimärer Anwendungsfall.
TelegramMini AppJa — derselbe CodeDas Widget läuft im Webview der Mini App.
Instagram & TikTokLink-outJa — auf der Landing PageVom Bio-/Live-/Shop-Link zu einer miaPOS-Landing Page, die dasselbe Snippet ausführt.
WhatsAppKeinesNicht im ChatMeta erlaubt kein In-Chat-Webview. Das Backend wird unverändert über einen CTA-Link zu einer gehosteten Checkout-Seite wiederverwendet.

Was es ist — und was es nicht ist.

Embed checkout ist einer von zwei E-Commerce-Modi. Sie ergänzen sich, sie konkurrieren nicht.

Es ist

  • Ein JavaScript-Snippet, das der Händler in seinem Checkout einbettet
  • Eine additive Erweiterung des bestehenden E-Commerce-Protokolls — die Redirect-Plugins funktionieren unverändert weiter
  • Ein kanalagnostischer Kern — derselbe Code kann in einer Telegram Mini App laufen
  • Nur IP-Schiene — keine Kartendaten, keine PAN, kein 3DS, kein PCI
  • Ein Capability-beschränkter Endpoint — der Browser hält stets nur paymentId

Es ist nicht

  • Ein Ersatz für Payment Links — diese decken weiterhin die No-Code-/Rechnungs-/QR-auf-Beleg-Szenarien ab
  • Ein Kartenprozessor — es sind zu keinem Zeitpunkt Karten beteiligt
  • Eine Seite auf unserer Domain in einem iframe — das Widget rendert seine eigene Benutzeroberfläche
  • Die maßgebliche Quelle für die Bestellung — das ist der Webhook im Backend des Händlers
  • Ein In-Chat-Erlebnis auf WhatsApp — Meta erlaubt dort kein Webview

„Der schnellste Checkout ist derjenige, der die wenigsten Felder verlangt."

Für Händler, denen ihr Checkout — und ihre Chats — gehören.

Das Embed-Snippet passt dorthin, wo die Marke dem Händler gehört, nicht uns.

D2C-Online-Shops

Halten Sie den Käufer vom Warenkorb bis zur Bestätigung auf der Markenseite. Der Checkout führt nie zu einer Drittanbieter-Domain.

HoReCa & Dienstleistungen

Vorbestellungen, Anzahlungen und Buchungsabläufe im Bot in Telegram Mini Apps — dasselbe Snippet läuft dort.

Digitale Güter

Sofortige Abrechnung, sofortige Freischaltung. Das Widget löst onSuccess aus, sobald die Bank bestätigt.

Social Commerce

Instagram und TikTok Link-out zu einer Landing Page, die dasselbe Snippet ausführt — ein Akzeptanzkern.

Abonnements & SaaS

Wiederkehrende Zahlungen sind schienenabhängig, dort wo das zugrunde liegende IPS sie unterstützt.

Marktplätze & Plattformen

Fügen Sie das Snippet in den Checkout eines Mandanten ein, ohne die Integration pro Mandant zu forken.

Einbetten oder beim Redirect bleiben — beides ist heute verfügbar.

Der Embed-Pfad ist additiv: Die WooCommerce-, OpenCart-, CS-Cart-Plugins und das PHP SDK funktionieren weiterhin als Redirect-Checkouts. Wählen Sie Embed, wenn dem Händler die Seite oder der Chat gehört. Wählen Sie Redirect für das No-Code-/Rechnungs-/Link-von-überall-Szenario.