04 · Acceptation inline

Payer sans quitter la page.

Un snippet JavaScript prêt à l'emploi qui affiche le QR ou un bouton deep-link directement sur votre page de paiement — trois lignes de code, aucun formulaire de carte, aucune redirection, aucune PCI.

Intégration en trois lignesscript + div + mount()
Canauxweb · Telegram Mini App · landings
Données de carteaucune — rail IP uniquement
StatutEn production · sandbox ouvert

Trois lignes sur votre page, aucun formulaire de carte nulle part.

Le serveur du commerçant crée le paiement avec le montant fixé côté serveur. Le navigateur ne détient jamais qu'un paymentId opaque — un jeton de capacité, pas un prix.

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

Le widget s'exécute dans son propre Shadow DOM, interroge l'état du paiement et déclenche onSuccess dès que la banque confirme. Le backend du commerçant reçoit en parallèle un webhook signé RSA — c'est la source de vérité pour la commande. La fermeture de l'onglet de l'acheteur ne perd jamais le paiement.

Comment ça fonctionne.

Du panier à la confirmation, sur la page du commerçant.

1
Le serveur du commerçant crée le paiement
Appel serveur-à-serveur vers /pay avec la clé secrète et un Idempotency-Key. Le montant est fixé ici, sur le backend du commerçant. La réponse est un paymentId.
2
La page affiche le widget
La page du commerçant appelle miaPOS.mount('#el', { paymentId, ... }). Le widget lit le point de terminaison de paiement public, à portée de capacité, et affiche le QR (desktop) ou un bouton « Payer dans l'application bancaire » (mobile).
3
L'acheteur confirme dans son application bancaire
Scannez le QR avec l'application bancaire ou touchez le deep-link sur mobile pour l'ouvrir directement. L'acheteur autorise le montant exact dans l'application bancaire de confiance — aucun champ de carte, aucun CVC, aucun 3DS.
4
Le webhook finalise la commande
La banque envoie un callback signé au backend du commerçant. C'est la vérité du paiement. Le onSuccess du widget se déclenche en parallèle, mais sert uniquement à rediriger l'onglet de l'acheteur.
5
Le même code, chaque canal avec une webview
Le même snippet exact s'intègre dans une webview Telegram Mini App et sur les landing pages utilisées pour les link-out Instagram et TikTok. Un cœur d'acceptation, de nombreuses surfaces.

Un snippet, chaque canal avec une webview.

Le snippet est conçu pour être agnostique au canal — pas de redirections dures, pas de cookies, pas de couplage à window.location. Le même module s'exécute partout où une webview fonctionne.

CanalWebviewLe snippet s'exécuteNotes
Site du commerçantNavigateurOui — tel quelCas d'usage principal.
TelegramMini AppOui — même codeLe widget s'exécute dans la webview Mini App.
Instagram & TikTokLink-outOui — sur la landingDu bio / Live / Shop link vers une landing miaPOS qui exécute le même snippet.
WhatsAppAucunPas en chatMeta n'autorise pas de webview en chat. Le backend est réutilisé inchangé via un lien CTA vers une page de paiement hébergée.

Ce que c'est — et ce que ce n'est pas.

Embed checkout est l'un des deux modes e-commerce. Ils sont complémentaires, pas concurrents.

Ce que c'est

  • Un snippet JavaScript que le commerçant intègre sur sa page de paiement
  • Une extension additive du protocole e-commerce existant — les plugins de redirection continuent de fonctionner sans changement
  • Un cœur agnostique au canal — le même code peut s'exécuter dans une Telegram Mini App
  • Rail IP uniquement — aucune donnée de carte, aucun PAN, aucun 3DS, aucune PCI
  • Un point de terminaison à portée de capacité — le navigateur ne détient jamais que paymentId

Ce que ce n'est pas

  • Un remplacement des liens de paiement — ceux-ci restent dédiés aux scénarios sans code / facture / QR sur reçu
  • Un processeur de cartes — aucune carte n'est impliquée à aucun moment
  • Une page sur notre domaine dans un iframe — le widget affiche sa propre interface
  • La source de vérité pour la commande — c'est le webhook sur le backend du commerçant
  • Une expérience en chat sur WhatsApp — Meta n'y autorise pas de webview

« Le paiement le plus rapide est celui qui demande le moins de champs. »

Pour les commerçants qui possèdent leur page de paiement — et leurs chats.

Le snippet embed s'adapte là où la marque appartient au commerçant, pas à nous.

Boutiques D2C web

Gardez l'acheteur sur la page de la marque du panier à la confirmation. Le paiement ne va jamais vers un domaine tiers.

HoReCa & services

Pré-commandes, acomptes et flux de réservation in-bot dans les Telegram Mini Apps — le même snippet s'y exécute.

Biens numériques

Règlement instantané, déverrouillage instantané. Le widget déclenche onSuccess dès que la banque confirme.

Social commerce

Instagram et TikTok link-out vers une landing qui exécute le même snippet — un seul cœur d'acceptation.

Abonnement & SaaS

Les paiements récurrents dépendent du rail, là où l'IPS sous-jacent les prend en charge.

Places de marché & plateformes

Déposez le snippet dans le paiement d'un locataire sans forker l'intégration par locataire.

Intégrez-le, ou restez sur la redirection — les deux sont disponibles aujourd'hui.

La voie embed est additive : les plugins WooCommerce, OpenCart, CS-Cart et le PHP SDK continuent de fonctionner comme paiements par redirection. Choisissez embed lorsque le commerçant possède la page ou le chat. Choisissez la redirection pour le scénario sans code / facture / lien depuis n'importe où.