
Xodera Plugins · Bubble Native
Xodera QR Passes Native
Cree tickets de un solo uso, confirmaciones de recogida o cupones. El personal escanea el código, verifica el resultado, previsualiza el pedido y confirma el uso solo cuando esté listo.
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.
Documentación revisada 6 noviembre 2026
Ejemplos prácticos
Admisión de un solo uso para un evento el mismo día
Una captura de pantalla de un valor QR ordinario puede reutilizarse en más de una entrada.
Su aplicación almacena un registro de Admisión y una emisión estable `request_id`; use `label=event` curado y un `ttl_seconds` dentro del contrato 1–86400‑second.
Un emisor autorizado ejecuta Issue QR pass y entrega de forma privada el QR devuelto. El personal escanea → Check QR pass → confirma solo si `ok=yes` y `status=available` → Confirm QR redemption con un ID de solicitud estable almacenado.
Sólo `status=redeemed` más `receipt_id` autoriza el recibo de admisión de su aplicación. Guarde la referencia del pase/recibo en la Admisión; no exponga el contenido de QR a análisis.
Para `outcome_unknown`, recupere la misma solicitud con el mismo usuario/entorno/pase; nunca genere un nuevo ID de confirmación. Maneje los estados expired, revoked y ya usados como resultados distintos.
Planificado. Escanear y verificar no usan el pase; sólo la confirmación explícita lo hace.
Canjee un beneficio de corta duración una vez en el mostrador de un socio
Un socio necesita un resultado confirmado usado/no usado en lugar de confiar en una imagen QR o una animación en pantalla.
`label=coupon`; el registro de Beneficio de la aplicación define la elegibilidad y una ventana de validez corta antes de una acción de emisión autorizada.
Emita un pase solo después de la verificación de elegibilidad de su aplicación. En el mostrador, Check QR pass muestra disponibilidad sin consumirlo. Después de que el miembro del personal confirme la entrega del beneficio, ejecute Confirm QR redemption.
Su registro de Beneficio puede almacenar `receipt_id` y la hora de canje confirmada después de `status=redeemed`. El complemento gestiona el estado del pase; su aplicación gestiona el beneficio y la relación con el cliente.
Si un beneficio se cancela antes de su uso, el mismo emisor autorizado puede Revoke QR pass usando su `pass_id`. No anuncie un reembolso o canje exitoso solo a partir de `ok=yes`.
Planificado. Escanear y verificar no usan el pase; sólo la confirmación explícita lo hace.
Confirmar la recogida de equipo o pedido el mismo día
Un flujo de trabajo del personal necesita distinguir escanear una referencia de colección de entregar realmente un artículo.
El registro de Colección propio de su aplicación mantiene la autorización, el artículo previsto y IDs de solicitud de emisión/redención estables separados; use un pase `label=access` de corta duración.
Después de que su aplicación autorice la colección, Issue QR pass. El personal escanea y verifica, inspecciona la Colección coincidente en su aplicación, y luego confirma explícitamente la entrega y Confirm QR redemption.
Sólo después de un recibo `redeemed` confirmado su flujo de trabajo debe marcar la Colección como entregada. Mantenga `receipt_id` como el enlace al resultado del pase.
Un escaneo repetido puede devolver already_used; muestre el registro existente de la aplicación en lugar de entregar otro artículo. Recupere una confirmación incierta con el mismo ID y entradas.
Planificado. Escanear y verificar no usan el pase; sólo la confirmación explícita lo hace.
Lo que funciona ahora
Beta privada. El escáner actual tiene controles de cámara y permisos. La creación, verificación y confirmación de pases de un solo uso está planificada y aún no está disponible en su aplicación.
Crea el flujo de trabajo
Planificado
Flujo de trabajo planificado. No está disponible aún en la beta actual.
Estos ejemplos usan registros de aplicación como Lesson, Message y Order. Reemplácelos con sus propios tipos de datos y nombres de elementos. Las direcciones de medios de ejemplo deben ser sustituidas por sus propios archivos.
Planificado: un empleado autorizado usa Issue QR pass para una admisión o Order. Ejemplo: label=event, ttl_seconds=900, environment=development. Mantenga un request_id estable para ese caso y guarde pass_id con el registro.
Muestre el QR devuelto a su destinatario previsto. El personal lo escanea. En el flujo de trabajo de pases planificados, use workflow_mode=yes y lea scanned_pass_token después de pass_scanned. Estas configuraciones del flujo de trabajo de pases no están disponibles en el escáner actual.
Ejecute Check QR pass con pass_token = QR Scanner's scanned_pass_token. Verifica sin usar el pase. Para status=available, muestre los detalles del pedido o entrada coincidentes para que el personal los revise.
Solo un botón Confirmar separado ejecuta Confirm QR redemption con el mismo pass_token, un request_id estable y confirm=yes. En status=redeemed, guarde receipt_id y marque ese pedido o entrada como completo.
already_used, expired, revoked o invalid indican que no se debe admitir ni entregar el pedido. Un escaneo o una verificación exitosa por sí solos nunca completan la transacción.
Configura una vez
Crea o elige tu proyecto de aplicación Bubble en BestPlugins → Dashboard → Plugins. Elige Xodera QR Passes Native, copia su clave, luego abre Bubble → Plugins → Xodera QR Passes Native y pégala en project_api_key. Guarda una vez; luego usa las acciones a continuación. Cada complemento en cada proyecto tiene su propia clave.
El escaneo requiere permiso de cámara. Para pases de un solo uso, decida quién puede crear pases y quién puede verificarlos en la puerta o punto de recogida. Los clientes habituales no necesitan ningún rol de personal.
qr_issuer_permission_field
qr_pass_issuer · Nombre del campo sí/no de Usuario que indica a los empleados autorizados a crear o revocar pases. Ejemplo/valor predeterminado: qr_pass_issuer. Introduzca aquí el nombre del campo, no sí o no. Sólo un administrador autorizado debe cambiar ese permiso en un usuario.
qr_staff_permission_field
qr_staff · Nombre del campo sí/no de Usuario que indica al personal autorizado a verificar y confirmar el uso. Ejemplo/valor predeterminado: qr_staff. Un titular de ticket no necesita este permiso. Manténgalo fuera de los formularios de registro y perfil públicos.
Configura una vez
- Crea o elige tu proyecto de aplicación Bubble en BestPlugins → Dashboard → Plugins.
- Elige este complemento y copia su clave de proyecto.
- Abre Bubble → Plugins → Xodera QR Passes Native; pega la clave en project_api_key y guarda.
- Añade el elemento, elige los datos de tu aplicación y construye el flujo de trabajo a continuación.
- Acceso a beta privada solo por ahora. La instalación pública y la activación de pago aún no están abiertas.
Instalación y suscripción
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.
Guarda el resultado en tu aplicación
Ejemplo de admisión o recogida: guarde el pedido/evento relacionado, pass_id, expires_at y issue_request_id. Después del uso confirmado, añada receipt_id, redeemed_at y el empleado que confirmó. No marque el registro como completo cuando el código solo se haya escaneado o verificado. Un código QR no verifica la identidad de una persona.
Fallo, cancelación y recuperación
Si outcome_unknown=yes, mantenga el mismo pase, request_id y los datos al verificar el resultado nuevamente. No cree una nueva confirmación. already_used, expired y revoked son resultados comerciales finales. Si se niega el permiso, solicite a un administrador autorizado que revise el rol del empleado. Clear session restablece el escáner; no puede deshacer un uso completado.
Capacidades y límites
Los pases planificados son de un solo uso, con una duración de 1–86400 segundos; predeterminado 900. Tipos de pase: access, event, coupon y membership. La verificación no reserva un pase. Se requiere acceso a Internet para usar el pase. No hay procesamiento de pagos, verificación de identidad ni tarjeta de membresía reutilizable a largo plazo. Leer un valor QR ordinario es independiente de la verificación de un pase.
Configuraciones, acciones y resultados
Utilice estos nombres en Bubble. Las funciones planificadas están marcadas por separado.
Configuraciones beta disponibles
Configuración del elemento
disabled · yes/nois_active · yes/noui_text_json · textlanguage · textEstados
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/noEventos
scanner_startedscanner_pausedscanner_cancelledpermission_deniedpass_scannedvalidation_startedvalidation_completedredemption_startedpass_redeemedredemption_rejectedredemption_pendingfixture_decodedqr_errorAcciones y sus entradas
Clear sessionConfiguración del elemento · 5
Flujo de trabajo planificado. No está disponible aún en la beta actual.
disabledyes/no · Predeterminado: false- Valor de ejemplo
no - Ejemplo de expresión Bubble
GuideHost's is_busy (your yes/no custom state) - Desactiva el elemento mientras tu aplicación está ocupada o esta acción no está disponible.
is_activeyes/no · Predeterminado: true- Valor de ejemplo
yes - Ejemplo de expresión Bubble
GuideHost's view_is_active (your yes/no custom state) - Establece sí mientras esta vista está abierta. Establece no al salir, para que la reproducción o el trabajo actual puedan detenerse.
ui_text_jsontext · Predeterminado: "{}"- Valor de ejemplo
{} - Ejemplo de expresión Bubble
App Settings' player_labels_json (supported keys only) - JSON opcional con etiquetas de botón compatibles. Déjalo vacío para usar el texto incorporado.
languagetext · Predeterminado: "auto"- Valor de ejemplo
uk - Ejemplo de expresión Bubble
Current User's preferred_language - Configurar language=auto para seguir un dispositivo o idioma de navegador compatible. Introduzca un código de idioma compatible para seleccionarlo explícitamente.
workflow_modeyes/no · Predeterminado: false- Valor de ejemplo
yes - Ejemplo de expresión Bubble
App Settings' use_qr_business_actions - Planificado: permitir que el valor QR escaneado sea usado por Check QR pass. Solo escanear no confirma la entrada ni la recogida.
Acciones y sus entradas · 5
Flujo de trabajo planificado. No está disponible aún en la beta actual.
Clear session
Sin parámetros de acción
Issue QR pass
environmenttext · Predeterminado: "development"- Valor de ejemplo
development - Ejemplo de expresión Bubble
App Settings' selected_environment - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
request_idtext · Predeterminado: —- Valor de ejemplo
pickup-123-issue-v1 - Ejemplo de expresión Bubble
Current Admission's stable_request_id - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
labeltext · Predeterminado: "access"- Valor de ejemplo
event - Ejemplo de expresión Bubble
Selected Admission's pass_label - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
ttl_secondsnumber · Predeterminado: 900- Valor de ejemplo
900 - Ejemplo de expresión Bubble
Event Settings' pass_ttl_seconds - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Devoluciones
pass_id · textpass_token · textpass_label · textexpires_at · textqr_png_data_uri · textreused · yes/noCheck QR pass
environmenttext · Predeterminado: "development"- Valor de ejemplo
development - Ejemplo de expresión Bubble
App Settings' selected_environment - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
pass_tokentext · Predeterminado: —- Valor de ejemplo
<opaque token returned by Issue / camera scan> - Ejemplo de expresión Bubble
QR Pass Scanner's scanned_pass_token (capture before Check) - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Devoluciones
pass_label · textexpires_at · textConfirm QR redemption
environmenttext · Predeterminado: "development"- Valor de ejemplo
development - Ejemplo de expresión Bubble
App Settings' selected_environment - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
pass_tokentext · Predeterminado: —- Valor de ejemplo
<opaque token returned by Issue / camera scan> - Ejemplo de expresión Bubble
QR Pass Scanner's scanned_pass_token (capture before Check) - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
request_idtext · Predeterminado: —- Valor de ejemplo
pickup-123-redeem-v1 - Ejemplo de expresión Bubble
Current Admission's stable_redemption_request_id - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
confirmyes/no · Predeterminado: false- Valor de ejemplo
yes — explicit confirmation only - Ejemplo de expresión Bubble
Confirm Checkbox is checked - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Devoluciones
pass_id · textpass_label · textreceipt_id · textredeemed_at · textreused · yes/noRevoke QR pass
environmenttext · Predeterminado: "development"- Valor de ejemplo
development - Ejemplo de expresión Bubble
App Settings' selected_environment - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
pass_idtext · Predeterminado: —- Valor de ejemplo
<pass_id returned by Issue> - Ejemplo de expresión Bubble
Selected Admission's pass_id - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Devoluciones
pass_id · textrevoked · yes/noEstados y eventos
Flujo de trabajo planificado. No está disponible aún en la beta actual.
Estados
scanner_status · textResultado actual de esta acción. Utilice el evento de finalización coincidente antes de guardar el éxito. idle,requesting_permission,permission_denied,scanning,paused,scanned,validating,available,redeeming,redeemed,unavailable,unknown,error,cancelled,decoding_fixture,fixture_decoded
server_status · textResultado actual de esta acción. Utilice el evento de finalización coincidente antes de guardar el éxito. empty,available,redeemed,already_used,expired,revoked
pass_id · textIdentificador para este elemento o acción. Manténgalo con el registro de la aplicación correspondiente. Use el mismo identificador de solicitud al reintentar un resultado incierto.
pass_label · textValor actual del elemento seleccionado. Léalo después del evento relacionado. empty,access,event,coupon,membership
receipt_id · textIdentificador para este elemento o acción. Manténgalo con el registro de la aplicación correspondiente. Use el mismo identificador de solicitud al reintentar un resultado incierto.
error_code · textInformación de error de la última acción. Muestra un mensaje útil y ofrece el reintento correspondiente.
is_busy · yes/noEl trabajo sigue en progreso. Espere antes de iniciar otra acción.
is_scanning · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
torch_enabled · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
scan_source · textValor actual del elemento seleccionado. Léalo después del evento relacionado. empty,camera,fixture
pending_redemption · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
scanned_pass_token · textValor actual del elemento seleccionado. Léelo después del evento relacionado.
Eventos
scanner_startedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
scanner_pausedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
scanner_cancelledCuando ocurra este evento, lea los estados relacionados del mismo elemento.
permission_deniedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
pass_scannedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
validation_startedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
validation_completedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
redemption_startedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
pass_redeemedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
redemption_rejectedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
redemption_pendingCuando ocurra este evento, lea los estados relacionados del mismo elemento.
fixture_decodedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
qr_errorCuando ocurra este evento, lea los estados relacionados del mismo elemento.
Preguntas que hacen los desarrolladores
¿Qué significan los dos ajustes de permiso?
Nombre del campo sí/no de Usuario que indica a los empleados autorizados a crear o revocar pases. Ejemplo/valor predeterminado: qr_pass_issuer. Introduzca el nombre del campo aquí, no sí o no. Sólo un administrador autorizado debe cambiar ese permiso en un usuario. Nombre del campo sí/no de Usuario que indica al personal autorizado a verificar y confirmar el uso. Ejemplo/valor predeterminado: qr_staff. Un titular de ticket no necesita este permiso. Manténgalo fuera de los formularios de registro y perfil públicos.
¿Puede el mismo empleado crear y verificar pases?
Sí, si un administrador autorizado otorga a ese empleado ambas permisos. Esto no requiere otra clave de proyecto. Normalmente los clientes no necesitan ninguno de los permisos. No permita que los usuarios se asignen estos permisos a sí mismos.
¿Por qué usar Verificar después de Escanear?
Escanear lee el código. Verificar pregunta si el pase está disponible sin usarlo. El personal puede revisar el pedido primero. Sólo la acción separada Confirm QR redemption usa el pase una vez.
¿Cómo funciona la suscripción?
Precios planificados: instalar el plugin en Bubble es gratuito. El acceso a BestPlugins es una suscripción separada para cada plugin en cada proyecto de aplicación Bubble: 7 días gratis, luego US$1.50 por mes. Development y Live están incluidos. No hay un límite fijo en la cantidad de operaciones; los límites de tamaño de archivo y de funciones siguen aplicando. El proceso de compra aún no está abierto. La pantalla de activación mostrará la primera fecha de facturación y los términos de cancelación.
Guías relacionadas
Lanzamiento de Marketplace pendiente
Guía del foro no publicada
Para obtener ayuda, indíquenos qué plugin y dispositivo utiliza, la acción que intentó y lo que ocurrió. Use un ejemplo sin datos personales. Nunca comparta su clave ni archivos privados.