Giao diện máy quét QR. Các hành động dành cho thẻ dùng một lần đang được lên kế hoạch.
Giao diện máy quét QR. Các hành động dành cho thẻ dùng một lần đang được lên kế hoạch.
← Tất cả hướng dẫn gốc

Xodera Plugins · Bubble Native

Xodera QR Passes Native

Tạo vé dùng một lần, xác nhận nhận hàng hoặc phiếu giảm giá. Nhân viên quét mã, kiểm tra kết quả, xem trước đơn hàng và xác nhận sử dụng khi sẵn sàng.

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.

Tài liệu được rà soát ngày 6 tháng mười một năm 2026

Ví dụ thực tế

Vào cửa một lần cho sự kiện trong cùng ngày

Ảnh chụp màn hình của giá trị QR thông thường có thể được tái sử dụng tại hơn một cửa vào.

Ứng dụng của bạn lưu trữ bản ghi Admission và một yêu cầu ổn định `request_id`; sử dụng `label=event` đã được biên tập và `ttl_seconds` trong hợp đồng 1–86400 giây.

Một nhà phát hành được ủy quyền chạy Issue QR pass và riêng tư chuyển giao QR đã trả về. Nhân viên quét → Check QR pass → xác nhận chỉ khi `ok=yes` và `status=available` → Confirm QR redemption với ID yêu cầu ổn định đã lưu.

Chỉ `status=redeemed` cộng với `receipt_id` mới cho phép biên nhận Admission của ứng dụng bạn. Lưu tham chiếu pass/biên nhận trên Admission; không tiết lộ nội dung QR cho phân tích.

Đối với `outcome_unknown`, khôi phục yêu cầu giống hệt với đúng cùng người dùng/môi trường/vé; không bao giờ tạo ID xác nhận mới. Xử lý expired, revoked và các trạng thái đã sử dụng như các kết quả riêng biệt.

Dự kiến. Quét và kiểm tra không làm mất lượt sử dụng duy nhất của vé; chỉ xác nhận chủ động mới dùng hết lượt đó.

Đổi lợi ích ngắn hạn một lần tại quầy đối tác

Đối tác cần kết quả đã xác nhận đã dùng/chưa dùng thay vì tin vào hình ảnh QR hoặc hoạt ảnh màn hình.

`label=coupon`; trước khi thực hiện hành động phát hành được ủy quyền, bản ghi Benefit của ứng dụng xác định điều kiện được hưởng và khoảng thời gian hiệu lực ngắn.

Phát hành pass chỉ sau khi kiểm tra đủ điều kiện của ứng dụng bạn. Tại quầy, Check QR pass hiển thị khả dụng mà không tiêu thụ. Sau khi nhân viên xác nhận giao lợi ích, chạy Confirm QR redemption.

Bản ghi Benefit của bạn có thể lưu `receipt_id` và thời gian đổi thưởng đã xác nhận sau `status=redeemed`. Plugin quản lý trạng thái pass; ứng dụng của bạn quản lý lợi ích và quan hệ khách hàng.

Nếu lợi ích bị hủy trước khi sử dụng, nhà phát hành được ủy quyền cùng có thể Revoke QR pass bằng `pass_id` của mình. Không công bố hoàn tiền hoặc đổi thưởng thành công chỉ dựa trên `ok=yes`.

Dự kiến. Quét và kiểm tra không làm mất lượt sử dụng duy nhất của vé; chỉ xác nhận chủ động mới dùng hết lượt đó.

Xác nhận việc nhận thiết bị hoặc đơn hàng trong cùng ngày

Quy trình làm việc của nhân viên cần phân biệt việc quét mã tham chiếu nhận hàng với việc thực tế giao vật phẩm.

Bản ghi Collection sở hữu của ứng dụng bạn giữ quyền ủy quyền, vật phẩm dự định và các ID yêu cầu phát hành/đổi thưởng ổn định riêng; sử dụng pass `label=access` ngắn hạn.

