Interface scanner QR. Les actions à usage unique sont prévues.
Interface scanner QR. Les actions à usage unique sont prévues.
← Tous les guides natifs

Xodera Plugins · Bubble Native

Xodera QR Passes Native

Créez des billets à usage unique, confirmations de retrait ou coupons. Le personnel scanne, vérifie, consulte la commande puis confirme l’utilisation.

Guides bêta publics · instructions Haptics dans sa fiche Bubble

Offre bêta publique : installation Bubble gratuite · essai de 7 jours avec carte, puis 1,50 USD/mois par plugin/projet.

Documentation révisée 6 novembre 2026

Exemples pratiques

Entrée à usage unique pour un événement dans la journée

Une simple valeur QR peut être copiée et réutilisée à plusieurs entrées.

Votre app conserve une Admission et un `request_id` stable pour l’émission ; utilisez `label=event` et un `ttl_seconds` compris entre 1 et 86400 secondes.

Un émetteur autorisé appelle Issue QR pass et remet le QR en privé. Le personnel scanne → Check QR pass → confirme seulement si `ok=yes` et `status=available` → Confirm QR redemption avec un ID stable enregistré.

Seuls `status=redeemed` et `receipt_id` autorisent le reçu d’admission de votre application. Enregistrez la référence du passe/reçu sur l’Admission ; n’exposez pas le contenu de QR aux analyses.

Pour `outcome_unknown`, récupérez la même requête avec le même utilisateur, le même environnement et le même pass QR ; ne générez jamais un nouvel ID de confirmation. Traitez les états expired et revoked, ainsi que le cas où le pass a déjà été utilisé, comme des résultats distincts.

Prévu. Le scan et la vérification n’utilisent pas le pass ; seule la confirmation le fait.

Utiliser une fois un avantage de courte durée chez un partenaire

Le partenaire a besoin d’un état utilisé/non utilisé confirmé côté serveur, pas d’une image QR ou d’une animation.

`label=coupon` ; l’Avantage de votre app définit l’éligibilité et une durée courte avant toute émission autorisée.

Émettez le pass après le contrôle d’éligibilité de votre app. Au comptoir, Check QR pass vérifie sans consommer. Après confirmation de la remise de l’avantage par le personnel, appelez Confirm QR redemption.

Votre Avantage peut conserver `receipt_id` et l’heure confirmée après `status=redeemed`. Le plugin gère l’état du pass ; votre app gère l’avantage et la relation client.

Si l’avantage est annulé avant utilisation, le même émetteur autorisé peut appeler Revoke QR pass avec `pass_id`. `ok=yes` seul ne prouve ni remboursement ni utilisation réussie.

Prévu. Le scan et la vérification n’utilisent pas le pass ; seule la confirmation le fait.

Confirmer un retrait de commande ou de matériel dans la journée

Le workflow doit distinguer la lecture d’une référence de la remise réelle de l’objet.

Le Retrait de votre app conserve l’autorisation, l’objet prévu et deux IDs stables pour émission et utilisation ; le pass `label=access` est de courte durée.

Après l’autorisation du Retrait par votre app, appelez Issue QR pass. Le personnel scanne, vérifie avec Check, consulte le Retrait correspondant, puis confirme la remise et appelle Confirm QR redemption.

Votre workflow ne passe le Retrait à remis qu’après un reçu `redeemed` confirmé. Gardez `receipt_id` pour relier l’état métier au résultat du pass.

Un nouveau scan peut retourner already_used : affichez le Retrait existant au lieu de remettre un autre objet. Réconciliez une confirmation incertaine avec le même ID et les mêmes paramètres.

Prévu. Le scan et la vérification n’utilisent pas le pass ; seule la confirmation le fait.

Ce qui fonctionne maintenant

Bêta privée. Le scanner actuel propose les commandes de caméra et d’autorisation. La création, la vérification et la confirmation des pass à usage unique sont prévues et ne sont pas encore utilisables dans votre app.

Construire le workflow

Prévu

Parcours prévu. Pas encore disponible dans la bêta actuelle.

