
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ă.
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.
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.
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ă.
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ă.
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.
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ă
- Creați sau alegeți proiectul de aplicație Bubble la BestPlugins → Dashboard → Plugins.
- Selectați acest plugin și copiați cheia proiectului.
- Deschideți Bubble → Plugins → Xodera QR Passes Native; inserați cheia în project_api_key și salvați.
- Adăugați elementul, alegeți datele aplicației și construiți fluxul de lucru de mai jos.
- 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 · textStă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/noEvenimente
scanner_startedscanner_pausedscanner_cancelledpermission_deniedpass_scannedvalidation_startedvalidation_completedredemption_startedpass_redeemedredemption_rejectedredemption_pendingfixture_decodedqr_errorAcțiuni și intrările lor
Clear sessionSetări element · 5
Flux de lucru planificat. Nu este încă disponibil în beta curentă.
disabledyes/no · Implicit: false- Valoare exemplu
no - Exemplu Bubble expresie
GuideHost'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 exemplu
yes - Exemplu Bubble expresie
GuideHost'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 expresie
App 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 exemplu
uk - Exemplu Bubble expresie
Current 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 exemplu
yes - Exemplu Bubble expresie
App 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 exemplu
development - Exemplu Bubble expresie
App Settings' selected_environment - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
request_idtext · Implicit: —- Valoare exemplu
pickup-123-issue-v1 - Exemplu Bubble expresie
Current 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 exemplu
event - Exemplu Bubble expresie
Selected 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 exemplu
900 - Exemplu Bubble expresie
Event 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/noCheck QR pass
environmenttext · Implicit: "development"- Valoare exemplu
development - Exemplu Bubble expresie
App 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 expresie
QR 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 · textConfirm QR redemption
environmenttext · Implicit: "development"- Valoare exemplu
development - Exemplu Bubble expresie
App 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 expresie
QR 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 exemplu
pickup-123-redeem-v1 - Exemplu Bubble expresie
Current 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 exemplu
yes — explicit confirmation only - Exemplu Bubble expresie
Confirm 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/noRevoke QR pass
environmenttext · Implicit: "development"- Valoare exemplu
development - Exemplu Bubble expresie
App 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 expresie
Selected 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/noStări și evenimente
Flux de lucru planificat. Nu este încă disponibil în beta curentă.
Stări
scanner_status · textRezultatul 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 · textRezultatul 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 · textIdentificator 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 · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat. empty,access,event,coupon,membership
receipt_id · textIdentificator 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 · textInformații despre eroarea ultimei acțiuni. Afișați un mesaj util și oferiți o reîncercare relevantă.
is_busy · yes/noLucrul este încă în desfășurare. Așteptați înainte de a începe o altă acțiune.
is_scanning · yes/noValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
torch_enabled · yes/noValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
scan_source · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat. empty,camera,fixture
pending_redemption · yes/noValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
scanned_pass_token · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
Evenimente
scanner_startedCând apare acest eveniment, citiți stările aferente din același element.
scanner_pausedCând apare acest eveniment, citiți stările aferente din același element.
scanner_cancelledCând apare acest eveniment, citiți stările aferente din același element.
permission_deniedCând apare acest eveniment, citiți stările aferente din același element.
pass_scannedCând apare acest eveniment, citiți stările aferente din același element.
validation_startedCând apare acest eveniment, citiți stările aferente din același element.
validation_completedCând apare acest eveniment, citiți stările aferente din același element.
redemption_startedCând apare acest eveniment, citiți stările aferente din același element.
pass_redeemedCând apare acest eveniment, citiți stările aferente din același element.
redemption_rejectedCând apare acest eveniment, citiți stările aferente din același element.
redemption_pendingCând apare acest eveniment, citiți stările aferente din același element.
fixture_decodedCând apare acest eveniment, citiți stările aferente din același element.
qr_errorCâ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.