Sau khi ứng dụng của bạn cho phép nhận hàng, chạy Issue QR pass. Nhân viên quét và kiểm tra, xem bản ghi Collection tương ứng trong ứng dụng, sau đó chủ động xác nhận việc bàn giao và chạy Confirm QR redemption.

Chỉ sau khi nhận được biên nhận `redeemed` đã xác nhận, quy trình làm việc của bạn mới nên đặt Collection thành đã chuyển giao. Giữ `receipt_id` làm liên kết tới kết quả pass.

Quét lặp lại có thể trả về already_used; hiển thị bản ghi ứng dụng hiện có thay vì giao vật phẩm khác. Khôi phục xác nhận không chắc chắn với cùng ID và đầu vào.

Dự kiến. Quét và kiểm tra không làm mất lượt sử dụng duy nhất của vé; chỉ xác nhận chủ động mới dùng hết lượt đó.

Những gì hiện đang hoạt động

Beta riêng. Trình quét hiện tại có điều khiển camera và quyền truy cập. Việc tạo, kiểm tra và xác nhận vé dùng một lần đang được lên kế hoạch và chưa sẵn sàng để sử dụng trong ứng dụng của bạn.

Xây dựng quy trình làm việc

Dự kiến

Quy trình dự kiến. Hiện chưa khả dụng trong bản beta hiện tại.

Các ví dụ này sử dụng các bản ghi ứng dụng như Lesson, Message và Order. Hãy thay thế chúng bằng các kiểu dữ liệu và tên phần tử của bạn. Các địa chỉ phương tiện mẫu phải được thay thế bằng các tệp của bạn.

  1. Dự kiến: nhân viên được ủy quyền dùng Issue QR pass cho bản ghi Admission hoặc Order. Ví dụ: label=event, ttl_seconds=900, environment=development. Giữ request_id ổn định cho lần phát hành đó và lưu pass_id cùng bản ghi.

  2. Hiển thị QR đã trả về cho người nhận dự định. Nhân viên quét nó. Trong quy trình vé dự kiến, sử dụng workflow_mode=yes và đọc scanned_pass_token sau pass_scanned. Các cài đặt quy trình vé này không khả dụng trong máy quét hiện tại.

  3. Chạy Check QR pass với pass_token = QR Scanner's scanned_pass_token. Việc kiểm tra không làm mất lượt sử dụng duy nhất của vé. Đối với status=available, hiển thị chi tiết đơn hàng hoặc thông tin vào cửa tương ứng để nhân viên có thể xem xét.

  4. Chỉ nút Xác nhận riêng biệt mới chạy Confirm QR redemption với cùng pass_token, một request_id ổn định và confirm=yes. Khi status=redeemed, lưu receipt_id và đánh dấu đơn hàng hoặc lượt vào cửa đó là hoàn thành.

  5. already_used, expired, revoked hoặc invalid có nghĩa là không cho phép vào hoặc giao đơn hàng. Một lần quét hoặc một lần Kiểm tra thành công riêng lẻ không bao giờ hoàn thành giao dịch.

Sơ đồ quy trình làm việc — không phải ảnh chụp màn hình ứng dụng

Cấu hình một lần

Tạo hoặc chọn dự án ứng dụng Bubble của bạn trong BestPlugins → Dashboard → Plugins. Chọn Xodera QR Passes Native, sao chép khóa của nó, sau đó mở Bubble → Plugins → Xodera QR Passes Native và dán vào project_api_key. Lưu một lần; sau đó sử dụng các hành động bên dưới. Mỗi plugin trong mỗi dự án có khóa riêng của nó.

Quét cần quyền truy cập camera. Đối với vé dùng một lần, quyết định ai có thể tạo vé và ai có thể kiểm tra chúng tại cửa hoặc điểm nhận. Khách hàng thường không cần vai trò nhân viên.

qr_issuer_permission_field

