Интефейс сканера 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.

Документация проверена 6 в ноябре 2026

Практические примеры

Одноразовый вход для мероприятия в тот же день

Снимок обычного значения QR может быть использован более чем на одном входе.

Ваше приложение сохраняет запись о допуске и стабильный запрос `request_id`; используйте отобранный `label=event` и `ttl_seconds` в рамках контракта 1–86400 секунд.

Уполномоченный эмитент запускает Issue QR pass и конфиденциально передаёт полученный QR. Персонал сканирует → Check QR pass → подтверждает только если `ok=yes` и `status=available` → Confirm QR redemption с сохранённым стабильным идентификатором запроса.

Только `status=redeemed` вместе с `receipt_id` авторизуют квитанцию о допуске вашего приложения. Сохраните ссылку на пропуск/квитанцию в записи о допуске; не раскрывайте содержимое QR аналитике.

Для `outcome_unknown` восстановите тот же запрос с идентичными пользователем/окружением/пропуском; никогда не создавайте новый идентификатор подтверждения. Обрабатывайте expired, revoked и уже использованные состояния как отдельные результаты.

Запланировано. Сканирование и проверка не используют пропуск; только явное подтверждение использует его.

Получите краткосрочную выгоду один раз у партнёра на кассе.

Партнёру нужен подтверждённый результат использовано/не использовано вместо доверия к изображению QR или анимации на экране.

`label=coupon`; запись о выгоде в приложении определяет право на получение и короткое окно действия до авторизованного выпуска.

Выдавайте пропуск только после проверки права в вашем приложении. На кассе Check QR pass показывает доступность без её расходования. После того как сотрудник подтвердит доставку выгоды, выполните Confirm QR redemption.

Ваша запись о выгоде может хранить `receipt_id` и подтверждённое время погашения после `status=redeemed`. Плагин управляет состоянием пропуска; ваше приложение управляет выгодой и отношениями с клиентом.

Если выгода отменена до использования, тот же авторизованный эмитент может Revoke QR pass, используя его `pass_id`. Не объявляйте возврат или успешное погашение только на основе `ok=yes`.

Запланировано. Сканирование и проверка не используют пропуск; только явное подтверждение использует его.

Подтвердите получение оборудования или заказа в тот же день.

Рабочий процесс персонала должен различать сканирование ссылки на получение и фактическую передачу предмета.

Запись Collection, принадлежащая вашему приложению, сохраняет авторизацию, предназначенный элемент и отдельные стабильные идентификаторы запросов на выдачу/погашение; используйте краткосрочный пропуск `label=access`.

После того как ваше приложение разрешит получение, Issue QR pass. Сотрудники сканируют и проверяют, осматривают соответствующую Collection в вашем приложении, затем явно подтверждают передачу и Confirm QR redemption.

Только после подтверждённого получения `redeemed` ваш рабочий процесс должен установить статус Collection как переданный. Сохраняйте `receipt_id` как ссылку на результат пропуска.

Повторное сканирование может вернуть already_used; отображайте существующую запись приложения вместо передачи другого элемента. Восстановите неопределённое подтверждение с тем же идентификатором и вводом.

Запланировано. Сканирование и проверка не используют пропуск; только явное подтверждение использует его.

Что работает сейчас

Закрытая бета. Текущий сканер имеет управление камерой и разрешениями. Создание, проверка и подтверждение одноразовых пропусков запланированы и пока недоступны в вашем приложении.

Создайте рабочий процесс

Запланировано

Запланированный рабочий процесс. Пока недоступен в текущей бете.

В этих примерах используются записи приложений, такие как Lesson, Message и Order. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.

  1. Запланировано: уполномоченный сотрудник использует Issue QR pass для допуска или Order. Пример: label=event, ttl_seconds=900, environment=development. Сохраните стабильный request_id для этого выпуска и сохраните pass_id вместе с записью.

  2. Покажите возвращённый QR его предполагаемому получателю. Сотрудники сканируют его. В запланированном рабочем процессе пропуска используйте workflow_mode=yes и считайте scanned_pass_token после pass_scanned. Эти настройки рабочего процесса пропуска недоступны в текущем сканере.

  3. Запустите Check QR pass с pass_token = QR Scanner's scanned_pass_token. Он проверяет без использования пропуска. Для status=available покажите соответствующие детали заказа или записи, чтобы сотрудники могли их просмотреть.

  4. Только отдельная кнопка Подтвердить запускает Confirm QR redemption с тем же pass_token, стабильным request_id и confirm=yes. При status=redeemed сохраните receipt_id и отметьте заказ или запись как завершённые.

  5. already_used, expired, revoked или invalid означают: не допускайте посетителя и не выдавайте заказ. Сканирование или успешная проверка сами по себе никогда не завершают транзакцию.

Диаграмма рабочего процесса — не скриншот приложения

Настройте один раз

Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins. Выберите 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. Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins.
  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 ожидает выпуска

Руководство форума не опубликовано

Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.