Перейти к содержанию

Google Wallet API

Google Wallet API позволяет программно создавать, обновлять, получать списки и управлять картами Google Wallet. Он поддерживает те же операции, что и конструктор карт в Панели управления.

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

Базовый URL

Anchor link to
https://apple-passkit.svc-nue.pushwoosh.com

Все эндпоинты обслуживаются по HTTPS. Запросы и ответы используют application/json, если не указано иное.

Аутентификация

Anchor link to

Каждый запрос должен включать заголовок Authorization с вашим токеном доступа к API Pushwoosh:

Authorization: Token <api-token>

Аккаунт, которому принадлежит токен, должен владеть приложением, на которое ссылается applicationCode. Запрос для приложения, принадлежащего другому аккаунту, вернет 403 Forbidden.

Соглашения

Anchor link to
  • Именование полей: Поля JSON используют lowerCamelCase (например, serialNumber, hexBackgroundColor, logoUrl).
  • Незаполненные поля: ответы включают все поля, даже если они пустые или имеют нулевое значение.
  • Идентификация: serialNumber всегда присваивается сервером при создании карты. Любое значение, которое вы отправляете при создании, игнорируется. Полный идентификатор объекта Google Wallet — {issuerId}.{serialNumber}.
  • Изображения: logoUrl и heroImageUrl — это публичные HTTPS URL-адреса изображений, которые Google загружает, а не загруженные файлы.
  • Стиль карты: для карты должен быть установлен ровно один объект стиля (generic, offer, loyalty, eventTicket, giftCard, flight или transit). Стиль не может быть изменен после создания.

Ответы об ошибках

Anchor link to
HTTP-статусЗначение
400 Bad RequestНеверный аргумент — обязательное поле отсутствует или имеет неверный формат.
401 UnauthorizedОтсутствует или недействителен заголовок Authorization.
403 ForbiddenПриложение не принадлежит аккаунту вызывающей стороны.
404 Not FoundКарта, шаблон или приложение не найдены.
503 Service UnavailableСервис перегружен или временно недоступен.

Эндпоинты

Anchor link to
МетодПутьОписание
POST/api/google/pass/validateПроверить конфигурацию карты
POST/api/google/pass/createСоздать новый объект карты и получить ссылку для сохранения
POST/api/google/pass/update/{serialNumber}Обновить существующую карту; Google доставит изменение
GET/api/google/pass/{applicationCode}/{serialNumber}/save-linkПолучить ссылку для сохранения “Добавить в Google Wallet”
GET/api/google/pass/{applicationCode}/{serialNumber}Получить одну карту
GET/api/google/passesПолучить список всех карт для приложения
POST/api/google/pass/{applicationCode}/{serialNumber}/stateАктивировать или сделать недействительной карту
DELETE/api/google/pass/{applicationCode}/{serialNumber}Удалить карту
GET/api/google/configПолучить конфигурацию Google Wallet для приложения
GET/api/google/templatesПолучить список доступных шаблонов карт
GET/api/google/templates/{filename}Получить один шаблон

Создать карту

Anchor link to

Создает класс и объект карты в Google Wallet, затем возвращает присвоенный сервером серийный номер, полный идентификатор объекта и ссылку для сохранения “Добавить в Google Wallet”.

POST /api/google/pass/create

Тело запроса

Anchor link to
ПараметрТипОбязательныйОписание
passobjectДаОбъект карты, описывающий карту. Должен быть установлен ровно один стиль.
userIdstringДаUser ID Pushwoosh, которому выдана карта.
applicationCodestringДаКод приложения Pushwoosh.
Пример запроса
Anchor link to
{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"hexBackgroundColor": "#3c414c",
"logoUrl": "https://cdn.acme.com/logo.png",
"loyalty": {
"programName": "Acme Rewards",
"accountName": "Jane Doe",
"accountId": "1234567890",
"pointsLabel": "Points",
"pointsBalance": "1200",
"rewardsTier": "Gold"
},
"barcode": {
"format": "QR_CODE",
"value": "1234567890"
}
}
}

Ответ

