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 меняется в зависимости от следующих критериев:
- Если пользователь вошел в Google, кнопка отображается на предпочитаемом языке, указанном в профиле пользователя в учетной записи Google . Пользователь может прочитать Изменить язык , чтобы узнать, как изменить предпочитаемый язык своей учетной записи Google.
- Если пользователь не вошел в Google, кнопка использует значение
ACCEPT-LANGUAGE
в заголовке HTTP.
Если вы заметили, что кнопка не отображается на правильном языке в соответствии с приведенной выше логикой или формулировка неестественна, обратитесь в нашу службу поддержки .