Интеграция Google Wallet для билетов в Android приложении

Добавление билетов в Google Wallet из Android приложения Представьте: посетитель концерта подходит ко входу, достаёт телефон, и на экране блокировки уже отображается QR-код его билета. Никаких PDF-вложений, писем и очередей. Один из наших клиентов — организатор музыкальных фестивалей — столкнулся

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Интеграция Google Wallet для билетов в Android приложении
Средний
~2-3 дня

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Добавление билетов в Google Wallet из Android приложения

Представьте: посетитель концерта подходит ко входу, достаёт телефон, и на экране блокировки уже отображается QR-код его билета. Никаких PDF-вложений, писем и очередей. Один из наших клиентов — организатор музыкальных фестивалей — столкнулся с проблемой: 20% посетителей не могли найти свои билеты в почте или мессенджерах. После внедрения Google Wallet количество обращений в поддержку сократилось на 40%. Мы поможем внедрить такую интеграцию для вашего мобильного приложения: сервер генерирует JWT, приложение сохраняет билет в кошелёк, а статус обновляется в реальном времени. За плечами более пяти лет опыта работы с платёжными сервисами — гарантируем качество.

Как работает Google Wallet для билетов?

Google Wallet использует два объекта: EventTicketClass (шаблон мероприятия) и EventTicketObject (конкретный билет). Сервер создаёт JWT-токен с данными билета, подписанный сервисным аккаунтом Google. Приложение передаёт этот токен в Wallet API, и пользователь видит кнопку «Добавить в Google Wallet». После сохранения билет отображается в кошельке даже офлайн.

Почему Google Wallet надёжнее PDF-билетов?

PDF-билеты легко потерять, подделать или забыть. Google Wallet хранит билеты в защищённом хранилище, доступном без интернета. Вы можете обновлять статус в реальном времени: отметить билет использованным после входа или изменить место. Это повышает безопасность и удобство — пользователь не ищет письмо среди спама. Согласно Google Wallet API documentation, все данные передаются по зашифрованному каналу.

Как добавить билет в Google Wallet: пошаговая инструкция

  1. Настройка сервера. Создайте сервисный аккаунт в Google Cloud Console с ролью Wallet Object Issuer. Получите Issuer ID из Google Pay & Wallet Console.
  2. Генерация JWT. Сервер формирует JWT-токен с данными билета, подписанный приватным ключом. Токен действителен один час.
  3. Передача токена приложению. Приложение получает JWT через API или в ответе на покупку.
  4. Проверка доступности Wallet. Используйте PayApiAvailabilityStatus для определения, установлен ли Google Wallet на устройстве.
  5. Отображение кнопки. Если кошелёк доступен, покажите официальную кнопку «Добавить в Google Wallet».
  6. Сохранение билета. По нажатию вызывается savePassesViaIntent с JWT. Пользователь подтверждает — билет появляется в кошельке.

Пример генерации JWT на Python

import jwt from google.oauth2 import service_account import json def create_event_ticket_jwt(event_id: str, ticket_id: str, holder_name: str, seat: str) -> str: credentials = service_account.Credentials.from_service_account_file( 'service-account.json', scopes=['https://www.googleapis.com/auth/wallet_object.issuer'] ) issuer_id = "YOUR_ISSUER_ID" # из Google Pay & Wallet Console class_suffix = f"event_{event_id}" object_suffix = f"ticket_{ticket_id}" ticket_object = { "id": f"{issuer_id}.{object_suffix}", "classId": f"{issuer_id}.{class_suffix}", "state": "ACTIVE", "barcode": { "type": "QR_CODE", "value": ticket_id, "alternateText": ticket_id[:8] }, "ticketHolderName": holder_name, "seatInfo": { "seat": {"defaultValue": {"language": "ru", "value": seat}}, "row": {"defaultValue": {"language": "ru", "value": "A"}}, }, "reservationInfo": { "confirmationCode": ticket_id[:8].upper() }, "heroImage": { "sourceUri": {"uri": "https://yourapp.com/event-banner.jpg"} } } payload = { "iss": credentials.service_account_email, "aud": "google", "typ": "savetowallet", "iat": int(time.time()), "origins": ["https://yourapp.com"], "payload": { "eventTicketObjects": [ticket_object] } } token = jwt.encode(payload, credentials._private_key_pkcs8_pem, algorithm="RS256") return token 