Les exemples utilisent des fiches comme Lesson, Message et Order. Remplacez-les par vos types de données et noms d’éléments. Utilisez vos propres fichiers à la place des adresses d’exemple.

  1. Prévu : un employé autorisé lance Issue QR pass pour une Admission ou Order. Exemple : label=event, ttl_seconds=900, environment=development. Gardez le même request_id pour cette création et enregistrez pass_id avec la fiche.

  2. Montrez le QR au destinataire. Le personnel le scanne. Le parcours de pass prévu utilise workflow_mode=yes et scanned_pass_token après pass_scanned. Ces réglages ne sont pas disponibles dans le scanner actuel.

  3. Lancez Check QR pass avec pass_token = QR Scanner's scanned_pass_token. Le pass est vérifié sans être utilisé. Si status=available, montrez les détails de la commande ou de l’entrée.

  4. Seul un bouton Confirmer distinct lance Confirm QR redemption avec le même pass_token, un request_id stable et confirm=yes. Pour status=redeemed, enregistrez receipt_id et terminez la commande ou l’entrée.

  5. already_used, expired, revoked ou invalid interdit l’entrée ou la remise. Un scan ou Check réussi ne termine jamais la transaction à lui seul.

Diagramme de flux — pas une capture d’écran d’application · SVG

Configurer une fois

Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins. Choisissez Xodera QR Passes Native, copiez sa clé, puis ouvrez Bubble → Plugins → Xodera QR Passes Native et collez-la dans project_api_key. Enregistrez une fois, puis utilisez les actions ci-dessous. Chaque plugin de chaque projet possède sa propre clé.

Le scan demande la caméra. Pour les pass à usage unique, choisissez qui peut les créer et qui peut les vérifier à l’entrée ou au retrait. Un client ordinaire n’a pas besoin de ces rôles.

qr_issuer_permission_field

qr_pass_issuer · Nom du champ User yes/no désignant les employés qui peuvent créer ou annuler des pass. Exemple/défaut : qr_pass_issuer. Indiquez le nom du champ, pas yes ou no. Seul un administrateur autorisé doit modifier cette permission.

qr_staff_permission_field

qr_staff · Nom du champ User yes/no désignant le personnel autorisé à vérifier et confirmer l’utilisation. Exemple/défaut : qr_staff. Le détenteur du billet n’en a pas besoin. N’exposez pas ce réglage dans l’inscription ou le profil public.

Configurer une fois
  1. Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins.
  2. Choisissez ce plugin et copiez sa clé de projet.
  3. Ouvrez Bubble → Plugins → Xodera QR Passes Native ; collez la clé dans project_api_key et enregistrez.
  4. Ajoutez l’élément, choisissez vos données et construisez le workflow ci-dessous.
  5. Accès bêta privée uniquement pour le moment. Installation publique et activation payante non ouvertes.
Installation et abonnement

Pour Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit et Haptics : installation Bubble gratuite, essai de 7 jours avec carte, puis 1,50 USD par mois, par plugin et projet. Développement et production inclus, sans plafond d’opérations. Les limites de fichier et de fonction restent applicables. Vérifiez facturation et annulation avant confirmation. Les autres plugins ne sont pas ouverts à l’achat.

Enregistrer le résultat dans votre app

Exemple Admission ou Pickup : gardez la commande ou l’événement, pass_id, expires_at et issue_request_id. Après confirmation, ajoutez receipt_id, redeemed_at et l’employé ayant confirmé. Ne terminez pas la fiche au simple scan ou contrôle. Le QR ne vérifie pas l’identité d’une personne.

Échec, annulation et reprise

Si outcome_unknown=yes, gardez le même pass, request_id et paramètres pour retrouver le résultat. Ne créez pas une nouvelle confirmation. already_used, expired et revoked sont des résultats métier. En cas de refus, demandez à un administrateur autorisé de vérifier le rôle. Clear session réinitialise le scanner sans annuler une utilisation terminée.

Fonctions et limites

Les pass prévus sont à usage unique et valables 1–86400 secondes ; durée par défaut : 900. Types de pass : access, event, coupon et membership. La vérification ne réserve pas de pass. Une connexion Internet est nécessaire pour utiliser un pass. Aucun traitement des paiements, contrôle d’identité ou carte de membre réutilisable à long terme. La lecture d’une valeur QR ordinaire est distincte de la vérification d’un pass.

Réglages, actions et résultats

Utilisez ces noms dans Bubble. Les fonctionnalités prévues sont marquées séparément.

Paramètres bêta disponibles

Réglages de l’élément

disabled · yes/nois_active · yes/noui_text_json · textlanguage · text

