Метод запроса POST с JWT

С помощью метода запроса POST с веб-токеном JSON (JWT) можно создавать разные категории карт для приложений Android. Такой способ следует использовать, если внедрить систему для того, чтобы добавлять классы до сохранения объекта, сложно. Воспользуйтесь этим методом, чтобы из вашего приложения можно было сохранять билеты на мероприятия, посадочные талоны и другие данные, для которых создается большое количество классов.

В настоящий момент, чтобы с помощью инструмента Google Pay API for Passses сохранить посадочный талон или билет на мероприятие из приложения Android, нужно использовать ссылку на веб-токен JSON и намерение. Процесс выглядит следующим образом:

  1. До того, как, например, посадочный талон будет сохранен, с помощью REST API на сервере создается класс.
  2. Далее, когда пользователь добавляет талон, сервер начинает отображать JWT, который представляет объект, в приложении Android.
  3. Там же показывается кнопка Сохранить в Google Pay. Ее дизайн должен соответствовать нашим правилам. Если нажать кнопку, откроется намерение ACTION_VIEW, идентификатор URI которого содержит JWT. Пример:
    https://pay.google.com/gp/v/save/{jwt_generated}
    

Метод запроса POST с JWT

Если сложно внедрить систему, благодаря которой классы смогут создаваться до сохранения объектов, можно использовать другой способ – метод запроса POST с JWT. Процесс выглядит следующим образом:

  1. Когда пользователь добавляет, например, посадочный талон, сервер начинает отображать JWT, который представляет как класс, так и объект, в приложении Android.
  2. В приложении показывается кнопка Сохранить в Google Pay. Ее дизайн должен соответствовать нашим правилам. Если нажать кнопку, произойдет следующее:
    1. С помощью запроса POST по HTTPS веб-токен JSON будет направлен в конечную точку.
    2. В обмен из тела ответа HTTP будет отправлен идентификатор URI, который можно использовать, чтобы открыть намерение ACTION_VIEW.

Создание класса

Новый класс создается только в наших внутренних системах, когда появляется значение class.id, которое ранее не сохранялось. Таким образом, повторно отправить сведения о классе в Google через JWT теоретически возможно, однако система распознает, что он уже существует. Это значит, что новый класс не создается каждый раз, когда в приложение добавляется посадочный талон.

Обновление класса

Когда будет добавлен первый посадочный талон, объект сохранится вместе с классом. Значение class.id можно использовать с REST API для выполнения операций ADDMESSAGE, GET, LIST, PATCH и UPDATE.

Чтобы изменить информацию о классе, используйте API для его обновления. Если вы создадите класс со значением class.id=XYZ и дополнительными сведениями, а потом добавите ещё один со значением class.id=XYZ, но с другими сведениями, то изменения сохранены не будут.

Формат JWT

Подробное описание формата JWT представлено в нашем справочном руководстве Google Pay API for Passess JWT. Через значение payload вы передаете два вхождения: первое – в виде объекта, который хотите создать, второе – с добавленным вами классом.

Запрос HTTP

Чтобы вставлять классы и объекты, указанные в JWT, можно использовать запрос INSERT.

Запрос JWT:INSERT

Если есть JWT, с помощью запроса INSERT можно вставить указанные в JWT классы и объекты. При успешном выполнении появится ответ HTTP с кодом 200.

Запрос HTTP

POST https://www.googleapis.com/walletobjects/v1/jwt/

Авторизация

Авторизация для этого запроса не требуется. Однако JWT нужно подписать с помощью RSA-SHA256. Ключ подписи создается сервисным аккаунтом OAuth.

Тело запроса

Предоставить данные нужно в виде определенной структуры:

{ “jwt” : string }

Тело ответа

Если запрос выполнен успешно, метод вернет ответ со следующей структурой:

{
    "saveUri": string,
    "resources": {
      "eventTicketClasses": [ eventTicketClass resource, ... ],
      "eventTicketObjects": [ eventTicketObject resource, ... ],
      "flightClasses": [ flightClass resource, ... ],
      "flightObjects": [ flightObject resource, ... ],
      "giftCardClasses": [ giftCardClass resource, ... ],
      "giftCardObjects": [ giftCardObject resource, ... ],
      "loyaltyClasses": [ loyaltyClass resource, ... ],
      "loyaltyObjects": [ loyaltyObject resource, ... ],
      "offerClasses": [ offerClass resource, ... ],
      "offerObjects": [ offerObject resource, ... ]
    }
}

Строка saveUri представляет собой последовательность URI, которую пользователь может открыть и применить, чтобы сохранять объекты, связанные в JWT с его аккаунтом Google. Идентификатор URI действует в течение недели со дня, когда он был возвращен.

О том, что именно можно отправлять конечной точке JWT, написано здесь.

Диаграммы процесса работы API

Посмотреть типичные диаграммы процесса работы API можно на этой странице.