Веб-кнопка JavaScript

Google Wallet API позволяет вашим пользователям добавлять объект в Google Wallet из Интернета. Пользователи могут добавлять свои карты прямо с вашего сайта.

В этом справочном материале содержится подробная информация об HTML-элементе g:savetoandroidpay , отображающем кнопку Google Wallet API, а также о веб-маркере JSON , описывающем вашу веб-службу для Google.

JavaScript API Google Кошелька

Для автоматического анализа HTML-тегов g:savetoandroidpay при загрузке включите стандартный JavaScript

<script src="https://apis.google.com/js/platform.js" type="text/javascript"></script>

Для приложений AJAX и явного отображения кнопок Google Wallet API включите параметр "parsetags": "explicit" .

<script src="https://apis.google.com/js/platform.js" type="text/javascript">
  {"parsetags": "explicit"}
</script>

HTML-тег g:savetoandroidpay

Тег пространства имен g:savetoandroidpay определяет положение и различные атрибуты кнопки «Добавить в Google Кошелек». Используйте этот тег, если вы выполняете рендеринг на стороне сервера HTML и JWT.

<g:savetoandroidpay jwt="JWT" onsuccess="successHandler" onfailure="failureHandler" />
Поле Тип Необходимый Описание
height Нить Н Высота отображаемой кнопки. Возможные значения: small (высота 30 пикселей) и standard (высота 38 пикселей). height по умолчанию small . Обратитесь к кнопкам Google Wallet API , чтобы увидеть образцы кнопок с различными настройками height .
jwt Нить Д API Google Кошелька JWT.
onsuccess Нить Н Строковое имя функции обработчика обратного вызова при успешном сохранении.
onfailure Нить Н Строковое имя функции обработчика обратного вызова при сбое сохранения. Этой функции передается объект ошибки, содержащий errorCode и errorMessage.
onprovidejwt Нить Н Строковое имя предоставляемой функции обработчика JWT. Цель этой функции — перехватить данные JWT и, возможно, манипулировать ими до того, как объект будет добавлен в Google Wallet. Эта функция не принимает никаких параметров и должна возвращать JWT в виде строки. При реализации обработчика событий исходные данные JWT можно получить в поле this.getOpenParams().renderData.userParams.jwt .
size Нить Н Ширина отображаемой кнопки. Вы можете установить size равным matchparent , чтобы ширина соответствовала ширине родительского элемента. Или оставьте size неопределенным, чтобы ширина растягивалась до ширины text . Обратитесь к кнопкам Google Wallet API , чтобы увидеть образцы кнопок с различными настройками size .
text Нить Н Устаревший
textsize Нить Н Когда указано значение textsize=large , отображается значительно увеличенный размер текста и размер кнопок для случаев с особыми требованиями к пользовательскому интерфейсу.
theme Нить Н Тема кнопки для отображения. Возможные значения: dark и light . Тема по умолчанию dark . См. кнопки Google Wallet API , чтобы увидеть примеры кнопок с различными настройками theme .

JWT API Google Кошелька

JWT Google Wallet API определяет объекты и классы для сохранения.

Протокол

        {
  "iss": "example_service_account@developer.gserviceaccount.com",
  "aud": "google",
  "typ": "savetoandroidpay",
  "iat": 1368029586,
  "payload": {
    "eventTicketClasses": [{
      ... //Event ticket Class JSON
    }],
    "eventTicketObjects": [{
      // Event ticket Object JSON
    }],
    "flightClasses": [{
      // Flight Class JSON
    }],
    "flightObjects": [{
      // Flight Object JSON
    }],
    "giftCardClasses": [{
      // Gift card Class JSON
    }],
    "giftCardObjects": [{
      // Gift card Object JSON
    }],
    "loyaltyClasses": [{
      // Loyalty Class JSON
    }],
    "loyaltyObjects": [{
      // Loyalty Object JSON
    }],
    "offerClasses": [{
      // Offer Class JSON
    }],
    "offerObjects": [{
      // Offer Object JSON
    }],
    "transitClasses": [{
      // Transit Class JSON
    }],
    "transitObjects": [{
      // Transit Object JSON
    }]
  },
  "origins": ["http://baconrista.com", "https://baconrista.com"]
}

Примечание. Эти JWT подписаны с использованием RSA-SHA256. Ключ подписи — это ключ, сгенерированный сервисной учетной записью OAuth.

Поле Тип Необходимый Описание
iss Нить Д Ваш сервисный аккаунт OAuth 2.0 сгенерировал адрес электронной почты.
aud Нить Д Аудитория. Аудитория для объектов Google Wallet API всегда будет google .
typ Нить Д Тип JWT. Аудитория для объектов API Google Кошелька всегда будет savetoandroidpay .
iat Целое число Д Выпущено в момент времени в секундах с начала эпохи.
payload Объект Д Объект полезной нагрузки.
payload.eventTicketClasses Множество Н Класс билета на мероприятие, который нужно сохранить.
payload.eventTicketObjects Множество Н Объект Event Ticket для сохранения.
payload.flightClasses Множество Н Летный класс для сохранения.
payload.flightObjects Множество Н Объект полета для сохранения.
payload.giftCardClasses Множество Н Класс подарочной карты для сохранения.
payload.giftCardObjects Множество Н Подарочная карта Объект для сохранения.
payload.loyaltyClasses Множество Н Класс лояльности, чтобы сэкономить.
payload.loyaltyObjects Множество Н Объект лояльности для сохранения.
payload.offerObjects Множество Н Предложите объект для сохранения.
payload.offerClasses Множество Н Предложите классу сэкономить.
payload.transitObjects Множество Н Транзитный объект для сохранения.
payload.transitClasses Множество Н Транзитный класс для сохранения.
origins Множество Д Массив доменов для утверждения функции сохранения JWT. Кнопка Google Wallet API не будет отображаться, если поле origins не определено. Потенциально вы можете получить сообщения «Загрузка запрещена X-Frame-Options» или «Отказано в отображении» в консоли браузера, если поле происхождения не определено.

