Interfață scanner QR. Acțiuni cu un singur utilizare sunt planificate.
Interfață scanner QR. Acțiuni cu un singur utilizare sunt planificate.
← Toate ghidurile native

Xodera Plugins · Bubble Native

Xodera QR Passes Native

Creați bilete cu o singură utilizare, confirmări de ridicare sau cupoane. Personalul scanează codul, verifică rezultatul, previzualizează comanda și confirmă utilizarea doar când este pregătit.

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.

Documentație revizuită 6 noiembrie 2026

Exemple practice

Acces cu o singură utilizare pentru un eveniment din aceeași zi

O captură de ecran a unei valori obișnuite QR poate fi reutilizată la mai multe intrări.

Aplicația dvs. stochează o înregistrare Admission și o emitere stabilă `request_id`; utilizați `label=event` curat și un `ttl_seconds` în cadrul contractului 1–86400-secund.

Un emitent autorizat rulează Issue QR pass și livrează în privat QR returnat. Personalul scanează → Check QR pass → confirmă numai dacă `ok=yes` și `status=available` → Confirm QR redemption cu un ID de cerere stabil stocat.

Doar `status=redeemed` plus `receipt_id` autorizează chitanța de admitere a aplicației dvs. Stocați referința la permis/chitanță în Admission; nu expuneți conținutul QR către analize.

Pentru `outcome_unknown`, recuperați aceeași cerere cu utilizator/mediu/permis identice; nu generați niciodată un nou ID de confirmare. Gestionați expired, revoked și stările deja utilizate ca rezultate distincte.

Planificat. Scanarea și verificarea nu utilizează permisul; doar confirmarea explicită o face.

Valorificați un beneficiu de scurtă durată o singură dată la ghișeul partenerului

Un partener are nevoie de un rezultat confirmat utilizat/neutilizat în loc să se bazeze pe o imagine QR sau pe o animație pe ecran.

`label=coupon`; înregistrarea Benefit a aplicației definește eligibilitatea și o fereastră scurtă de valabilitate înainte de acțiunea de emitere autorizată.

Emiteți un permis numai după verificarea eligibilității în aplicația dvs. La ghișeu, Check QR pass afișează disponibilitatea fără a o consuma. După ce membrul personalului confirmă livrarea beneficiului, rulați Confirm QR redemption.

Înregistrarea dvs. Benefit poate stoca `receipt_id` și ora de răscumpărare confirmată după `status=redeemed`. Pluginul gestionează starea permisului; aplicația dvs. gestionează beneficiul și relația cu clientul.

Dacă un beneficiu este anulat înainte de utilizare, același emitent autorizat poate Revoke QR pass utilizând `pass_id` său. Nu anunțați o rambursare sau o răscumpărare reușită doar din `ok=yes`.

Planificat. Scanarea și verificarea nu utilizează permisul; doar confirmarea explicită o face.

Confirmați ridicarea echipamentului sau a comenzii în aceeași zi

Un flux de lucru al personalului trebuie să distingă scanarea unei referințe de colecție de predarea efectivă a unui articol.

Înregistrarea Collection deținută de aplicația dvs. păstrează autorizația, articolul dorit și ID-uri separate de cerere de emitere/răscumpărare stabile; utilizați un permis `label=access` de scurtă durată.

După ce aplicația dvs. autorizează colecția, Issue QR pass. Personalul scanează și verifică, inspectează colecția corespunzătoare în aplicația dvs., apoi confirmă explicit predarea și Confirm QR redemption.

Doar după o chitanță `redeemed` confirmată ar trebui fluxul dvs. de lucru să marcheze Colecția ca predată. Păstrați `receipt_id` ca legătură la rezultatul permisului.

O scanare repetată poate returna already_used; afișați înregistrarea existentă a aplicației în loc să predați un alt articol. Recuperați o confirmare incertă cu același ID și aceleași intrări.

Planificat. Scanarea și verificarea nu utilizează permisul; doar confirmarea explicită o face.

Ce funcționează acum

Beta privată. Scannerul curent are controale pentru cameră și permisiuni. Crearea, verificarea și confirmarea permiselor cu o singură utilizare sunt planificate și nu sunt încă gata pentru a fi utilizate în aplicația dumneavoastră.

Construiește fluxul de lucru

Planificat

Flux de lucru planificat. Nu este încă disponibil în beta curentă.