JWT токен действителен один час и передаётся в приложение строкой.

Код для Android (Kotlin)

// build.gradle implementation("com.google.android.gms:play-services-wallet:19.3.0") class TicketActivity : AppCompatActivity() { private val walletClient by lazy { Wallet.getWalletClient( this, WalletOptions.Builder() .setEnvironment(WalletConstants.ENVIRONMENT_PRODUCTION) .build() ) } private val addToWalletLauncher = registerForActivityResult( ActivityResultContracts.StartIntentSenderForResult() ) { result -> when (result.resultCode) { RESULT_OK -> showSuccess() RESULT_CANCELED -> { /* пользователь отменил */ } else -> showError() } } fun addTicketToWallet(jwt: String) { val request = SavePassesRequest.newBuilder() .setJwt(jwt) .build() walletClient.savePassesViaIntent(request) { apiResult -> apiResult.intentSender?.let { intentSender -> addToWalletLauncher.launch( IntentSenderRequest.Builder(intentSender).build() ) } } } } 

По гайдлайнам Google используйте официальный компонент:

<com.google.android.gms.wallet.button.PayButton android:id="@+id/addToWalletButton" android:layout_width="match_parent" android:layout_height="48dp" app:allowedAuthMethods="PAN_ONLY|CRYPTOGRAM_3DS" app:buttonType="addToGoogleWallet" /> 

Перед отображением кнопки проверяйте доступность Wallet:

walletClient.getPayApiAvailabilityStatus( PayApiAvailabilityStatusRequest.newBuilder() .setRequestType(PayApiAvailabilityStatusRequest.RequestType.SAVE_PASSES) .build() ).addOnSuccessListener { status -> if (status.isAvailable) { addToWalletButton.isVisible = true } } 

Что нужно для начала интеграции?

Для запуска потребуется:

  • Доступ к Google Cloud Console для создания сервисного аккаунта.
  • Идентификатор эмитента (Issuer ID) из Google Pay & Wallet Console.
  • Сервер для генерации JWT (достаточно одного эндпоинта).
  • Мобильное приложение с возможностью добавить кнопку.
Подробнее о настройке сервисного аккаунта Сервисный аккаунт создаётся в разделе IAM Google Cloud Console. Ему присваивается роль `Wallet Object Issuer`. После создания скачивается JSON-ключ, который используется на сервере для подписи JWT. Убедитесь, что ключ хранится в безопасности и не попадает в репозиторий.

Обновление билета после выдачи

Если нужно изменить QR-код или статус (например, «использован»), отправляется PATCH-запрос:

from googleapiclient.discovery import build service = build('walletobjects', 'v1', credentials=credentials) service.eventticketobject().patch( resourceId=f"{issuer_id}.{object_suffix}", body={"state": "COMPLETED"} # билет использован ).execute() 

Изменения применяются в реальном времени на всех устройствах пользователей.

Сравнение: Google Wallet и PDF-билеты

Характеристика Google Wallet PDF-билет
Доступность офлайн Да Нет (нужен файл)
Обновление статуса В реальном времени Невозможно
Защита от подделок Криптографическая подпись Легко подделать
Удобство для пользователя Автоматически на телефоне Требуется поиск в почте
Интеграция с push-уведомлениями Да Нет

Сравнение: EventTicketClass и EventTicketObject

Сущность Назначение Пример
EventTicketClass Шаблон мероприятия: название, логотип, цвет, локация Концерт «Рок-фестиваль»
EventTicketObject Индивидуальный билет: место, имя владельца, QR-код Билет №1234, ряд 5, место 10

Сроки и стоимость

Ориентировочный срок — 2–3 дня. Точная стоимость рассчитывается после аудита вашего проекта. Оценим проект в течение дня после обращения. Свяжитесь с нами для консультации.

Заключение

Интеграция Google Wallet — это не только удобство для пользователей, но и дополнительный канал коммуникации: вы можете обновлять билеты, менять места или полностью аннулировать их. Наш опыт гарантирует быструю и качественную реализацию. Если вы хотите улучшить пользовательский опыт и повысить безопасность — свяжитесь с нами. Мы проведём аудит вашего проекта и предложим оптимальное решение. Закажите интеграцию Google Wallet уже сегодня.