Коммуникационный поток Smart Tap

Связь между терминалом и приложением Google Wallet

Терминал идентифицирует себя с помощью идентификатора коллектора , который сопоставлен с идентификатором эмитента погашения. Когда происходит Smart Tap, терминал передает свой идентификатор коллектора на устройство пользователя. Затем приложение Google Wallet проверяет идентификатор класса и идентификатор коллекционера каждого сохраненного пропуска. При обнаружении одного или нескольких совпадений приложение Google Wallet передает соответствующие пропуска на терминал. Подробности настройки см. в разделе «Конфигурация продавца» .

Пример 1: Один эмитент погашения

В следующем разделе описывается настройка, показанная на этом рисунке.

На предыдущей диаграмме представлены два разных эмитента:

  • Эмитент 2018 — разработчик пропусков (также называемый агрегатором).
  • Эмитент 1990 — торговец fooPizza (также называемый эмитентом погашения).

Эмитент погашения, fooPizza, хочет включить функцию Smart Tap для своего пропуска (управляемого агрегатором). Агрегатор и эмитент погашения должны выполнить следующие шаги, чтобы включить Smart Tap для торговых терминалов.

Шаг Роль Описание
1 Агрегатор Создайте проходной класс и объект (на схеме abc и 123 соответственно).
2 Агрегатор Включите идентификатор эмитента погашения в свойство redemptionIssuers класса пропуска. Это сообщает Google Кошельку, что идентификатор эмитента 1990 может активировать объекты пропуска, ссылающиеся на этот класс.
3 Эмитент погашения Получите идентификатор коллектора (на схеме 12345678 ).
4 Эмитент погашения Установите идентификатор коллектора 12345678 на каждом терминале с поддержкой Smart Tap, который будет использоваться. Любой объект с идентификатором класса abc и идентификатором коллекционера 12345678 будет передан читателю.

Пример 2: Несколько эмитентов погашения

У одного класса пропуска может быть несколько эмитентов погашения. Чтобы иметь возможность активировать определенный класс пропуска, идентификатор эмитента погашения должен быть включен в свойство redemptionIssuers класса. Каждый эмитент погашения затем имеет свой собственный идентификатор коллектора, который настраивается на его терминалах с поддержкой Smart Tap.

В следующем разделе описывается настройка, показанная на этом рисунке.

На предыдущей диаграмме представлены три разных эмитента:

  • Эмитент 8088 - разработчик пропусков (Агрегатор)
  • Эмитент 1990 — торговец fooPizza (эмитент выкупа).
  • Эмитент 2018 — торговец yumPie (эмитент погашения).

Агрегатор и эмитенты погашения должны выполнить следующие шаги, чтобы включить Smart Tap для торговых терминалов.

Шаг Роль Описание
1 Агрегатор Создайте проходной класс и объект (на схеме abc и 123 соответственно).
2 Агрегатор Включите идентификаторы эмитентов погашения в свойство redemptionIssuers класса пропуска. Это сообщает Google Кошельку, что идентификаторы эмитента 1990 и 2018 могут активировать объекты пропуска, ссылающиеся на этот класс.
3 Эмитенты погашения Получите идентификаторы коллекционеров (на схеме: 12345678 для fooPizza и 18802001 для yumPie).
4 Эмитенты погашения Установите соответствующий идентификатор коллектора на каждом терминале с поддержкой Smart Tap, который будет использоваться. Любой объект с идентификатором класса abc и соответствующим идентификатором коллектора будет передан читателю.

Пример 3: Нет агрегатора

Класс пропуска может быть разработан и выдан в пределах одной учетной записи эмитента. В этом случае не существует агрегатора, управляющего классами пропусков для нескольких эмитентов погашения. Чтобы иметь возможность активировать определенный класс пропуска, разработчик пропуска должен включить свой идентификатор эмитента в свойство redemptionIssuers класса. Затем разработчик пропуска должен получить идентификатор коллектора и настроить его на своих терминалах с поддержкой Smart Tap.

В следующем разделе описывается настройка, показанная на этом рисунке.

