Веб-кнопка JavaScript

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

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

API Google Кошелька JavaScript

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

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

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

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

g:savetoandroidpay HTML-тег

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

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

API Google Кошелька JWT

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

JSON-представление

{
  "iss": "example_service_account@developer.gserviceaccount.com",
  "aud": "google",
  "typ": "savetowallet",
  "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"]
}

Поля

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

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

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJnb29nbGUiLCJvcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsImh0dHA6Ly93d3cuZ29vZ2xlLmNvbSJdLCJpc3MiOiJzMmFwLXRvb2wuZ29vZ2xlLmNvbUBhcHBzcG90LmdzZXJ2aWNlYWNjb3VudC5jb20iLCJpYXQiOjE1NTE5ODcxNTEsInR5cCI6InNhdmV0b3dhbGxldCIsInBheWxvYWQiOnsib2ZmZXJPYmplY3RzIjpbeyJpZCI6IjMyMDI0MTMyNDE4NDM2OTk0MDEuMDFfT2ZmZXJPYmplY3RJZCJ9XX19.maHX40WWT29TC_kEb90EKQBH9AiTYAZR3153K8UI7fznVnfjVdlwsH_GKTECV3PGXdNnKCcmatUbKsONC0bxrnAHYG02kuvA1D3hSctz_amU66ntsvGIDe13mpxTzhI8fPvt9KMP1iaO7uOJuLQIHwipu4uRFAjyFaHGVaSFaP9c53qQyb_Zgyyk50M-MhH2n4kDpstNCqUJKWaadQkOWjrtMjwGzQ_ME04lbR4wb_mfK1A7Rc1UieWkxM9aMl5TOPubBKxKRRk_CqillN8XoTl9MI5RRGPuElVO28zGpYlFS6BarzDaaUfmbRZGvfF8ZiKrHZKxVrJjfZIJ2TCcDw

gapi.savetoandroidpay.render

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

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

Коды ошибок и сообщения API Google Кошелька

В следующих таблицах перечислены коды ошибок и сообщения об ошибках по умолчанию, передаваемые в объекте ошибки функции обратного вызова при сбое, когда объект не удается успешно сохранить с помощью кнопки 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-заголовке.

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