QR 扫描仪界面。计划一次性通行操作。
QR 扫描仪界面。计划一次性通行操作。
← 所有原生指南

Xodera Plugins · Bubble Native

Xodera QR Passes Native

生成一次性票据、取货确认或优惠券。工作人员扫描代码,检查结果,预览订单,并在准备就绪时确认使用。

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.

文档审阅日期:2026年11月6日

实用示例

同日活动的一次性入场

普通 QR 值的截图可以在多个入口重复使用。

您的应用存储 Admission 记录和一个稳定的 issue `request_id`;使用已策划的 `label=event` 和 `ttl_seconds`,在 1–86400 秒的合约内。

授权发行者执行 Issue QR pass 并私下交付返回的 QR。工作人员扫描 → Check QR pass → 仅在 `ok=yes` 和 `status=available` 条件满足时确认 → Confirm QR redemption,并使用已存储的稳定请求 ID。

仅 `status=redeemed` 加 `receipt_id` 可授权您的应用的 admission 收据。将通行证/收据引用存储在 Admission 上;不要向分析暴露 QR 内容。

针对 `outcome_unknown`,使用相同的用户/环境/通行证恢复相同请求;切勿生成新的确认 ID。将 expired、revoked 和已使用状态视为不同的结果。

计划中。扫描和检查不会消耗通行证的单次使用资格;只有明确确认才会消耗该资格。

在合作伙伴柜台一次性兑换短期福利

合作伙伴需要确认的已使用/未使用结果,而不是信任 QR 图像或屏幕动画。

`label=coupon`;在获授权的签发操作之前,由应用的 Benefit 记录定义资格和较短的有效期。

仅在您的应用完成资格检查后才发行通行证。柜台上,Check QR pass 显示可用性且不消耗。工作人员确认福利交付后,执行 Confirm QR redemption。

您的 Benefit 记录可以在 `status=redeemed` 之后存储 `receipt_id` 和确认的兑换时间。插件管理通行证状态;您的应用管理福利和客户关系。

如果福利在使用前被取消,同一授权发行者可以使用其 `pass_id` 来 Revoke QR pass。不要仅凭 `ok=yes` 宣布退款或成功兑换。

计划中。扫描和检查不会消耗通行证的单次使用资格;只有明确确认才会消耗该资格。

确认当天设备或订单取货

工作人员工作流需要区分扫描取货凭据与实际交付物品。

您的应用拥有的 Collection 记录保存授权、预期物品以及独立的稳定发行/兑换请求 ID;使用短期 `label=access` 通行证。

在您的应用授权取货后,Issue QR pass。工作人员扫描并检查,检查您应用中匹配的 Collection,然后显式确认交付并执行 Confirm QR redemption。

仅在确认的 `redeemed` 收据后,您的工作流才应将 Collection 标记为已交付。保留 `receipt_id` 作为通行证结果的链接。

重复扫描可能返回 already_used;显示现有的应用记录而不是交付另一件物品。使用相同的 ID 和输入恢复不确定的确认。

计划中。扫描和检查不会消耗通行证的单次使用资格;只有明确确认才会消耗该资格。

当前可用功能

私有测试版。当前扫描器具备相机和权限控制。一次性通行证的创建、检查和确认仍在计划中,尚未在您的应用中可用。

构建工作流

计划中

计划中的工作流。目前的测试版尚不可用。

这些示例使用了诸如 Lesson、Message 和 Order 的应用记录。请将它们替换为您自己的数据类型和元素名称。示例媒体地址必须替换为您自己的文件。

  1. 计划:授权员工使用 Issue QR pass 进行入场或 Order。示例:label=event、ttl_seconds=900、environment=development。为该事项保留稳定的 request_id 并将 pass_id 与记录一起保存。

  2. 将返回的 QR 展示给其预定持有人。工作人员扫描它。在计划的通行证工作流中,使用 workflow_mode=yes 并在 pass_scanned 之后读取 scanned_pass_token。这些通行证工作流设置在当前扫描仪中不可用。

  3. 使用 pass_token = QR Scanner's scanned_pass_token 运行 Check QR pass。检查不会消耗通行证的单次使用资格。对于 status=available,显示匹配的订单或入场详情,以便工作人员审查。

  4. 仅有单独的 Confirm 按钮会使用相同的 pass_token、稳定的 request_id 和 confirm=yes 运行 Confirm QR redemption。在 status=redeemed 时,保存 receipt_id 并将该订单或入场标记为完成。

  5. already_used、expired、revoked 或 invalid 表示不允许入场或交付订单。仅扫描或单独成功的检查永远不会完成交易。

工作流图 — 不是应用截图

一次性配置

在 BestPlugins → Dashboard → Plugins 中创建或选择您的 Bubble 应用项目。选择 Xodera QR Passes Native,复制其密钥,然后打开 Bubble → Plugins → Xodera QR Passes Native 并粘贴到 project_api_key。保存一次;随后使用以下操作。每个项目中的每个插件都有其自己的密钥。