États

scanner_status · textserver_status · textpass_id · textpass_label · textreceipt_id · texterror_code · textis_busy · yes/nois_scanning · yes/notorch_enabled · yes/noscan_source · textpending_redemption · yes/no

Événements

scanner_startedscanner_pausedscanner_cancelledpermission_deniedpass_scannedvalidation_startedvalidation_completedredemption_startedpass_redeemedredemption_rejectedredemption_pendingfixture_decodedqr_error

Actions et paramètres

Clear session
Réglages de l’élément · 5

Parcours prévu. Pas encore disponible dans la bêta actuelle.

disabledyes/no · Défaut: false
Valeur exempleno
Expression Bubble exempleGuideHost's is_busy (your yes/no custom state)
Désactivez l’élément si l’app est occupée ou l’action indisponible.
is_activeyes/no · Défaut: true
Valeur exempleyes
Expression Bubble exempleGuideHost's view_is_active (your yes/no custom state)
yes tant que cette vue est ouverte ; no en la quittant pour arrêter la lecture ou l’action en cours.
ui_text_jsontext · Défaut: "{}"
Valeur exemple{}
Expression Bubble exempleApp Settings' player_labels_json (supported keys only)
JSON facultatif avec les libellés de boutons pris en charge. Laissez vide pour les textes intégrés.
languagetext · Défaut: "auto"
Valeur exempleuk
Expression Bubble exempleCurrent User's preferred_language
Utilisez language=auto pour suivre une langue prise en charge sur l’appareil ou dans le navigateur. Saisissez un code de langue pris en charge pour la choisir explicitement.
workflow_modeyes/no · Défaut: false
Valeur exempleyes
Expression Bubble exempleApp Settings' use_qr_business_actions
Prévu : utiliser le QR scanné avec Check QR pass. Scanner seul ne confirme ni entrée ni retrait.
Actions et paramètres · 5

Parcours prévu. Pas encore disponible dans la bêta actuelle.

Clear session

Aucun paramètre d’action

Issue QR pass
environmenttext · Défaut: "development"
Valeur exempledevelopment
Expression Bubble exempleApp Settings' selected_environment
Utilisez la valeur de la fiche courante et les limites ci-dessous.
request_idtext · Défaut: —
Valeur exemplepickup-123-issue-v1
Expression Bubble exempleCurrent Admission's stable_request_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
labeltext · Défaut: "access"
Valeur exempleevent
Expression Bubble exempleSelected Admission's pass_label
Utilisez la valeur de la fiche courante et les limites ci-dessous.
ttl_secondsnumber · Défaut: 900
Valeur exemple900
Expression Bubble exempleEvent Settings' pass_ttl_seconds
Utilisez la valeur de la fiche courante et les limites ci-dessous.

Retours

pass_id · textpass_token · textpass_label · textexpires_at · textqr_png_data_uri · textreused · yes/no
Check QR pass
environmenttext · Défaut: "development"
Valeur exempledevelopment
Expression Bubble exempleApp Settings' selected_environment
Utilisez la valeur de la fiche courante et les limites ci-dessous.
pass_tokentext · Défaut: —
Valeur exemple<opaque token returned by Issue / camera scan>
Expression Bubble exempleQR Pass Scanner's scanned_pass_token (capture before Check)
Utilisez la valeur de la fiche courante et les limites ci-dessous.

Retours

pass_label · textexpires_at · text
Confirm QR redemption
environmenttext · Défaut: "development"
Valeur exempledevelopment
Expression Bubble exempleApp Settings' selected_environment
Utilisez la valeur de la fiche courante et les limites ci-dessous.
pass_tokentext · Défaut: —
Valeur exemple<opaque token returned by Issue / camera scan>
Expression Bubble exempleQR Pass Scanner's scanned_pass_token (capture before Check)
Utilisez la valeur de la fiche courante et les limites ci-dessous.
request_idtext · Défaut: —
Valeur exemplepickup-123-redeem-v1
Expression Bubble exempleCurrent Admission's stable_redemption_request_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
confirmyes/no · Défaut: false
Valeur exempleyes — explicit confirmation only
Expression Bubble exempleConfirm Checkbox is checked
Utilisez la valeur de la fiche courante et les limites ci-dessous.

Retours

