QR‑Scanner‑Schnittstelle. Einmalige Pass‑Aktionen sind geplant.
QR‑Scanner‑Schnittstelle. Einmalige Pass‑Aktionen sind geplant.
← Alle nativen Anleitungen

Xodera Plugins · Bubble Native

Xodera QR Passes Native

Erstellen Sie Einmal‑Tickets, Abholbestätigungen oder Gutscheine. Das Personal scannt den Code, prüft das Ergebnis, zeigt die Bestellung in der Vorschau und bestätigt die Nutzung nur, wenn es bereit ist.

Public beta guides · Haptics instructions are in its Bubble listing

Public beta offer: free Bubble install · 7-day card trial, then US$1.50/month per plugin/project.

Dokumentation geprüft 6 November 2026

Praktische Beispiele

Einmalige Eintrittskarte für eine Veranstaltung am selben Tag

Ein Screenshot eines normalen QR‑Werts kann anderweitig an mehr als einem Eingang wiederverwendet werden.

Ihre App speichert einen Admission‑Datensatz und eine stabile Ausgabe `request_id`; verwenden Sie kuratierte `label=event` und ein `ttl_seconds` innerhalb des 1–86400‑Sekunden‑Vertrags.

Ein autorisierter Aussteller führt Issue QR pass aus und liefert das zurückgegebene QR privat aus. Personal scannt → Check QR pass → bestätigt nur, wenn `ok=yes` und `status=available` → Confirm QR redemption mit einer gespeicherten stabilen Anforderungs‑ID vorliegen.

Nur `status=redeemed` plus `receipt_id` autorisieren die Eintritts‑Quittung Ihrer App. Speichern Sie die Pass-/Quittungsreferenz im Admission; geben Sie die Inhalte von QR nicht an die Analyse weiter.

Für `outcome_unknown` stellen Sie dieselbe Anfrage mit demselben Benutzer, derselben Umgebung und demselben QR-Pass wieder her; erzeugen Sie niemals eine neue Bestätigungs-ID. Behandeln Sie die Zustände expired und revoked sowie einen bereits verwendeten Pass als unterschiedliche Ergebnisse.

Geplant. Scannen und Prüfen verwenden den Pass nicht; nur die explizite Bestätigung tut es.

Lösen Sie einen kurzlebigen Vorteil einmalig an einem Partner‑Schalter ein

Ein Partner benötigt ein bestätigtes Ergebnis (verwendet/nicht verwendet) anstelle des Vertrauens auf ein QR‑Bild oder eine Bildschirmanimation.

`label=coupon`; der Benefit‑Datensatz der App definiert die Berechtigung und ein kurzes Gültigkeitsfenster vor einer autorisierten Ausgabefunktion.

Geben Sie einen Pass nur nach der Berechtigungsprüfung Ihrer App aus. Am Schalter zeigt Check QR pass die Verfügbarkeit, ohne ihn zu verbrauchen. Nachdem das Personal die Bereitstellung der Leistung bestätigt hat, führen Sie Confirm QR redemption aus.

Ihr Benefit‑Datensatz kann `receipt_id` und die bestätigte Einlösezeit nach `status=redeemed` speichern. Das Plugin verwaltet den Pass‑Status; Ihre App verwaltet den Vorteil und die Kundenbeziehung.

Wenn ein Vorteil vor der Nutzung storniert wird, kann derselbe autorisierte Aussteller Revoke QR pass mit seinem `pass_id` durchführen. Kündigen Sie keine Rückerstattung oder erfolgreiche Einlösung ausschließlich anhand von `ok=yes` an.

Geplant. Scannen und Prüfen verwenden den Pass nicht; nur die explizite Bestätigung tut es.

Bestätigen Sie eine Abholung von Ausrüstung oder Bestellung am selben Tag

Ein Personal‑Workflow muss das Scannen einer Sammlungsreferenz vom tatsächlichen Übergabevorgang eines Artikels unterscheiden.

Der von Ihrer App verwaltete Collection‑Datensatz speichert die Autorisierung, das beabsichtigte Element und separate stabile Ausstellungs‑/Einlöse‑Anforderungs‑IDs; verwenden Sie einen kurzlebigen `label=access`‑Pass.

