Flux Mobile (App ZYKAY)

Le loader v4 gère automatiquement les flux mobile et desktop.

Comportement v4

  • Mobile: bouton "Ouvrir ZYKAY" (deep link / universal link)
  • Desktop: QR code à scanner depuis l'app mobile
  • Retour succès: redirection vers data-success-path#grant_code=...

Intégration minimale

<script src="https://widget-app.zykay.com/v4/loader.min.js"
        data-partner-id="pk_live_xxx"
        data-success-path="/verified"
        data-scopes="isAdult"></script>

Aucun endpoint /launch ni URL /frame n'est requis en v4.

Traitement du retour

const hash = new URLSearchParams(window.location.hash.slice(1));
const grantCode = hash.get('grant_code');
if (grantCode) {
  await fetch('/api/zykay/exchange', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ grant_code: grantCode }),
  });
}

Mode server-verify (optionnel)

Si vous voulez attendre une confirmation backend avant déverrouillage UI:

<script src="https://widget-app.zykay.com/v4/loader.min.js"
        data-partner-id="pk_live_xxx"
        data-success-path="/verified"
        data-server-verify="true"
        data-server-verify-endpoint="/api/zykay/server-verify"
        data-server-verify-timeout="30"></script>

Contrat complet (events, endpoint attendu, timeout): Mode Server-Verify

Problèmes fréquents

  1. L'app ne s'ouvre pas:
  • vérifier installation de l'app ZYKAY
  • vérifier que le lien n'est pas bloqué par un navigateur interne
  1. L'utilisateur revient mais rien ne se passe:
  • vérifier lecture du grant_code dans window.location.hash
  • vérifier appel backend /api/zykay/exchange
  1. Retour avec query ?grant_code=:
  • encore toléré temporairement, mais migrer vers le fragment #grant_code=

Le fragment URL évite la propagation du grant_code dans les headers Referer.