Anchor link to
ПолеТипОписание
serialNumberstringУникальный идентификатор созданной карты, присвоенный сервером.
objectIdstringПолный идентификатор объекта Google Wallet: {issuerId}.{serialNumber}.
saveLinkstringСсылка “Добавить в Google Wallet”: https://pay.google.com/gp/v/save/{jwt}.
messagestringСообщение о результате.
Пример ответа
Anchor link to
{
"serialNumber": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"objectId": "XXXXXXXXXXXXXXX.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"saveLink": "https://pay.google.com/gp/v/save/{jwt}",
"message": "Pass created successfully"
}

Проверить карту

Anchor link to

Проверяет конфигурацию карты на соответствие требованиям Google без ее создания. Полезно перед вызовом create.

POST /api/google/pass/validate

Тело запроса

Anchor link to
ПараметрТипОбязательныйОписание
passobjectДаОбъект карты для проверки.

Ответ

Anchor link to
ПолеТипОписание
validbooleanПроходит ли карта проверку.
errorsarray of stringsБлокирующие проблемы, которые необходимо исправить.
warningsarray of stringsНеблокирующие рекомендации.

Обновить карту

Anchor link to

Обновляет объект карты новым содержимым. Затем Google доставляет обновленную версию на каждое устройство, сохранившее карту. Опционально отправляет уведомление на Android с обновлением.

POST /api/google/pass/update/{serialNumber}

Параметры пути

Anchor link to
ПараметрТипОписание
serialNumberstringСерийный номер, возвращенный при создании карты.

Тело запроса

Anchor link to
ПараметрТипОбязательныйОписание
updatesobjectДаОбъект карты с новым содержимым. Стиль не может быть изменен.
applicationCodestringДаКод приложения Pushwoosh.
notifyMessagestringНетЕсли не пусто, отправляет push-уведомление на Android с этим текстом всем, кто сохранил карту. Пустое значение означает тихое обновление.
notifyOnUpdatebooleanНетЗапросить уведомление об обновлении поля. Фактически уведомляют только карты loyalty, eventTicket и flight; другие стили принимают флаг, но никогда не отправляют уведомление. Уведомления срабатывают только в течение 3 часов до соответствующего времени начала, и Google ограничивает их до 3 уведомлений на карту в сутки.

Ответ

Anchor link to
ПолеТипОписание
successbooleanУспешно ли прошло обновление.
messagestringСообщение о результате.

Получить ссылку для сохранения

Anchor link to

Возвращает ссылку “Добавить в Google Wallet” для уже созданной карты. Объект карты должен уже существовать (создан через Создать карту).

GET /api/google/pass/{applicationCode}/{serialNumber}/save-link

Ответ

Anchor link to
ПолеТипОписание
saveLinkstringhttps://pay.google.com/gp/v/save/{jwt}.

Получить карту

Anchor link to

Возвращает одну сохраненную карту, включая ее полный объект карты.

GET /api/google/pass/{applicationCode}/{serialNumber}

Ответ

Anchor link to

Возвращает { "pass": { ... } }, одну запись карты.

Получить список карт

Anchor link to

Возвращает постраничный, отсортированный список карт, сохраненных для приложения.

GET /api/google/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20

Параметры запроса

Anchor link to
ПараметрТипОбязательныйОписание
applicationCodestringДаКод приложения Pushwoosh.
orderBystringНетПоле для сортировки: UPDATED (по умолчанию) или CREATED.
orderDirectionstringНетНаправление сортировки: DESC (по умолчанию, новые сначала) или ASC.
pageintegerНетИндекс страницы, начиная с нуля. По умолчанию 0.
perPageintegerНетРазмер страницы. 0 или пропущенное значение использует значение по умолчанию сервера.

Ответ

Anchor link to
ПолеТипОписание
passesarray of objectsТекущая страница записей карт.
pageintegerВозвращенный индекс страницы.
perPageintegerРазмер страницы, использованный для этого ответа.
totalintegerОбщее количество карт для приложения на всех страницах.

Установить состояние карты

Anchor link to

Активирует или делает недействительной карту. Недействительная (неактивная) карта перемещается в раздел Просроченные карты пользователя в Google Wallet; запись сохраняется, чтобы ее можно было повторно активировать.

POST /api/google/pass/{applicationCode}/{serialNumber}/state

Тело запроса