Aceste exemple folosesc înregistrări de aplicație precum Lesson, Message și Order. Înlocuiți-le cu propriile tipuri de date și nume de elemente. Adresele media de exemplu trebuie înlocuite cu fișierele dumneavoastră.

  1. Planificat: un angajat autorizat folosește Issue QR pass pentru o înregistrare Admission sau Order. Exemplu: label=event, ttl_seconds=900, environment=development. Păstrați un request_id stabil pentru acea emitere și salvați pass_id împreună cu înregistrarea.

  2. Afișați QR returnat titularului său. Personalul îl scanează. În fluxul de lucru al pasului planificat, utilizați workflow_mode=yes și citiți scanned_pass_token după pass_scanned. Aceste setări ale fluxului de lucru al pasului nu sunt disponibile în scannerul curent.

  3. Rulați Check QR pass cu pass_token = QR Scanner's scanned_pass_token. Verifică fără a folosi pass-ul. Pentru status=available, afișați detaliile comenzii sau înregistrării corespunzătoare pentru ca personalul să le revizuiască.

  4. Doar un buton Confirm separat rulează Confirm QR redemption cu același pass_token, un request_id stabil și confirm=yes. La status=redeemed, salvați receipt_id și marcați comanda sau înregistrarea ca finalizată.

  5. already_used, expired, revoked sau invalid înseamnă să nu permiteți accesul și să nu predați comanda. O scanare sau o verificare reușită singură nu finalizează niciodată tranzacția.

Diagramă de flux de lucru — nu o captură de ecran a aplicației

Configurează o singură dată

Creați sau alegeți proiectul de aplicație Bubble în BestPlugins → Dashboard → Plugins. Alegeți Xodera QR Passes Native, copiați cheia acestuia, apoi deschideți Bubble → Plugins → Xodera QR Passes Native și inserați-o în project_api_key. Salvați o singură dată; apoi utilizați acțiunile de mai jos. Fiecare plugin din fiecare proiect are propria cheie.

Scanarea necesită permisiune pentru cameră. Pentru permise cu o singură utilizare, decideți cine poate crea permise și cine le poate verifica la ușă sau la punctul de ridicare. Clienții obișnuiți nu au nevoie de niciun rol de personal.

qr_issuer_permission_field

qr_pass_issuer · Numele câmpului utilizator da/nu care marchează angajații autorizați să creeze sau să revoce permise. Exemplu/implicit: qr_pass_issuer. Introduceți numele câmpului aici, nu da sau nu. Doar un administrator autorizat ar trebui să modifice această permisiune pentru un utilizator.

qr_staff_permission_field

qr_staff · Numele câmpului utilizator da/nu care marchează personalul autorizat să verifice și să confirme utilizarea. Exemplu/implicit: qr_staff. Deținătorul biletului nu are nevoie de această permisiune. Exclude‑o din formularele publice de înscriere și profil.

Configurează o singură dată
  1. Creați sau alegeți proiectul de aplicație Bubble la BestPlugins → Dashboard → Plugins.
  2. Selectați acest plugin și copiați cheia proiectului.
  3. Deschideți Bubble → Plugins → Xodera QR Passes Native; inserați cheia în project_api_key și salvați.
  4. Adăugați elementul, alegeți datele aplicației și construiți fluxul de lucru de mai jos.
  5. Acces beta privat doar pentru moment. Instalarea publică și activarea plătită nu sunt încă deschise.
Instalare și abonament

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.

Salvează rezultatul în aplicația ta

Exemplu Admitere sau Ridicare: salvați comanda/evenimentul asociat, pass_id, expires_at și issue_request_id. După utilizarea confirmată, adăugați receipt_id, redeemed_at și angajatul care a confirmat. Nu marcați înregistrarea ca finalizată când codul este doar scanat sau verificat. Un cod QR nu verifică identitatea unei persoane.

Eșec, anulare și recuperare

Dacă outcome_unknown=yes, păstrați același pass, request_id și intrările când verificați din nou rezultatul. Nu creați o nouă confirmare. already_used, expired și revoked sunt rezultate finale de afaceri. Dacă permisiunea este refuzată, solicitați unui administrator autorizat să revizuiască rolul angajatului. Clear session resetează scannerul; nu poate anula o utilizare finalizată.

Capacități și limite

Pasele planificate sunt cu un singur utilizare, cu o durată de viață de 1–86400 secunde; implicit 900. Tipuri de pase: access, event, coupon și membership. Verificarea nu rezervă un pass. Accesul la internet este necesar pentru utilizarea pass-ului. Nu există procesare de plată, verificare de identitate sau card de membru reutilizabil pe termen lung. Citirea unei valori obișnuite QR este separată de verificarea unui pass.

