Что здесь хранится
Модуль ведёт два справочника, которые вместе описывают все выпущенные карты Wallet и устройства, подписанные на их обновления.- Пропуск (карта Wallet) — одна выпущенная карта Apple/Google Wallet, привязанная либо к бонусной карте клиента, либо к заказу аренды.
- Регистрация устройства — запись о том, что конкретный телефон/часы подписаны на push-обновления конкретного пропуска.
Оба справочника лежат в общих (глобальных) таблицах, не привязанных к конкретной компании. Поэтому у пропуска есть явная ссылка на компанию-владельца — по ней система понимает, чьей карте принадлежит запись. Это нужно, потому что веб-сервис Wallet и push-рассылка работают вне контекста конкретной компании.
Пропуск (карта Wallet)
Поля
Один пропуск на объект
Комбинация «компания + тип пропуска + связанный объект» должна быть уникальной. То есть для одной бонусной карты (или одного заказа) внутри одной компании существует ровно один пропуск. Повторный выпуск карты для того же объекта не плодит дубли, а обращается к уже существующей записи.Уникальность считается по трём полям сразу: компания, тип и ID связанного объекта. Одинаковый ID объекта у разных компаний или у разных типов пропуска — это разные, независимые пропуски.
Серийный номер уникален глобально
Серийный номер уникален во всей системе, независимо от компании. Это внешний идентификатор, по которому устройство Apple обращается к карте, поэтому двух пропусков с одинаковым серийным номером быть не может.Автоматическая генерация токена авторизации
При создании нового пропуска токен авторизации проставляется автоматически, если его не задали явно. Значение — случайная строка из 16 байт в шестнадцатеричном виде (то есть 32 символа из цифр и букв a–f). По назначению это секрет доступа к карте: устройство предъявляет его при обращении к веб-сервису Wallet, а система сверяет предъявленное значение с сохранённым.Индексы
Помимо индексов по отдельным полям, у пропуска есть два составных индекса, ускоряющих типовые обращения:- по «компания + тип + связанный объект» — быстрый поиск пропуска конкретной бонусной карты или заказа;
- по «идентификатор типа пропуска + серийный номер» — по этой паре к карте обращается веб-сервис Apple Wallet.
Регистрация устройства
Когда пользователь добавляет карту в Apple Wallet, его устройство подписывается на обновления: сообщает системе свой идентификатор и push-токен. Каждая такая подписка — отдельная запись.Одно устройство на пропуск
Комбинация «пропуск + идентификатор устройства» уникальна: одно устройство может быть подписано на конкретную карту только один раз. Повторная регистрация того же устройства на ту же карту не создаёт дубликат.Одно устройство может быть подписано на много разных карт, и на одну карту могут быть подписаны много устройств. Ограничение действует только на пару «эта карта + это устройство».
Как это используется
Ниже описано назначение хранимых данных (сама модель задаёт только структуру записей).- Выпуск карты. При запросе карты Apple или Google Wallet система находит или создаёт пропуск по тройке «компания + тип + объект». Токен авторизации при создании генерируется сам.
- Проверка запросов устройства. Токен авторизации предназначен для того, чтобы веб-сервис Wallet при обращении устройства сверял предъявленное значение с сохранённым в пропуске.
- Подписка на обновления. При добавлении карты в Wallet заводится регистрация устройства с его push-токеном.
- Push-обновления. По регистрациям пропуска устройствам можно рассылать push-уведомления об изменении карты; время последнего изменения пропуска обновляется автоматически при сохранении.
- Аннулирование. Флаг «аннулирован» помечает карту как недействительную, не удаляя саму запись.
Связанные страницы
Глоссарий: Модель пропусков и регистраций
Полный перечень полей пропуска и регистрации устройства с точными определениями.
Карты в Apple Wallet и Google Wallet
Обзор раздела: какие бывают карты, как их получает клиент и как они обновляются.
Проблемы и логические ошибки
Сводный перечень известных проблем и логических ошибок всего модуля Wallet.
Выдача карты клиенту
Ссылки, по которым клиент получает карту для Apple Wallet или Google Wallet.
Оформление карты Apple
Что клиент видит на карте: поля, QR-код, фирменные цвета и логотип.
Карта в Google Wallet
Как формируется карта и ссылка сохранения для Google Wallet.
Как телефон получает свежую карту
Что происходит между телефоном клиента и системой, когда карта обновляется.
Уведомления об обновлении карты
Бесшумные уведомления, которые заставляют телефон перекачать карту.
Что запускает обновление
Какие изменения заказа приводят к обновлению карты у клиента.