Anchor link to
ПараметрТипОбязательныйОписание
activebooleanДаtrue устанавливает состояние карты ACTIVE; false делает ее недействительной (INACTIVE).

Ответ

Anchor link to

Возвращает пустой объект {} в случае успеха.

Удалить карту

Anchor link to

Делает карту недействительной в Google и удаляет ее сохраненную запись в Pushwoosh.

DELETE /api/google/pass/{applicationCode}/{serialNumber}

Ответ

Anchor link to

Возвращает пустой объект {} в случае успеха.

Получить конфигурацию

Anchor link to

Возвращает состояние конфигурации Google Wallet для приложения.

GET /api/google/config?applicationCode=XXXXX-XXXXX

Ответ

Anchor link to
ПолеТипОписание
hasServiceAccountbooleanНастроен ли ключ сервисного аккаунта.
issuerIdstringНастроенный Issuer ID из Google Pay & Wallet Console.
serviceAccountEmailstringclient_email настроенного сервисного аккаунта.

Шаблоны

Anchor link to

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

GET /api/google/templates — возвращает { "templates": [ { "filename", "name", "description", "style" } ] }.

GET /api/google/templates/{filename} — возвращает { "template": { ...объект карты... } }.

Справочник объектов

Anchor link to

Объект карты (Pass object)

Anchor link to
ПолеТипОписание
serialNumberstringПрисваивается сервером при создании; идентифицирует карту.
generic / offer / loyalty / eventTicket / giftCard / flight / transitobjectСтиль карты. Должен быть установлен ровно один. См. объекты стилей ниже.
hexBackgroundColorstringЦвет фона карты, #rrggbb.
logoUrlstringПубличный HTTPS URL изображения логотипа. Обязательно для карт лояльности и проездных.
heroImageUrlstringПубличный HTTPS URL широкого баннерного изображения.
barcodeobjectШтрих-код, отображаемый на карте.
textModulesarrayТекстовые модули, отображаемые в детальном представлении.
linksarrayМодули ссылок, отображаемые в детальном представлении.
expirationTimestringВремя в формате ISO 8601, когда Google автоматически делает карту просроченной. Пустое значение означает отсутствие срока действия.
appLinkobjectСсылка на приложение: кнопка призыва к действию на лицевой стороне карты.
locationsarrayМестоположения, которые вызывают гео-уведомление (максимум 10).
holdersPolicystringКто может сохранить карту: ONE_USER_ALL_DEVICES (по умолчанию), ONE_USER_ONE_DEVICE или MULTIPLE_HOLDERS.

Универсальный объект (Generic object)

Anchor link to
ПолеТипОписание
cardTitlestringОбязательно. Название эмитента/программы в верхней части карты.
headerstringОбязательно. Основной заголовок карты.
subheaderstringВторостепенный заголовок.
cardFieldsarrayДо 6 текстовых модулей, закрепленных на лицевой стороне (до 3 рядов по 2).

Объект предложения (Offer object)

Anchor link to
ПолеТипОписание
titlestringОбязательно. Например, Скидка 20% на все.
providerstringОбязательно. Название продавца.
detailsstringДетали предложения.
finePrintstringУсловия и положения.
redemptionChannelstringONLINE, INSTORE, BOTH (по умолчанию) или TEMPORARY_PRICE_REDUCTION.
issuerNamestringОтображается на поверхностях Google “выпущено”; по умолчанию используется provider.

Объект лояльности (Loyalty object)

Anchor link to
ПолеТипОписание
programNamestringОбязательно. Требует logoUrl на карте.
accountNamestringИмя участника, отображаемое на карте.
accountIdstringID участника, отображаемый на карте.
pointsLabelstringНапример, Баллы. Отображается только с балансом.
pointsBalancestringБаланс баллов.
rewardsTierstringНапример, Золотой.
rewardsTierLabelstringМетка рядом с уровнем; по умолчанию Уровень.
issuerNamestringПо умолчанию используется programName.

Объект билета на мероприятие (Event ticket object)