Ваш закодированный JWT должен выглядеть примерно так:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJnb29nbGUiLCJvcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsImh0dHA6Ly93d3cuZ29vZ2xlLmNvbSJdLCJpc3MiOiJzMmFwLXRvb2wuZ29vZ2xlLmNvbUBhcHBzcG90LmdzZXJ2aWNlYWNjb3VudC5jb20iLCJpYXQiOjE1NTE5ODcxNTEsInR5cCI6InNhdmV0b3dhbGxldCIsInBheWxvYWQiOnsib2ZmZXJPYmplY3RzIjpbeyJpZCI6IjMyMDI0MTMyNDE4NDM2OTk0MDEuMDFfT2ZmZXJPYmplY3RJZCJ9XX19.maHX40WWT29TC_kEb90EKQBH9AiTYAZR3153K8UI7fznVnfjVdlwsH_GKTECV3PGXdNnKCcmatUbKsONC0bxrnAHYG02kuvA1D3hSctz_amU66ntsvGIDe13mpxTzhI8fPvt9KMP1iaO7uOJuLQIHwipu4uRFAjyFaHGVaSFaP9c53qQyb_Zgyyk50M-MhH2n4kDpstNCqUJKWaadQkOWjrtMjwGzQ_ME04lbR4wb_mfK1A7Rc1UieWkxM9aMl5TOPubBKxKRRk_CqillN8XoTl9MI5RRGPuElVO28zGpYlFS6BarzDaaUfmbRZGvfF8ZiKrHZKxVrJjfZIJ2TCcDw

Функция gapi.savetoandroidpay.render

Эта функция позволяет явно отображать кнопку Google Wallet API.

gapi.savetoandroidpay.render("dom-container",{
  "jwt": "JWT",
  "onsuccess": "successHandler",
  "onfailure": "failureHandler"
});
Поле Тип Необходимый Описание
dom-container Нить Д ID контейнера для размещения кнопки Google Wallet API.
jwt Нить Д JWT определяет содержимое для сохранения.
onsuccess Нить Н Строковое имя функции обработчика обратного вызова при успешном сохранении.
onfailure Нить Н Строковое имя функции обработчика обратного вызова при сбое сохранения. Этой функции передается объект ошибки, содержащий errorCode и errorMessage.
onprovidejwt Нить Н Строковое имя предоставляемой функции обработчика JWT. Цель этой функции — перехватить данные JWT и, возможно, манипулировать ими до того, как объект будет добавлен в Google Wallet. Эта функция не принимает никаких параметров и должна возвращать JWT в виде строки. При реализации обработчика событий исходные данные JWT можно получить в поле this.getOpenParams().renderData.userParams.jwt .

Коды ошибок и сообщения Google Wallet API

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

        {
          "errorCode": "errorCode",
          "errorMessage": "errorMessage"
        }
errorCode errorMessage
SERVICE_FAILURE Произошла ошибка на сервере Google Кошелька.
CLASS_NOT_FOUND Класс, указанный в объекте, не найден.
CLASS_MISMATCH Объект должен присутствовать, того же типа и должен ссылаться на вложенный класс.
ORIGIN_MISMATCH Происхождение кнопки не совпадает с указанным в списке происхождений.
INVALID_NUM_TYPES Можно указать только один тип объекта.
INVALID_SIGNATURE Подпись проверить не удалось.
INVALID_DUPLICATE_IDS Дублирование объектов или классов не допускается.
INVALID_JWT Недействительный JWT.
INVALID_EXP_IAT Срок действия JWT истек или он был выпущен в будущем.
INVALID_AUD Недопустимое значение для поля AUD.
INVALID_TYP Недопустимое значение для поля TYP.
INVALID_NUM_OBJECTS Для карт лояльности, подарочных карт и предложений можно указать ровно один объект и не более одного класса.
MALFORMED_ORIGIN_URL Неверный URL-адрес источника. URL должен содержать протокол и домен.
MISSING_ORIGIN Происхождение должно быть указано.
MISSING_FIELDS В закрытом объекте или классе отсутствовали обязательные поля.

Локализация

Язык кнопки JavaScript меняется в зависимости от следующих критериев:

  1. Если пользователь вошел в Google, кнопка отображается на предпочитаемом языке, указанном в профиле пользователя в учетной записи Google . Пользователь может прочитать Изменить язык , чтобы узнать, как изменить предпочитаемый язык своей учетной записи Google.
  2. Если пользователь не вошел в Google, кнопка использует значение ACCEPT-LANGUAGE в заголовке HTTP.

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