Nachdem Ihre App die Sammlung autorisiert hat, Issue QR pass. Das Personal scannt und prüft, inspiziert die passende Collection in Ihrer App und bestätigt anschließend ausdrücklich die Übergabe sowie Confirm QR redemption.

Erst nach einer bestätigten `redeemed`‑Quittung sollte Ihr Workflow die Sammlung auf übergeben setzen. Behalten Sie `receipt_id` als Verknüpfung zum Pass‑Ergebnis.

Ein wiederholter Scan kann already_used zurückgeben; zeigen Sie den bestehenden App‑Datensatz anstatt ein weiteres Element zu übergeben. Stellen Sie eine unklare Bestätigung mit derselben ID und denselben Eingaben wieder her.

Geplant. Scannen und Prüfen verwenden den Pass nicht; nur die explizite Bestätigung tut es.

Was jetzt funktioniert

Private Beta. Der aktuelle Scanner verfügt über Kamera‑ und Berechtigungskontrollen. Das Erstellen, Prüfen und Bestätigen von Einmal‑Pässen ist geplant und noch nicht in Ihrer App einsatzbereit.

Workflow erstellen

Geplant

Geplanter Workflow. In der aktuellen Beta noch nicht verfügbar.

Diese Beispiele verwenden App‑Datensätze wie Lesson, Message und Order. Ersetzen Sie sie durch Ihre eigenen Datentypen und Elementnamen. Beispiel‑Medienadressen müssen durch Ihre eigenen Dateien ersetzt werden.

  1. Geplant: ein autorisierter Mitarbeitender verwendet Issue QR pass für einen Eintritt oder Order. Beispiel: label=event, ttl_seconds=900, environment=development. Bewahren Sie ein stabiles request_id für dieses Anliegen auf und speichern Sie pass_id zusammen mit dem Datensatz.

  2. Zeigen Sie das zurückgegebene QR dem vorgesehenen Empfänger. Das Personal scannt es. Im geplanten Pass‑Workflow verwenden Sie workflow_mode=yes und lesen scanned_pass_token nach pass_scanned. Diese Pass‑Workflow‑Einstellungen stehen im aktuellen Scanner nicht zur Verfügung.

  3. Führen Sie Check QR pass mit pass_token = QR Scanner's scanned_pass_token aus. Es prüft, ohne den Pass zu verwenden. Für status=available zeigen Sie die passende Bestellung oder Eintrittsdetails an, damit das Personal sie prüfen kann.

  4. Nur ein separater Bestätigen‑Button führt Confirm QR redemption mit demselben pass_token, einem stabilen request_id und confirm=yes aus. Bei status=redeemed speichern Sie receipt_id und markieren die entsprechende Bestellung oder den Eintrag als abgeschlossen.

  5. already_used, expired, revoked oder invalid bedeutet, die Bestellung nicht zu gewähren oder zu übergeben. Ein Scan oder ein erfolgreicher Check allein schließt die Transaktion niemals ab.

Workflow‑Diagramm — kein App‑Screenshot

Einmal konfigurieren

Erstellen oder wählen Sie Ihr Bubble‑App‑Projekt in BestPlugins → Dashboard → Plugins. Wählen Sie Xodera QR Passes Native, kopieren Sie dessen Schlüssel und öffnen Sie anschließend Bubble → Plugins → Xodera QR Passes Native, um ihn in project_api_key einzufügen. Speichern Sie einmal; verwenden Sie dann die untenstehenden Aktionen. Jeder Plugin in jedem Projekt hat einen eigenen Schlüssel.

Zum Scannen ist eine Kameraberechtigung erforderlich. Bei Einmal‑Pässen entscheiden Sie, wer Pässe erstellen und wer sie an der Tür oder am Abholpunkt prüfen darf. Normale Kunden benötigen keine Mitarbeiterrolle.

qr_issuer_permission_field

qr_pass_issuer · Name des Benutzer‑Ja/Nein‑Feldes, das Mitarbeiter kennzeichnet, die Pässe erstellen oder widerrufen dürfen. Beispiel/Standard: qr_pass_issuer. Trage hier den Feldnamen ein, nicht ja oder nein. Nur ein autorisierter Administrator sollte diese Berechtigung für einen Benutzer ändern.

