
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. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.
Запланировано: уполномоченный сотрудник использует Issue QR pass для допуска или Order. Пример: label=event, ttl_seconds=900, environment=development. Сохраните стабильный request_id для этого выпуска и сохраните pass_id вместе с записью.
Покажите возвращённый QR его предполагаемому получателю. Сотрудники сканируют его. В запланированном рабочем процессе пропуска используйте workflow_mode=yes и считайте scanned_pass_token после pass_scanned. Эти настройки рабочего процесса пропуска недоступны в текущем сканере.
Запустите Check QR pass с pass_token = QR Scanner's scanned_pass_token. Он проверяет без использования пропуска. Для status=available покажите соответствующие детали заказа или записи, чтобы сотрудники могли их просмотреть.
Только отдельная кнопка Подтвердить запускает Confirm QR redemption с тем же pass_token, стабильным request_id и confirm=yes. При status=redeemed сохраните receipt_id и отметьте заказ или запись как завершённые.
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. Держатель билета не нуждается в этом разрешении. Не включайте его в публичные формы регистрации и профиля.
Настройте один раз
- Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins.
- Выберите этот плагин и скопируйте его ключ проекта.
- Откройте 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 ожидает выпуска
Руководство форума не опубликовано
Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.