qr_pass_issuer · Tên của trường người dùng có/không đánh dấu nhân viên được phép tạo hoặc thu hồi thẻ. Ví dụ/mặc định: qr_pass_issuer. Đặt tên trường ở đây, không phải có hoặc không. Chỉ quản trị viên được ủy quyền mới nên thay đổi quyền này trên người dùng.

qr_staff_permission_field

qr_staff · Tên của trường người dùng có/không đánh dấu nhân viên được phép kiểm tra và xác nhận việc sử dụng. Ví dụ/mặc định: qr_staff. Người nắm vé không cần quyền này. Giữ nó ra khỏi các biểu mẫu đăng ký và hồ sơ công khai.

Cấu hình một lần
  1. Tạo hoặc chọn dự án ứng dụng Bubble của bạn tại BestPlugins → Dashboard → Plugins.
  2. Chọn plugin này và sao chép khóa dự án của nó.
  3. Mở Bubble → Plugins → Xodera QR Passes Native; dán khóa vào project_api_key và lưu.
  4. Thêm phần tử, chọn dữ liệu ứng dụng của bạn và xây dựng quy trình làm việc bên dưới.
  5. Hiện chỉ có quyền truy cập beta riêng. Cài đặt công cộng và kích hoạt trả phí chưa mở.
Cài đặt và đăng ký

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.

Lưu kết quả vào ứng dụng của bạn

Ví dụ bản ghi Admission (vào cửa) hoặc Pickup (nhận hàng): lưu đơn hàng/sự kiện liên quan, pass_id, expires_at và issue_request_id. Sau khi sử dụng đã được xác nhận, thêm receipt_id, redeemed_at và nhân viên đã xác nhận. Không đánh dấu bản ghi là hoàn thành khi mã chỉ được quét hoặc kiểm tra. Mã QR không xác minh danh tính của người.

Lỗi, hủy và khôi phục

Nếu outcome_unknown=yes, giữ cùng một vé, request_id và các đầu vào khi kiểm tra kết quả lại. Không tạo xác nhận mới. already_used, expired và revoked là kết quả kinh doanh cuối cùng. Nếu quyền bị từ chối, yêu cầu quản trị viên có thẩm quyền xem xét vai trò của nhân viên. Clear session đặt lại máy quét; nó không thể hoàn tác một lần sử dụng đã hoàn thành.

Khả năng và giới hạn

Vé dự kiến là dùng một lần, với thời gian tồn tại 1–86400 giây; mặc định 900. Các loại vé: access, event, coupon và membership. Kiểm tra không đặt trước vé. Cần có kết nối internet để sử dụng vé. Không có xử lý thanh toán, kiểm tra danh tính hoặc thẻ thành viên dài hạn có thể tái sử dụng. Đọc giá trị QR thông thường là riêng biệt với việc kiểm tra vé.

Cài đặt, hành động và kết quả

Sử dụng các tên này trong Bubble. Các tính năng dự kiến được đánh dấu riêng.

Cài đặt beta khả dụng

Cài đặt phần tử

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

Trạng thái

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

Sự kiện

scanner_startedscanner_pausedscanner_cancelledpermission_deniedpass_scannedvalidation_startedvalidation_completedredemption_startedpass_redeemedredemption_rejectedredemption_pendingfixture_decodedqr_error

Hành động và đầu vào của chúng

Clear session
Cài đặt phần tử · 5

Quy trình dự kiến. Hiện chưa khả dụng trong bản beta hiện tại.