Setări, acțiuni și rezultate

Utilizați aceste nume în Bubble. Funcționalitățile planificate sunt marcate separat.

Setări beta disponibile

Setări element

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

Stări

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

Evenimente

scanner_startedscanner_pausedscanner_cancelledpermission_deniedpass_scannedvalidation_startedvalidation_completedredemption_startedpass_redeemedredemption_rejectedredemption_pendingfixture_decodedqr_error

Acțiuni și intrările lor

Clear session
Setări element · 5

Flux de lucru planificat. Nu este încă disponibil în beta curentă.

disabledyes/no · Implicit: false
Valoare exempluno
Exemplu Bubble expresieGuideHost's is_busy (your yes/no custom state)
Dezactivați elementul în timp ce aplicația este ocupată sau această acțiune nu este disponibilă.
is_activeyes/no · Implicit: true
Valoare exempluyes
Exemplu Bubble expresieGuideHost's view_is_active (your yes/no custom state)
Setați da în timp ce această vizualizare este deschisă. Setați nu la părăsire, pentru ca redarea sau lucrarea curentă să se oprească.
ui_text_jsontext · Implicit: "{}"
Valoare exemplu{}
Exemplu Bubble expresieApp Settings' player_labels_json (supported keys only)
JSON opțional cu etichete de buton acceptate. Lăsați gol pentru a utiliza textul încorporat.
languagetext · Implicit: "auto"
Valoare exempluuk
Exemplu Bubble expresieCurrent User's preferred_language
Setați language=auto să urmeze limba unui dispozitiv sau a unui browser acceptat. Introduceți un cod de limbă acceptat pentru a o selecta explicit.
workflow_modeyes/no · Implicit: false
Valoare exempluyes
Exemplu Bubble expresieApp Settings' use_qr_business_actions
Planificat: permiteți valorii QR scanate să fie utilizată de Check QR pass. Scanarea singură nu confirmă intrarea sau ridicarea.
Acțiuni și intrările lor · 5

Flux de lucru planificat. Nu este încă disponibil în beta curentă.

Clear session

Niciun parametru de acțiune

Issue QR pass
environmenttext · Implicit: "development"
Valoare exempludevelopment
Exemplu Bubble expresieApp Settings' selected_environment
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
request_idtext · Implicit: —
Valoare exemplupickup-123-issue-v1
Exemplu Bubble expresieCurrent Admission's stable_request_id
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
labeltext · Implicit: "access"
Valoare exempluevent
Exemplu Bubble expresieSelected Admission's pass_label
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
ttl_secondsnumber · Implicit: 900
Valoare exemplu900
Exemplu Bubble expresieEvent Settings' pass_ttl_seconds
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.

Returnări

pass_id · textpass_token · textpass_label · textexpires_at · textqr_png_data_uri · textreused · yes/no
Check QR pass
environmenttext · Implicit: "development"
Valoare exempludevelopment
Exemplu Bubble expresieApp Settings' selected_environment
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
pass_tokentext · Implicit: —
Valoare exemplu<opaque token returned by Issue / camera scan>
Exemplu Bubble expresieQR Pass Scanner's scanned_pass_token (capture before Check)
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.

Returnări

pass_label · textexpires_at · text
Confirm QR redemption
environmenttext · Implicit: "development"
Valoare exempludevelopment
Exemplu Bubble expresieApp Settings' selected_environment
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
pass_tokentext · Implicit: —
Valoare exemplu<opaque token returned by Issue / camera scan>
Exemplu Bubble expresieQR Pass Scanner's scanned_pass_token (capture before Check)
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
request_idtext · Implicit: —
Valoare exemplupickup-123-redeem-v1
Exemplu Bubble expresieCurrent Admission's stable_redemption_request_id
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
confirmyes/no · Implicit: false
Valoare exempluyes — explicit confirmation only
Exemplu Bubble expresieConfirm Checkbox is checked
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.

Returnări

pass_id · textpass_label · textreceipt_id · textredeemed_at · textreused · yes/no
Revoke QR pass
environmenttext · Implicit: "development"
Valoare exempludevelopment
Exemplu Bubble expresieApp Settings' selected_environment
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
pass_idtext · Implicit: —
Valoare exemplu<pass_id returned by Issue>
Exemplu Bubble expresieSelected Admission's pass_id
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.

Returnări

pass_id · textrevoked · yes/no
Stări și evenimente

Flux de lucru planificat. Nu este încă disponibil în beta curentă.

Stări

scanner_status · text