扫描需要相机权限。对于一次性通行证,决定谁可以创建通行证以及谁可以在门口或取货点检查通行证。普通客户不需要任何员工角色。

qr_issuer_permission_field

qr_pass_issuer · 标记允许员工创建或撤销通行证的用户是/否字段的名称。示例/默认值:qr_pass_issuer。请在此填写字段名称,而非是或否。仅有授权管理员可更改用户的此权限。

qr_staff_permission_field

qr_staff · 标记允许员工检查并确认使用的用户是/否字段的名称。示例/默认值:qr_staff。持票人无需此权限。请勿在公开注册和个人资料表单中出现此字段。

一次性配置
  1. 在 BestPlugins → Dashboard → Plugins 中创建或选择您的 Bubble 应用项目。
  2. 选择此插件并复制其项目密钥。
  3. 打开 Bubble → Plugins → Xodera QR Passes Native;将密钥粘贴到 project_api_key 并保存。
  4. 添加元素,选择您的应用数据并构建以下工作流。
  5. 目前仅限私有测试版访问。公开安装和付费激活尚未开放。
安装和订阅

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.

将结果保存到您的应用中

示例入场或取货:保存相关的订单/事件,pass_id,expires_at 和 issue_request_id。确认使用后,添加 receipt_id、redeemed_at 和确认的员工。代码仅被扫描或检查时不要将记录标记为完成。QR 代码不验证个人身份。

失败、取消与恢复

如果 outcome_unknown=yes,检查结果时保留相同的通行证、request_id 和输入。不要创建新的确认。already_used、expired 和 revoked 是最终业务结果。如果权限被拒绝,请有权限的管理员审查该员工的角色。Clear session 重置扫描仪;它无法撤销已完成的使用。

功能与限制

计划中的通行证为一次性使用,生命周期为 1–86400 秒;默认 900。通行证类型:access、event、coupon 和 membership。检查不会预留通行证。使用通行证需要互联网访问。不提供支付处理、身份验证或可重复使用的长期会员卡功能。读取普通的 QR 值与检查通行证是分开的。

设置、操作和结果

在 Bubble 中使用这些名称。计划中的功能会单独标记。

可用的测试版设置

元素设置

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

状态

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

事件

scanner_startedscanner_pausedscanner_cancelledpermission_deniedpass_scannedvalidation_startedvalidation_completedredemption_startedpass_redeemedredemption_rejectedredemption_pendingfixture_decodedqr_error

操作及其输入

Clear session
元素设置 · 5

计划中的工作流。目前的测试版尚不可用。

disabledyes/no · 默认: false
示例值no
示例 Bubble 表达式GuideHost's is_busy (your yes/no custom state)
当应用忙碌或此操作不可用时禁用该元素。
is_activeyes/no · 默认: true
示例值yes
示例 Bubble 表达式GuideHost's view_is_active (your yes/no custom state)
在此视图打开时设为是。离开时设为否,以便停止播放或当前工作。
ui_text_jsontext · 默认: "{}"
示例值{}
示例 Bubble 表达式App Settings' player_labels_json (supported keys only)
可选的 JSON,包含支持的按钮标签。留空则使用内置文本。
languagetext · 默认: "auto"
示例值uk
示例 Bubble 表达式Current User's preferred_language
将 language=auto 设置为跟随支持的设备或浏览器语言。输入支持的语言代码以明确选择。
workflow_modeyes/no · 默认: false
示例值yes
示例 Bubble 表达式App Settings' use_qr_business_actions
计划中:允许 QR 扫描值被 Check QR pass 使用。仅扫描并不能确认进入或取货。
操作及其输入 · 5

计划中的工作流。目前的测试版尚不可用。

Clear session

无操作参数

Issue QR pass
environmenttext · 默认: "development"
示例值development
示例 Bubble 表达式App Settings' selected_environment
使用当前业务记录的值;根据以下限制进行验证。
request_idtext · 默认: —
示例值pickup-123-issue-v1
示例 Bubble 表达式Current Admission's stable_request_id
使用当前业务记录的值;根据以下限制进行验证。
labeltext · 默认: "access"
示例值event
示例 Bubble 表达式Selected Admission's pass_label
使用当前业务记录的值;根据以下限制进行验证。
ttl_secondsnumber · 默认: 900
示例值900
示例 Bubble 表达式Event Settings' pass_ttl_seconds
使用当前业务记录的值;根据以下限制进行验证。

返回值

pass_id · textpass_token · textpass_label · textexpires_at · textqr_png_data_uri · textreused · yes/no
Check QR pass
environmenttext · 默认: "development"
示例值development
示例 Bubble 表达式App Settings' selected_environment
使用当前业务记录的值;根据以下限制进行验证。
pass_tokentext · 默认: —
示例值<opaque token returned by Issue / camera scan>
示例 Bubble 表达式QR Pass Scanner's scanned_pass_token (capture before Check)
使用当前业务记录的值;根据以下限制进行验证。

返回值