disabledyes/no · Mặc định: false
Giá trị ví dụno
Ví dụ biểu thức BubbleGuideHost's is_busy (your yes/no custom state)
Vô hiệu hoá phần tử khi ứng dụng của bạn đang bận hoặc hành động này không khả dụng.
is_activeyes/no · Mặc định: true
Giá trị ví dụyes
Ví dụ biểu thức BubbleGuideHost's view_is_active (your yes/no custom state)
Đặt yes khi chế độ xem này đang mở. Đặt no khi rời khỏi, để có thể dừng việc phát hoặc công việc hiện tại.
ui_text_jsontext · Mặc định: "{}"
Giá trị ví dụ{}
Ví dụ biểu thức BubbleApp Settings' player_labels_json (supported keys only)
JSON tùy chọn với các nhãn nút được hỗ trợ. Để trống để sử dụng văn bản tích hợp.
languagetext · Mặc định: "auto"
Giá trị ví dụuk
Ví dụ biểu thức BubbleCurrent User's preferred_language
Đặt language=auto để theo dõi ngôn ngữ thiết bị hoặc trình duyệt được hỗ trợ. Nhập mã ngôn ngữ hỗ trợ để chọn một cách rõ ràng.
workflow_modeyes/no · Mặc định: false
Giá trị ví dụyes
Ví dụ biểu thức BubbleApp Settings' use_qr_business_actions
Dự kiến: cho phép giá trị QR đã quét được sử dụng bởi Check QR pass. Chỉ quét không xác nhận việc vào cửa hoặc nhận hàng.
Hành động và đầu vào của chúng · 5

Quy trình dự kiến. Hiện chưa khả dụng trong bản beta hiện tại.

Clear session

Không có tham số hành động

Issue QR pass
environmenttext · Mặc định: "development"
Giá trị ví dụdevelopment
Ví dụ biểu thức BubbleApp Settings' selected_environment
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
request_idtext · Mặc định: —
Giá trị ví dụpickup-123-issue-v1
Ví dụ biểu thức BubbleCurrent Admission's stable_request_id
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
labeltext · Mặc định: "access"
Giá trị ví dụevent
Ví dụ biểu thức BubbleSelected Admission's pass_label
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
ttl_secondsnumber · Mặc định: 900
Giá trị ví dụ900
Ví dụ biểu thức BubbleEvent Settings' pass_ttl_seconds
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.

Trả về

pass_id · textpass_token · textpass_label · textexpires_at · textqr_png_data_uri · textreused · yes/no
Check QR pass
environmenttext · Mặc định: "development"
Giá trị ví dụdevelopment
Ví dụ biểu thức BubbleApp Settings' selected_environment
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
pass_tokentext · Mặc định: —
Giá trị ví dụ<opaque token returned by Issue / camera scan>
Ví dụ biểu thức BubbleQR Pass Scanner's scanned_pass_token (capture before Check)
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.

Trả về

pass_label · textexpires_at · text
Confirm QR redemption
environmenttext · Mặc định: "development"
Giá trị ví dụdevelopment
Ví dụ biểu thức BubbleApp Settings' selected_environment
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
pass_tokentext · Mặc định: —
Giá trị ví dụ<opaque token returned by Issue / camera scan>
Ví dụ biểu thức BubbleQR Pass Scanner's scanned_pass_token (capture before Check)
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
request_idtext · Mặc định: —
Giá trị ví dụpickup-123-redeem-v1
Ví dụ biểu thức BubbleCurrent Admission's stable_redemption_request_id
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
confirmyes/no · Mặc định: false
Giá trị ví dụyes — explicit confirmation only
Ví dụ biểu thức BubbleConfirm Checkbox is checked
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.

Trả về

pass_id · textpass_label · textreceipt_id · textredeemed_at · textreused · yes/no
Revoke QR pass
environmenttext · Mặc định: "development"
Giá trị ví dụdevelopment
Ví dụ biểu thức BubbleApp Settings' selected_environment
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
pass_idtext · Mặc định: —
Giá trị ví dụ<pass_id returned by Issue>
Ví dụ biểu thức BubbleSelected Admission's pass_id
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.

Trả về

pass_id · textrevoked · yes/no
Trạng thái và sự kiện

Quy trình dự kiến. Hiện chưa khả dụng trong bản beta hiện tại.

Trạng thái

scanner_status · text

Kết quả hiện tại của hành động này. Sử dụng sự kiện hoàn thành phù hợp trước khi lưu thành công. idle,requesting_permission,permission_denied,scanning,paused,scanned,validating,available,redeeming,redeemed,unavailable,unknown,error,cancelled,decoding_fixture,fixture_decoded

