
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.
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.
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.
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.
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.
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.
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
- Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins.
- Choisissez ce plugin et copiez sa clé de projet.
- Ouvrez Bubble → Plugins → Xodera QR Passes Native ; collez la clé dans project_api_key et enregistrez.
- Ajoutez l’élément, choisissez vos données et construisez le workflow ci-dessous.
- 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_errorActions et paramètres
Clear sessionRéglages de l’élément · 5
Parcours prévu. Pas encore disponible dans la bêta actuelle.
disabledyes/no · Défaut: false- Valeur exemple
no - Expression Bubble exemple
GuideHost'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 exemple
yes - Expression Bubble exemple
GuideHost'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 exemple
App 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 exemple
uk - Expression Bubble exemple
Current 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 exemple
yes - Expression Bubble exemple
App 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 exemple
development - Expression Bubble exemple
App Settings' selected_environment - Utilisez la valeur de la fiche courante et les limites ci-dessous.
request_idtext · Défaut: —- Valeur exemple
pickup-123-issue-v1 - Expression Bubble exemple
Current Admission's stable_request_id - Utilisez la valeur de la fiche courante et les limites ci-dessous.
labeltext · Défaut: "access"- Valeur exemple
event - Expression Bubble exemple
Selected Admission's pass_label - Utilisez la valeur de la fiche courante et les limites ci-dessous.
ttl_secondsnumber · Défaut: 900- Valeur exemple
900 - Expression Bubble exemple
Event 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/noCheck QR pass
environmenttext · Défaut: "development"- Valeur exemple
development - Expression Bubble exemple
App 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 exemple
QR 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 · textConfirm QR redemption
environmenttext · Défaut: "development"- Valeur exemple
development - Expression Bubble exemple
App 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 exemple
QR 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 exemple
pickup-123-redeem-v1 - Expression Bubble exemple
Current Admission's stable_redemption_request_id - Utilisez la valeur de la fiche courante et les limites ci-dessous.
confirmyes/no · Défaut: false- Valeur exemple
yes — explicit confirmation only - Expression Bubble exemple
Confirm 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/noRevoke QR pass
environmenttext · Défaut: "development"- Valeur exemple
development - Expression Bubble exemple
App 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 exemple
Selected 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 · textRé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 · textRé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 · textIdentifiant 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 · textValeur actuelle de l’élément sélectionné. À lire après l’événement correspondant. empty,access,event,coupon,membership
receipt_id · textIdentifiant 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 · textInformation sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.
is_busy · yes/noUne action est en cours. Attendez avant d’en lancer une autre.
is_scanning · yes/noValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
torch_enabled · yes/noValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
scan_source · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant. empty,camera,fixture
pending_redemption · yes/noValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
scanned_pass_token · textValeur 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.
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.