Rezultatul curent al acestei acțiuni. Folosește evenimentul de finalizare corespunzător înainte de a salva cu succes. idle,requesting_permission,permission_denied,scanning,paused,scanned,validating,available,redeeming,redeemed,unavailable,unknown,error,cancelled,decoding_fixture,fixture_decoded

server_status · text

Rezultatul curent al acestei acțiuni. Folosește evenimentul de finalizare corespunzător înainte de a salva cu succes. empty,available,redeemed,already_used,expired,revoked

pass_id · text

Identificator pentru acest element sau acțiune. Păstrați-l împreună cu înregistrarea corespunzătoare a aplicației. Utilizați același identificator de cerere când reîncercați un rezultat incert.

pass_label · text

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat. empty,access,event,coupon,membership

receipt_id · text

Identificator pentru acest element sau acțiune. Păstrați-l împreună cu înregistrarea corespunzătoare a aplicației. Utilizați același identificator de cerere când reîncercați un rezultat incert.

error_code · text

Informații despre eroarea ultimei acțiuni. Afișați un mesaj util și oferiți o reîncercare relevantă.

is_busy · yes/no

Lucrul este încă în desfășurare. Așteptați înainte de a începe o altă acțiune.

is_scanning · yes/no

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

torch_enabled · yes/no

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

scan_source · text

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat. empty,camera,fixture

pending_redemption · yes/no

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

scanned_pass_token · text

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

Evenimente

scanner_started

Când apare acest eveniment, citiți stările aferente din același element.

scanner_paused

Când apare acest eveniment, citiți stările aferente din același element.

scanner_cancelled

Când apare acest eveniment, citiți stările aferente din același element.

permission_denied

Când apare acest eveniment, citiți stările aferente din același element.

pass_scanned

Când apare acest eveniment, citiți stările aferente din același element.

validation_started

Când apare acest eveniment, citiți stările aferente din același element.

validation_completed

Când apare acest eveniment, citiți stările aferente din același element.

redemption_started

Când apare acest eveniment, citiți stările aferente din același element.

pass_redeemed

Când apare acest eveniment, citiți stările aferente din același element.

redemption_rejected

Când apare acest eveniment, citiți stările aferente din același element.

redemption_pending

Când apare acest eveniment, citiți stările aferente din același element.

fixture_decoded

Când apare acest eveniment, citiți stările aferente din același element.

qr_error

Când apare acest eveniment, citiți stările aferente din același element.

Întrebări pe care le pun dezvoltatorii

Ce înseamnă cele două setări de permisiune?

Numele câmpului utilizator da/nu care marchează angajații autorizați să creeze sau să revoce pase. Exemplu/implicit: qr_pass_issuer. Introduceți numele câmpului aici, nu da sau nu. Doar un administrator autorizat ar trebui să modifice această permisiune pentru un utilizator. Numele câmpului utilizator da/nu care marchează personalul autorizat să verifice și să confirme utilizarea. Exemplu/implicit: qr_staff. Deținătorul unui bilet nu are nevoie de această permisiune. Excludeți-l din formularele publice de înscriere și profil.

Poate același angajat să creeze și să verifice pasele?

Da, dacă un administrator autorizat acordă acelui angajat ambele permisiuni. Acest lucru nu necesită o altă cheie de proiect. Clienții în mod normal nu au nevoie de niciuna dintre permisiuni. Nu permite utilizatorilor să își atribuie aceste permisiuni.

De ce să folosiți Verificare după Scanare?

Scan citește codul. Verificarea întreabă dacă permisul este disponibil fără a-l folosi. Personalul poate revizui comanda mai întâi. Doar acțiunea separată Confirm QR redemption folosește permisul o singură dată.

Cum funcționează abonamentul?

Preț planificat: instalarea pluginului în Bubble este gratuită. Accesul BestPlugins este un abonament separat pentru fiecare plugin în fiecare proiect de aplicație Bubble: 7 zile gratuite, apoi US$1.50 pe lună. Development și Live sunt incluse. Nu există o limită fixă a numărului de operații; limitele de dimensiune a fișierelor și de funcționalități se aplică în continuare. Checkout-ul nu este încă deschis. Ecranul de activare va afișa data primei facturări și condițiile de anulare.

Ghiduri conexe

Lansare Marketplace în așteptare

Ghidul forumului nu a fost postat

Pentru ajutor, spuneți-ne ce plugin și dispozitiv utilizați, acțiunea pe care ați încercat-o și ce s-a întâmplat. Folosiți un exemplu fără date personale. Nu divulgați niciodată cheia sau fișierele private.