Разработчик пропуска должен выполнить следующие шаги, чтобы включить Smart Tap для торговых терминалов.

Шаг Роль Описание
1 Пропустить разработчика Создайте проходной класс и объект (на схеме abc и 123 соответственно).
2 Пропустить разработчика Включите их идентификатор эмитента в свойство redemptionIssuers проходного класса. Это сообщает Google Кошельку, что идентификатор эмитента 2018 может активировать объекты пропуска, ссылающиеся на этот класс.
3 Пропустить разработчика Получите идентификатор коллектора (на схеме 12345678 ).
4 Пропустить разработчика Установите соответствующий идентификатор коллектора на каждом терминале с поддержкой Smart Tap, который будет использоваться. Любой объект с идентификатором класса abc и соответствующим идентификатором коллектора будет передан читателю.

Пользовательский опыт и поведение

Поведение передаваемых данных между терминалом и приложением Google Wallet зависит от пользователя и от того, как он взаимодействует с приложением Google Wallet в данный момент.

Сценарий 1. Пользователь открывает определенный пропуск.

Шаг Роль Описание
1 Пользователь Выберите конкретный пропуск в приложении Google Wallet.
2 Пользователь Коснитесь терминала с поддержкой Smart Tap.
3 Терминал (ID коллектора совпадает) Пропуск передается на терминал.
(ID коллектора не совпадает) Пропуск не передается на терминал.

Сценарий 2. Вкладка «Главная страница» Google Кошелька или просмотр разблокированного экрана.

Шаг Роль Описание
1 Пользователь Откройте вкладку «Главная» в приложении «Google Кошелек» или разблокируйте экран устройства.
2 Пользователь Коснитесь терминала с поддержкой Smart Tap.
3 Терминал (Единственное совпадение действительного идентификатора коллектора) Пропуск передается на терминал.
(Совпадает несколько действительных идентификаторов коллекционера) Отобразите карусель действительных пропусков и передайте тот, который выбран пользователем.

Примечание. Срок действия пропуска зависит от конкретной конфигурации объекта пропуска. Обязательно проверьте следующие свойства объекта пропуска:

  • state
  • validTimeInterval

Пример коллекции Smart Tap

В следующей таблице описаны эмитенты и пропуски, которые будут использоваться в этом примере:

Имя продавца ILuvКофе Кофе-Фу Мокко-Р-Ус
Идентификатор эмитента 123 456 789
Идентификатор коллектора 11111111 44444444 77777777
Уровни лояльности R-Базовый Мои награды
R-Золото

ILuvCoffee имеет два разных уровня лояльности: R-Basic и R-Gold . Между тем, у Coffee-Foo есть одноуровневая программа лояльности My Rewards , а у Mocha-R-Us нет программы лояльности.

В рамках кампании перекрестного продвижения продавцы хотели бы предоставить своим клиентам следующие возможности:

  • Клиенты уровня R-Basic могут использовать Smart Tap, чтобы активировать свое членство в программе лояльности как в Coffee-Foo, так и в Mocha-R-Us.
  • Клиентам уровня R-Gold не требуется погашение Smart Tap
  • Клиенты My Rewards могут использовать Smart Tap для активации членства в программе лояльности только в Coffee-Foo.

Чтобы эта кампания работала, каждому классу лояльности потребуются следующие значения, установленные в свойстве redemptionIssuers определения класса.

Класс лояльности Идентификаторы эмитентов погашения
R-Базовый ["456", "789"]
R-Золото []
Мои награды ["456"]

При такой конфигурации все объекты прохода, ссылающиеся на эти классы, будут иметь следующие идентификаторы сборщика:

  • R-Базовый: 44444444 , 77777777
  • R-Gold: идентификаторы коллекционера включены не будут.
  • Мои награды: 44444444

Аутентификация коллектора во время касания

В рамках конфигурации эмитента с учетной записью эмитента может быть связано несколько открытых ключей. Эти открытые ключи хранятся в приложении Google Wallet, которое использует их для аутентификации, когда пользователь прикасается своим устройством к терминалу с поддержкой Smart Tap. Этот этап аутентификации выполняется после того, как приложение обнаружило объект пропуска, выданный пользователю, который имеет идентификатор коллектора, соответствующий значению, объявленному терминалом.

