
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 的应用记录。请将它们替换为您自己的数据类型和元素名称。示例媒体地址必须替换为您自己的文件。
计划:授权员工使用 Issue QR pass 进行入场或 Order。示例:label=event、ttl_seconds=900、environment=development。为该事项保留稳定的 request_id 并将 pass_id 与记录一起保存。
将返回的 QR 展示给其预定持有人。工作人员扫描它。在计划的通行证工作流中,使用 workflow_mode=yes 并在 pass_scanned 之后读取 scanned_pass_token。这些通行证工作流设置在当前扫描仪中不可用。
使用 pass_token = QR Scanner's scanned_pass_token 运行 Check QR pass。检查不会消耗通行证的单次使用资格。对于 status=available,显示匹配的订单或入场详情,以便工作人员审查。
仅有单独的 Confirm 按钮会使用相同的 pass_token、稳定的 request_id 和 confirm=yes 运行 Confirm QR redemption。在 status=redeemed 时,保存 receipt_id 并将该订单或入场标记为完成。
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。持票人无需此权限。请勿在公开注册和个人资料表单中出现此字段。
一次性配置
- 在 BestPlugins → Dashboard → Plugins 中创建或选择您的 Bubble 应用项目。
- 选择此插件并复制其项目密钥。
- 打开 Bubble → Plugins → Xodera QR Passes Native;将密钥粘贴到 project_api_key 并保存。
- 添加元素,选择您的应用数据并构建以下工作流。
- 目前仅限私有测试版访问。公开安装和付费激活尚未开放。
安装和订阅
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/noCheck 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 · textConfirm 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/noRevoke 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 发布待定
论坛指南未发布
如需帮助,请告知我们您使用的插件和设备、尝试的操作以及发生的情况。请使用不含个人数据的示例。切勿分享您的密钥或私有文件。