Anchor link to
ПолеТипОписание
eventNamestringОбязательно.
venueName / venueAddressstringДетали места проведения.
startDateTime / endDateTimestringISO 8601 со смещением (например, 2026-07-01T19:30:00+02:00).
ticketHolderName / ticketNumber / ticketTypestringДетали о владельце и билете.
section / row / seat / gatestringДетали о месте.
issuerNamestringПо умолчанию используется eventName.

Объект подарочной карты (Gift card object)

Anchor link to
ПолеТипОписание
merchantNamestringОбязательно.
cardNumberstringОбязательно.
pinstringPIN-код карты.
balancestringДесятичная сумма, например 25.00. Требует balanceCurrency.
balanceCurrencystringКод валюты ISO 4217, например USD.
issuerNamestringПо умолчанию используется merchantName.

Объект авиабилета (Flight object)

Anchor link to
ПолеТипОписание
carrierIataCodestringОбязательно. 2-буквенный код IATA, например LX.
airlineNamestringОтображаемое название авиакомпании.
flightNumberstringОбязательно. Только цифры, например 113.
originAirportCode / destinationAirportCodestringОбязательно. 3-буквенные коды IATA.
originTerminal / originGate / destinationTerminalstringДетали терминала и выхода на посадку.
departureDateTimestringОбязательно. Местное время аэропорта отправления, ISO 8601 без смещения (например, 2026-09-01T06:30:00).
boardingTime / arrivalDateTimestringТот же локальный формат. arrivalDateTime — местное время в пункте назначения.
passengerNamestringОбязательно.
confirmationCode / seatNumber / seatClass / boardingGroupstringДетали о пассажире.
issuerNamestringПо умолчанию используется airlineName, затем код перевозчика.

Объект проездного билета (Transit object)

Anchor link to
ПолеТипОписание
transitTypestringОбязательно. BUS, RAIL, TRAM, FERRY или OTHER.
transitOperatorNamestringОбязательно. Требует logoUrl на карте.
passengerNamestringОбязательно.
ticketNumberstringНомер билета.
tripTypestringONE_WAY (по умолчанию) или ROUND_TRIP.
legsarrayОдин или несколько отрезков пути в порядке следования.
issuerNamestringПо умолчанию используется transitOperatorName.

Объект отрезка пути (Transit leg object)

Anchor link to
ПолеТипОписание
originName / destinationNamestringОбязательно.
departureDateTime / arrivalDateTimestringISO 8601; смещение опционально (местное время, если опущено).
platform / coach / seatstringДетали посадки.
fareNamestringНапример, Anytime Single.

Объект штрих-кода (Barcode object)

Anchor link to
ПолеТипОписание
formatstringQR_CODE, PDF_417, AZTEC, CODE_128, EAN_13 и другие типы штрих-кодов Google Wallet.
valuestringДанные, закодированные в штрих-коде.
altTextstringТекст, отображаемый под штрих-кодом.

Объект текстового модуля (Text module object)

Anchor link to
ПолеТипОписание
idstringИдентификатор модуля.
headerstringЗаголовок модуля.
bodystringТекст модуля.
Anchor link to
ПолеТипОписание
uristringURL внешней ссылки.
descriptionstringМетка ссылки, отображаемая в детальном представлении.
Anchor link to
ПолеТипОписание
uristringВеб-URL или URI для диплинка.
androidPackageNamestringОпционально. Если установлено, открывает приложение Android.
descriptionstringВнутреннее описание целевого URI (не видимая метка кнопки); по умолчанию используется URI.

Объект местоположения (Location object)

Anchor link to
ПолеТипОписание
latitudenumberот -90.0 до +90.0.
longitudenumberот -180.0 до +180.0.

Объект записи карты (Pass record object)

Anchor link to

Возвращается эндпоинтами list/get.

ПолеТипОписание
serialNumberstringСерийный номер карты.
objectIdstringПолный идентификатор объекта Google Wallet {issuerId}.{serialNumber}.
cardTitlestringОтображаемый заголовок/название для карты.
headerstringВторостепенный отображаемый заголовок.
userIdstringUser ID Pushwoosh, которому была выдана карта.
createdAt / updatedAtstringВременные метки создания и последнего обновления.
statestringACTIVE или INACTIVE.
stylestringgeneric, offer, loyalty, eventTicket, giftCard, flight или transit.
passobjectПолный объект карты для редактирования.