pass_id · textpass_label · textreceipt_id · textredeemed_at · textreused · yes/no
Revoke QR pass
environmenttext · Défaut: "development"
Valeur exempledevelopment
Expression Bubble exempleApp Settings' selected_environment
Utilisez la valeur de la fiche courante et les limites ci-dessous.
pass_idtext · Défaut: —
Valeur exemple<pass_id returned by Issue>
Expression Bubble exempleSelected Admission's pass_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.

Retours

pass_id · textrevoked · yes/no
États et événements

Parcours prévu. Pas encore disponible dans la bêta actuelle.

États

scanner_status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite. idle,requesting_permission,permission_denied,scanning,paused,scanned,validating,available,redeeming,redeemed,unavailable,unknown,error,cancelled,decoding_fixture,fixture_decoded

server_status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite. empty,available,redeemed,already_used,expired,revoked

pass_id · text

Identifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.

pass_label · text

Valeur actuelle de l’élément sélectionné. À lire après l’événement correspondant. empty,access,event,coupon,membership

receipt_id · text

Identifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.

error_code · text

Information sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.

is_busy · yes/no

Une action est en cours. Attendez avant d’en lancer une autre.

is_scanning · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

torch_enabled · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

scan_source · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant. empty,camera,fixture

pending_redemption · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

scanned_pass_token · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

Événements

scanner_started

À cet événement, lisez les états correspondants du même élément.

scanner_paused

À cet événement, lisez les états correspondants du même élément.

scanner_cancelled

À cet événement, lisez les états correspondants du même élément.

permission_denied

À cet événement, lisez les états correspondants du même élément.

pass_scanned

À cet événement, lisez les états correspondants du même élément.

validation_started

À cet événement, lisez les états correspondants du même élément.

validation_completed

À cet événement, lisez les états correspondants du même élément.

redemption_started

À cet événement, lisez les états correspondants du même élément.

pass_redeemed

À cet événement, lisez les états correspondants du même élément.

redemption_rejected

À cet événement, lisez les états correspondants du même élément.

redemption_pending

À cet événement, lisez les états correspondants du même élément.

fixture_decoded

À cet événement, lisez les états correspondants du même élément.

qr_error

À cet événement, lisez les états correspondants du même élément.

Questions des développeurs

À quoi servent les deux réglages de permission ?

Nom du champ User yes/no désignant les employés qui peuvent créer ou annuler des pass. Exemple/défaut : qr_pass_issuer. Indiquez le nom du champ, pas yes ou no. Seul un administrateur autorisé doit modifier cette permission. Nom du champ User yes/no désignant le personnel autorisé à vérifier et confirmer l’utilisation. Exemple/défaut : qr_staff. Le détenteur du billet n’en a pas besoin. N’exposez pas ce réglage dans l’inscription ou le profil public.

Le même employé peut-il créer et vérifier les pass ?

Oui, si un administrateur autorisé lui attribue les deux permissions. Aucune autre clé de projet n’est nécessaire. Les clients n’ont généralement besoin d’aucune de ces permissions. Ne laissez pas les utilisateurs se les attribuer eux-mêmes.

Pourquoi Check après Scan ?

Scan lit le code. Check vérifie que le pass est disponible sans l’utiliser. Le personnel peut d’abord vérifier la commande. Seule l’action distincte Confirm QR redemption utilise le pass une fois.

Comment fonctionne l’abonnement ?

Tarification prévue : l'installation du plugin dans Bubble est gratuite. L'accès BestPlugins est un abonnement séparé pour chaque plugin dans chaque projet d'application Bubble : 7 jours gratuits, puis US$1.50 par mois. Development et Live sont inclus. Il n'y a pas de limite fixe au nombre d'opérations ; les limites de taille de fichier et de fonctionnalités restent applicables. Le paiement n'est pas encore ouvert. L'écran d'activation affichera la première date de facturation et les conditions d'annulation.

Autres exemples du produit
Xodera QR Passes Native — Exemple antérieur du produit ; l’apparence peut différer dans la bêta actuelle.
Exemple antérieur du produit ; l’apparence peut différer dans la bêta actuelle.

Guides associés

Marketplace publication en attente

Guide du forum non publié

Pour obtenir de l’aide, indiquez le plugin, l’appareil, l’action essayée et le résultat. Utilisez un exemple sans données personnelles. Ne partagez jamais votre clé ni vos fichiers privés.