qr_staff_permission_field

qr_staff · Name des Benutzers Ja/Nein‑Feld, das das Personal kennzeichnet, das prüfen und die Nutzung bestätigen darf. Beispiel/Standard: qr_staff. Ein Ticketinhaber benötigt diese Berechtigung nicht. Aus öffentlichen Anmelde‑ und Profilformularen herauslassen.

Einmal konfigurieren
  1. Erstellen oder wählen Sie Ihr Bubble‑App‑Projekt bei BestPlugins → Dashboard → Plugins.
  2. Wählen Sie dieses Plugin aus und kopieren Sie dessen Projektschlüssel.
  3. Öffnen Sie Bubble → Plugins → Xodera QR Passes Native; fügen Sie den Schlüssel in project_api_key ein und speichern Sie.
  4. Fügen Sie das Element hinzu, wählen Sie Ihre App‑Daten und erstellen Sie den untenstehenden Workflow.
  5. Privater Beta‑Zugang nur vorerst. Öffentliche Installation und kostenpflichtige Aktivierung sind noch nicht verfügbar.
Installation und Abonnement

For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.

Speichern Sie das Ergebnis in Ihrer App

Beispiel für Eintritt oder Abholung: Speichern Sie die zugehörige Bestellung/Ereignis, pass_id, expires_at und issue_request_id. Nach bestätigter Nutzung fügen Sie receipt_id, redeemed_at und den bestätigenden Mitarbeitenden hinzu. Markieren Sie den Datensatz nicht als abgeschlossen, wenn der Code nur gescannt oder geprüft wurde. Ein QR‑Code verifiziert die Identität einer Person nicht.

Fehler, Abbruch und Wiederherstellung

Wenn outcome_unknown=yes, behalten Sie denselben Pass, request_id und die Eingaben bei einer erneuten Ergebnisprüfung. Erstellen Sie keine neue Bestätigung. already_used, expired und revoked sind endgültige Geschäftsergebnisse. Bei verweigerter Berechtigung bitten Sie einen autorisierten Administrator, die Rolle des Mitarbeitenden zu prüfen. Clear session setzt den Scanner zurück; ein abgeschlossener Vorgang kann nicht rückgängig gemacht werden.

Funktionen und Grenzen

Geplante Pässe sind einmalig nutzbar und 1–86400 Sekunden gültig; Standardwert: 900. Passtypen: access, event, coupon und membership. Eine Prüfung reserviert keinen Pass. Zur Nutzung eines Passes ist eine Internetverbindung erforderlich. Keine Zahlungsabwicklung, Identitätsprüfung oder wiederverwendbare, langfristig gültige Mitgliedskarte. Das Auslesen eines gewöhnlichen QR-Werts ist von der Prüfung eines Passes getrennt.

Einstellungen, Aktionen und Ergebnisse

Verwenden Sie diese Namen in Bubble. Geplante Funktionen sind separat gekennzeichnet.

Verfügbare Beta‑Einstellungen

Elementeinstellungen

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

Zustände

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

Ereignisse

scanner_startedscanner_pausedscanner_cancelledpermission_deniedpass_scannedvalidation_startedvalidation_completedredemption_startedpass_redeemedredemption_rejectedredemption_pendingfixture_decodedqr_error

Aktionen und deren Eingaben

Clear session
Elementeinstellungen · 5

Geplanter Workflow. In der aktuellen Beta noch nicht verfügbar.