pass_label · textexpires_at · text
Confirm QR redemption
environmenttext · 默认: "development"
示例值development
示例 Bubble 表达式App Settings' selected_environment
使用当前业务记录的值;根据以下限制进行验证。
pass_tokentext · 默认: —
示例值<opaque token returned by Issue / camera scan>
示例 Bubble 表达式QR Pass Scanner's scanned_pass_token (capture before Check)
使用当前业务记录的值;根据以下限制进行验证。
request_idtext · 默认: —
示例值pickup-123-redeem-v1
示例 Bubble 表达式Current Admission's stable_redemption_request_id
使用当前业务记录的值;根据以下限制进行验证。
confirmyes/no · 默认: false
示例值yes — explicit confirmation only
示例 Bubble 表达式Confirm Checkbox is checked
使用当前业务记录的值;根据以下限制进行验证。

返回值

pass_id · textpass_label · textreceipt_id · textredeemed_at · textreused · yes/no
Revoke QR pass
environmenttext · 默认: "development"
示例值development
示例 Bubble 表达式App Settings' selected_environment
使用当前业务记录的值;根据以下限制进行验证。
pass_idtext · 默认: —
示例值<pass_id returned by Issue>
示例 Bubble 表达式Selected Admission's pass_id
使用当前业务记录的值;根据以下限制进行验证。

返回值

pass_id · textrevoked · yes/no
状态和事件

计划中的工作流。目前的测试版尚不可用。

状态

scanner_status · text

此操作的当前结果。在保存成功之前使用匹配的完成事件。idle,requesting_permission,permission_denied,scanning,paused,scanned,validating,available,redeeming,redeemed,unavailable,unknown,error,cancelled,decoding_fixture,fixture_decoded

server_status · text

此操作的当前结果。在保存成功之前使用匹配的完成事件。empty,available,redeemed,already_used,expired,revoked

pass_id · text

此项目或操作的标识符。请与对应的应用记录一起保存。重试不确定结果时使用相同的请求标识符。

pass_label · text

所选项目的当前值。请在相关事件后读取。empty,access,event,coupon,membership

receipt_id · text

此项目或操作的标识符。请与对应的应用记录一起保存。重试不确定结果时使用相同的请求标识符。

error_code · text

上一次操作的错误信息。显示有帮助的提示并提供相应的重试。

is_busy · yes/no

工作仍在进行中。请在开始其他操作前等待。

is_scanning · yes/no

所选项目的当前值。请在相关事件后读取。

torch_enabled · yes/no

所选项目的当前值。请在相关事件后读取。

scan_source · text

所选项目的当前值。请在相关事件后读取。empty,camera,fixture

pending_redemption · yes/no

所选项目的当前值。请在相关事件后读取。

scanned_pass_token · text

所选项目的当前值。请在相关事件后读取。

事件

scanner_started

当此事件发生时,从同一元素读取相关状态。

scanner_paused

当此事件发生时,从同一元素读取相关状态。

scanner_cancelled

当此事件发生时,从同一元素读取相关状态。

permission_denied

当此事件发生时,从同一元素读取相关状态。

pass_scanned

当此事件发生时,从同一元素读取相关状态。

validation_started

当此事件发生时,从同一元素读取相关状态。

validation_completed

当此事件发生时,从同一元素读取相关状态。

redemption_started

当此事件发生时,从同一元素读取相关状态。

pass_redeemed

当此事件发生时,从同一元素读取相关状态。

redemption_rejected

当此事件发生时,从同一元素读取相关状态。

redemption_pending

当此事件发生时,从同一元素读取相关状态。

fixture_decoded

当此事件发生时,从同一元素读取相关状态。

qr_error

当此事件发生时,从同一元素读取相关状态。

开发者常问问题

这两个权限设置是什么意思?

标记员工是否有权创建或撤销通行证的用户是/否字段名称。示例/默认值:qr_pass_issuer。此处填写字段名称,而非是或否。只有授权管理员才能更改用户的该权限。标记工作人员是否有权检查并确认使用的用户是/否字段名称。示例/默认值:qr_staff。持票人不需要此权限。不要将此字段放入公开注册或个人资料表单。

同一员工可以同时创建和检查通行证吗?

是的,如果授权管理员为该员工授予两项权限。此操作不需要另一个项目密钥。客户通常不需要任何权限。不要让用户自行分配这些权限。

为什么在扫描后使用检查?

扫描读取代码。检查询问通行证是否可用且不消耗它。工作人员可以先审查订单。只有单独的 Confirm QR redemption 操作会使用一次通行证。

订阅是如何运作的?

计划定价:在 Bubble 中安装插件免费。BestPlugins 访问需为每个插件在每个 Bubble 应用项目单独订阅:免费 7 天,然后每月 US$1.50。Development 和 Live 已包含。操作次数没有固定上限;文件大小和功能限制仍然适用。结账尚未开放。激活界面将显示首次计费日期和取消条款。

相关指南

Marketplace 发布待定

论坛指南未发布

如需帮助,请告知我们您使用的插件和设备、尝试的操作以及发生的情况。请使用不含个人数据的示例。切勿分享您的密钥或私有文件。