Продолжая пример из предыдущего раздела, в следующей таблице описаны открытые ключи, связанные с каждым эмитентом.

Имя продавца ILuvКофе Кофе-Фу Мокко-Р-Ус
Идентификатор эмитента 123 456 789
Идентификатор коллектора 11111111 44444444 77777777
Уровни лояльности R-Базовый Мои награды
R-Золото
Открытые ключи ааа ббб

Пример клиента имеет следующие карты постоянного клиента, сохраненные в приложении Google Wallet:

  • ILuvCoffee: R-Basic
  • Кофе-Фу: Мои награды

Как и раньше, в свойстве redemptionIssuers для каждого класса лояльности задаются следующие значения.

  • R-Basic: ["456", "789"]
  • Мои награды: ["456"]

Если пользователь прикасается своим устройством к терминалам каждого продавца, есть три возможных результата:

Торговый терминал Исход
ILuvКофе Поскольку ILuvCoffee (идентификатор эмитента погашения 123 ) в настоящее время не настроен для выкупа собственного класса лояльности R-Basic, ничего не передается.
Кофе-Фу Приложение Google Wallet выполняет аутентификацию на терминале Coffee-Foo, используя открытый ключ bbb . В зависимости от текущего экрана, который пользователь просматривает на своем устройстве, произойдет один из сценариев, перечисленных в разделе «Взаимодействие с пользователем» .
Мокко-Р-Ус В этом примере для Mocha-R-Us нет открытого ключа. Несмотря на то, что программу R-Basic можно активировать у продавца, она не может аутентифицироваться на терминале, поэтому ничего не будет передано.

Ограничения аутентификации

Когда пропуск синхронизируется с приложением Google Кошелька пользователя, все эмитенты погашения этого пропуска просматриваются из серверной части Google Кошелька. Идентификатор коллекционера, открытые ключи и версии ключей для каждого эмитента погашения хранятся локально в приложении Google Wallet.

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

Приложение Google Кошелек не будет пытаться пройти аутентификацию на терминале, если у него нет пропусков, которые можно обменять на этом терминале. Это основано на идентификаторе коллектора и версии открытого ключа. Чтобы обновить открытые ключи для вашего пропуска, терминал должен иметь подключение к Интернету, чтобы он мог получить новые открытые ключи из серверной части Google Кошелька.

Один проход может быть связан одновременно со многими открытыми ключами. См. Конфигурацию продавца для получения информации о настройке нескольких открытых ключей для одного и того же прохода.

Передача значения во время касания

Чтобы отправлять данные из прохода во время касания, необходимо установить smartTapRedemptionValue объекта прохода. Как только класс, соответствующий объекту, будет включен для Smart Tap, это значение будет отправлено на терминал.

В зависимости от вашей интеграции и варианта использования это значение будет использоваться для идентификации вашего пользовательского пропуска и выполнения любой необходимой логики транзакции, например следующей:

  1. Обновить баланс или статус пользователя
  2. Обновите свой собственный бэкэнд на основе транзакции
  3. Выполните обновление объекта пропуска с помощью API Google Кошелька, чтобы оно отражало любые изменения статуса пользователя на его устройстве.

Терминал и приложение Google Wallet шифруют все данные, передаваемые по NFC. Терминал выполняет расшифровку данных после срабатывания Smart Tap. В данных имеются записи NDEF объекта службы, которые представляют каждый переданный проход. Service number NDEF Record объекта службы имеет полезную нагрузку, содержащую значение, установленное в свойстве smartTapRedemptionValue объекта пропуска. Это означает, что разработчику пропуска не нужно заниматься шифрованием передаваемых данных.

Если вы хотите добавить еще один уровень безопасности, вы можете установить свойство smartTapRedemptionValue , чтобы только система, получающая передаваемые данные (например, точка продаж), могла их расшифровать. Однако за процесс шифрования/дешифрования будут нести ответственность разработчик пропуска и администратор POS.