disabledyes/no · Standard: false
Beispielwertno
Beispiel Bubble AusdruckGuideHost's is_busy (your yes/no custom state)
Deaktivieren Sie das Element, solange Ihre App beschäftigt ist oder diese Aktion nicht verfügbar ist.
is_activeyes/no · Standard: true
Beispielwertyes
Beispiel Bubble AusdruckGuideHost's view_is_active (your yes/no custom state)
Setzen Sie ja, solange diese Ansicht geöffnet ist. Setzen Sie nein beim Verlassen, damit die Wiedergabe oder die aktuelle Arbeit gestoppt werden kann.
ui_text_jsontext · Standard: "{}"
Beispielwert{}
Beispiel Bubble AusdruckApp Settings' player_labels_json (supported keys only)
Optionales JSON mit unterstützten Schaltflächenbeschriftungen. Leer lassen, um den integrierten Text zu verwenden.
languagetext · Standard: "auto"
Beispielwertuk
Beispiel Bubble AusdruckCurrent User's preferred_language
Setzen Sie language=auto, um einer unterstützten Geräte‑ oder Browsersprache zu folgen. Geben Sie einen unterstützten Sprachcode ein, um ihn ausdrücklich auszuwählen.
workflow_modeyes/no · Standard: false
Beispielwertyes
Beispiel Bubble AusdruckApp Settings' use_qr_business_actions
Geplant: den gescannten QR‑Wert von Check QR pass verwenden zu lassen. Allein das Scannen bestätigt weder den Eintritt noch die Abholung.
Aktionen und deren Eingaben · 5

Geplanter Workflow. In der aktuellen Beta noch nicht verfügbar.

Clear session

Keine Aktionsparameter

Issue QR pass
environmenttext · Standard: "development"
Beispielwertdevelopment
Beispiel Bubble AusdruckApp Settings' selected_environment
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
request_idtext · Standard: —
Beispielwertpickup-123-issue-v1
Beispiel Bubble AusdruckCurrent Admission's stable_request_id
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
labeltext · Standard: "access"
Beispielwertevent
Beispiel Bubble AusdruckSelected Admission's pass_label
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
ttl_secondsnumber · Standard: 900
Beispielwert900
Beispiel Bubble AusdruckEvent Settings' pass_ttl_seconds
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.

Rückgaben

pass_id · textpass_token · textpass_label · textexpires_at · textqr_png_data_uri · textreused · yes/no
Check QR pass
environmenttext · Standard: "development"
Beispielwertdevelopment
Beispiel Bubble AusdruckApp Settings' selected_environment
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
pass_tokentext · Standard: —
Beispielwert<opaque token returned by Issue / camera scan>
Beispiel Bubble AusdruckQR Pass Scanner's scanned_pass_token (capture before Check)
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.

Rückgaben

pass_label · textexpires_at · text
Confirm QR redemption
environmenttext · Standard: "development"
Beispielwertdevelopment
Beispiel Bubble AusdruckApp Settings' selected_environment
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
pass_tokentext · Standard: —
Beispielwert<opaque token returned by Issue / camera scan>
Beispiel Bubble AusdruckQR Pass Scanner's scanned_pass_token (capture before Check)
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
request_idtext · Standard: —
Beispielwertpickup-123-redeem-v1
Beispiel Bubble AusdruckCurrent Admission's stable_redemption_request_id
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
confirmyes/no · Standard: false
Beispielwertyes — explicit confirmation only
Beispiel Bubble AusdruckConfirm Checkbox is checked
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.

Rückgaben

pass_id · textpass_label · textreceipt_id · textredeemed_at · textreused · yes/no
Revoke QR pass
environmenttext · Standard: "development"
Beispielwertdevelopment
Beispiel Bubble AusdruckApp Settings' selected_environment
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
pass_idtext · Standard: —
Beispielwert<pass_id returned by Issue>
Beispiel Bubble AusdruckSelected Admission's pass_id
Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.

Rückgaben

pass_id · textrevoked · yes/no
Zustände und Ereignisse

Geplanter Workflow. In der aktuellen Beta noch nicht verfügbar.

Zustände

scanner_status · text

Aktuelles Ergebnis dieser Aktion. Verwende das passende Abschlussereignis, bevor du den Erfolg speicherst. idle,requesting_permission,permission_denied,scanning,paused,scanned,validating,available,redeeming,redeemed,unavailable,unknown,error,cancelled,decoding_fixture,fixture_decoded

server_status · text

Aktuelles Ergebnis dieser Aktion. Verwende das passende Abschlussereignis, bevor du den Erfolg speicherst. empty,available,redeemed,already_used,expired,revoked

pass_id · text

Kennzeichen für dieses Element oder diese Aktion. Bewahren Sie es zusammen mit dem zugehörigen App‑Datensatz auf. Verwenden Sie dieselbe Anforderungs‑Kennung, wenn Sie ein unsicheres Ergebnis erneut versuchen.