server_status · text

Kết quả hiện tại của hành động này. Sử dụng sự kiện hoàn thành phù hợp trước khi lưu thành công. empty,available,redeemed,already_used,expired,revoked

pass_id · text

Định danh cho mục hoặc hành động này. Giữ nó cùng bản ghi ứng dụng tương ứng. Sử dụng cùng một định danh yêu cầu khi thử lại kết quả không chắc chắn.

pass_label · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan. empty,access,event,coupon,membership

receipt_id · text

Định danh cho mục hoặc hành động này. Giữ nó cùng bản ghi ứng dụng tương ứng. Sử dụng cùng một định danh yêu cầu khi thử lại kết quả không chắc chắn.

error_code · text

Thông tin lỗi cho hành động cuối cùng. Hiển thị thông báo hữu ích và đề xuất thử lại liên quan.

is_busy · yes/no

Công việc vẫn đang tiến hành. Vui lòng chờ trước khi bắt đầu hành động khác.

is_scanning · yes/no

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

torch_enabled · yes/no

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

scan_source · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan. empty,camera,fixture

pending_redemption · yes/no

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

scanned_pass_token · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

Sự kiện

scanner_started

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

scanner_paused

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

scanner_cancelled

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

permission_denied

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

pass_scanned

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

validation_started

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

validation_completed

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

redemption_started

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

pass_redeemed

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

redemption_rejected

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

redemption_pending

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

fixture_decoded

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

qr_error

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

Câu hỏi mà nhà phát triển đặt ra

Hai cài đặt quyền này có nghĩa là gì?

Tên trường người dùng kiểu có/không đánh dấu nhân viên được phép tạo hoặc thu hồi vé. Ví dụ/mặc định: qr_pass_issuer. Đặt tên trường ở đây, không phải có hoặc không. Chỉ quản trị viên có thẩm quyền mới nên thay đổi quyền này trên người dùng. Tên trường người dùng kiểu có/không đánh dấu nhân viên được phép kiểm tra và xác nhận việc sử dụng. Ví dụ/mặc định: qr_staff. Người nắm vé không cần quyền này. Giữ nó ra khỏi các biểu mẫu đăng ký và hồ sơ công khai.

Nhân viên cùng một người có thể tạo và kiểm tra vé không?

Có, nếu quản trị viên có thẩm quyền cấp cho nhân viên đó cả hai quyền. Điều này không yêu cầu khóa dự án khác. Khách hàng thường không cần bất kỳ quyền nào. Không cho phép người dùng tự gán các quyền này cho mình.

Tại sao phải sử dụng Kiểm tra sau khi Quét?

Quét đọc mã. Kiểm tra cho biết vé có khả dụng hay không mà không làm mất lượt sử dụng duy nhất của vé. Nhân viên có thể xem xét đơn hàng trước. Chỉ hành động Confirm QR redemption riêng biệt mới dùng hết lượt sử dụng đó.

Đăng ký hoạt động như thế nào?

Giá dự kiến: cài đặt plugin trong Bubble là miễn phí. Truy cập BestPlugins là một đăng ký riêng cho mỗi plugin trong mỗi dự án ứng dụng Bubble: 7 ngày miễn phí, sau đó US$1.50 mỗi tháng. Development và Live được bao gồm. Không có giới hạn cố định về số lượng thao tác; vẫn áp dụng giới hạn kích thước tệp và tính năng. Thanh toán chưa mở. Màn hình kích hoạt sẽ hiển thị ngày thanh toán đầu tiên và các điều khoản hủy.

Hướng dẫn liên quan

Đang chờ phát hành trên Marketplace

Hướng dẫn diễn đàn chưa được đăng

Để được trợ giúp, cho chúng tôi biết plugin và thiết bị bạn đang sử dụng, hành động bạn đã thử và những gì đã xảy ra. Sử dụng ví dụ không có dữ liệu cá nhân. Không bao giờ chia sẻ khóa hoặc tệp riêng của bạn.