pass_label · text

Aktueller Wert für das ausgewählte Element. Nach dem zugehörigen Ereignis lesen. empty,access,event,coupon,membership

receipt_id · text

Kennzeichen für dieses Element oder diese Aktion. Bewahren Sie es zusammen mit dem zugehörigen App‑Datensatz auf. Verwenden Sie dieselbe Anforderungs‑Kennung, wenn Sie ein unsicheres Ergebnis erneut versuchen.

error_code · text

Fehlermeldung für die letzte Aktion. Zeigen Sie eine hilfreiche Nachricht an und bieten Sie den entsprechenden Wiederholungsversuch an.

is_busy · yes/no

Die Arbeit ist noch im Gange. Bitte warten Sie, bevor Sie eine weitere Aktion starten.

is_scanning · yes/no

Aktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.

torch_enabled · yes/no

Aktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.

scan_source · text

Aktueller Wert für das ausgewählte Element. Lies ihn nach dem zugehörigen Ereignis. empty,camera,fixture

pending_redemption · yes/no

Aktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.

scanned_pass_token · text

Aktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.

Ereignisse

scanner_started

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

scanner_paused

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

scanner_cancelled

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

permission_denied

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

pass_scanned

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

validation_started

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

validation_completed

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

redemption_started

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

pass_redeemed

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

redemption_rejected

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

redemption_pending

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

fixture_decoded

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

qr_error

Wenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.

Fragen, die Entwickler stellen

Was bedeuten die beiden Berechtigungseinstellungen?

Name des Benutzer‑Ja/Nein‑Feldes, das Mitarbeitende kennzeichnet, die Berechtigungen zum Erstellen oder Widerrufen von Pässen haben. Beispiel/Standard: qr_pass_issuer. Tragen Sie hier den Feldnamen ein, nicht ja oder nein. Nur ein autorisierter Administrator sollte diese Berechtigung für einen Benutzer ändern. Name des Benutzer‑Ja/Nein‑Feldes, das Personal kennzeichnet, das Berechtigungen zum Prüfen und Bestätigen der Nutzung hat. Beispiel/Standard: qr_staff. Ein Ticketinhaber benötigt diese Berechtigung nicht. Halten Sie es aus öffentlichen Anmelde‑ und Profilformularen heraus.

Kann derselbe Mitarbeitende Pässe erstellen und prüfen?

Ja, wenn ein autorisierter Administrator dem Mitarbeitenden beide Berechtigungen erteilt. Dafür ist kein weiterer Projektschlüssel erforderlich. Kunden benötigen normalerweise keine der beiden Berechtigungen. Lassen Sie Nutzer diese Berechtigungen nicht selbst zuweisen.

Warum nach dem Scan prüfen?

Der Scan liest den Code. Check fragt, ob der Pass verfügbar ist, ohne ihn zu verwenden. Das Personal kann die Bestellung zuerst prüfen. Nur die separate Confirm QR redemption‑Aktion verwendet den Pass einmal.

Wie funktioniert das Abonnement?

Geplante Preisgestaltung: Die Installation des Plugins in Bubble ist kostenlos. Der Zugriff auf BestPlugins ist ein separates Abonnement für jedes Plugin in jedem Bubble App‑Projekt: 7 Tage kostenlos, dann US$1.50 pro Monat. Development und Live sind enthalten. Es gibt keine feste Obergrenze für die Anzahl der Vorgänge; Dateigrößen‑ und Funktionslimits gelten weiterhin. Der Checkout ist noch nicht geöffnet. Der Aktivierungsbildschirm zeigt das erste Rechnungsdatum und die Kündigungsbedingungen.

Verwandte Anleitungen

Marketplace‑Veröffentlichung ausstehend

Forum‑Anleitung nicht veröffentlicht

Für Hilfe geben Sie an, welches Plugin und Gerät Sie verwenden, welche Aktion Sie versucht haben und was passiert ist. Verwenden Sie ein Beispiel ohne persönliche Daten. Teilen Sie niemals Ihren Schlüssel oder private Dateien.