Интеграция Google Wallet с картами лояльности Android: под ключ

Ваши клиенты на Android хотят носить карты лояльности в Google Wallet, но интеграция требует глубоких знаний API и правил Google. Мы разрабатываем интеграцию под ключ: создаём LoyaltyClass, настраиваем генерацию JWT и внедряем PayClient в ваше приложение. Наша команда берёт на себя весь цикл — от консоли издателя до релиза, обеспечивая надёжное решение с последующей поддержкой.

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

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

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

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

Как добавить карту лояльности в Google Wallet из Android-приложения?

Пользователи хотят носить карты лояльности в телефоне. Google Wallet — естественное место на Android, установленное на 1,5 млрд устройств. Но интеграция сложнее, чем простая кнопка «Добавить в Wallet»: нужно зарегистрировать издателя, создать класс карты, генерировать JWT и реализовать клиентский API. Мы провели более 10 интеграций с Google Wallet и знаем все подводные камни. Предлагаем реализацию под ключ — от консоли до кода, с гарантией прохождения ревью Google за 1-3 дня.

Например, для сети кофеен CoffeeBoom мы реализовали интеграцию Google Wallet с бонусной программой, создав LoyaltyClass с персонализированным дизайном и автоматической синхронизацией баллов через CRM. Проект занял 3 дня на разработку и 2 дня на ревью от Google. Интеграция Google Wallet позволяет пользователям всегда иметь карту лояльности под рукой, увеличивает вовлечённость на 25–40% и снижает затраты на выпуск пластика на 60–80%. Однако для стабильной работы требуется грамотная настройка JWT, обработка ошибок и соблюдение правил Google.

Официальная документация: Google Wallet Loyalty API

Этапы интеграции Google Wallet

Интеграция проходит в несколько этапов:

  1. Создание аккаунта издателя в Google Pay & Wallet Console.
  2. Создание LoyaltyClass — шаблона карты с логотипом, цветами и полями.
  3. Генерация LoyaltyObject для каждого пользователя на сервере.
  4. Подготовка JWT для передачи на клиент.
  5. Реализация PayClient.savePasses в Android-приложении.
  6. Обработка результата добавления и обновления данных.

Что нужно подготовить перед интеграцией?

Перед написанием кода — три шага в консоли:

  1. Создать аккаунт издателя (Issuer Account)
  2. Создать LoyaltyClass — шаблон карты
  3. Получить service account credentials для серверных вызовов

issuerId — числовой идентификатор издателя, например 3388000000022142. classId формируется как {issuerId}.{classPostfix}, например 3388000000022142.loyalty_main.

Вот минимальные поля для LoyaltyClass:

Поле Тип Пример
id string 3388000000022142.loyalty_main
issuerName string YourShop
programName localized Программа лояльности YourShop
programLogo Image https://yourshop.com/logo.png
hexBackgroundColor string #1E5AC8
countryCode string RU

Как сгенерировать JWT для каждого пользователя?

Каждый пользователь — отдельный LoyaltyObject. Мы создаём его на сервере и упаковываем в JWT:

import jwt
import time

loyalty_object = {
    "id": f"3388000000022142.user_{user_id}",
    "classId": "3388000000022142.loyalty_main",
    "state": "ACTIVE",
    "loyaltyPoints": {
        "label": "Баллы",
        "balance": {
            "int": user_points
        }
    },
    "barcode": {
        "type": "QR_CODE",
        "value": f"USER-{user_id}",
        "alternateText": f"USER-{user_id}"
    },
    "textModulesData": [
        {
            "header": "Уровень",
            "body": user_tier,
            "id": "tier"
        }
    ]
}

# Создаём объект через API
service.loyaltyobject().insert(body=loyalty_object).execute()

# Генерируем JWT для передачи на клиент
payload = {
    "iss": service_account_email,
    "aud": "google",
    "typ": "savetowallet",
    "iat": int(time.time()),
    "payload": {
        "loyaltyObjects": [
            {
                "id": loyalty_object["id"]
            }
        ]
    }
}

token = jwt.encode(payload, private_key, algorithm="RS256")

JWT передаётся в мобильное приложение. Срок жизни JWT — максимум 1 час, поэтому генерируйте его непосредственно перед отправкой.

Как добавить карту в Android через PayClient?

import com.google.android.gms.pay.Pay
import com.google.android.gms.pay.PayApiAvailabilityStatus
import com.google.android.gms.pay.PayClient

private lateinit var walletClient: PayClient

override fun onCreate(savedInstanceState: Bundle?) {
    walletClient = Pay.getClient(this)
    checkWalletAvailability()
}

private fun checkWalletAvailability() {
    walletClient
        .getPayApiAvailabilityStatus(PayClient.RequestType.SAVE_PASSES)
        .addOnSuccessListener { status ->
            if (status == PayApiAvailabilityStatus.AVAILABLE) {
                showAddToWalletButton()
            }
        }
}

private fun saveToWallet(jwt: String) {
    walletClient.savePasses(jwt, this, ADD_TO_GOOGLE_WALLET_REQUEST_CODE)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == ADD_TO_GOOGLE_WALLET_REQUEST_CODE) {
        when (resultCode) {
            RESULT_OK -> handleSuccess()
            RESULT_CANCELED -> handleCanceled()
            PayClient.SavePassesResult.SAVE_ERROR -> data?.let { handleError(it.getStringExtra(PayClient.EXTRA_API_ERROR_MESSAGE)) }
        }
    }
}

PayClient.RequestType.SAVE_PASSES проверяет, что Google Wallet установлен и работает. На устройствах без GMS (Huawei) Google Wallet недоступен — предусмотрите fallback.

Как обновить данные карты после выдачи?

Изменить баланс баллов — PATCH-запрос на существующий объект:

patch_body = {
    "loyaltyPoints": {
        "balance": {
            "int": new_points_value
        }
    }
}
service.loyaltyobject().patch(
    resourceId=f"3388000000022142.user_{user_id}",
    body=patch_body
).execute()

Google Wallet синхронизирует изменения на устройстве в течение 2-5 минут. Push-уведомлений отправлять не нужно — система сама обновляет карту.

Google Wallet или PassKit: что выбрать?

Критерий Google Wallet PassKit (iOS)
Формат REST API, JSON PKPass Archive
Время разработки 2-3 дня 4-5 дней
Офлайн-работа Требуется сеть для синхронизации Полная офлайн-поддержка
Обновление данных Автоматическое через API Требуется push-уведомление

Google Wallet не требует файлового архива — всё через REST API. Это ускоряет разработку в 2 раза и упрощает поддержку. Однако на iOS PassKit быстрее работает офлайн.

Что входит в нашу работу?

  • Серверная часть: создание LoyaltyClass, генерация LoyaltyObject и JWT, API для обновления данных
  • Клиентская часть: интеграция PayClient в Android-приложение, обработка результата добавления
  • Тестирование: проверка на устройствах с разными версиями Android, включая эмуляцию Google Wallet
  • Документация: описание всех эндпоинтов и инструкция для разработчика
  • Поддержка после запуска: помощь в прохождении ревью Google, мониторинг ошибок

Какие ошибки чаще всего допускают при интеграции?

  • Неверный формат classId: должен быть {issuerId}.{postfix}, иначе Google отклоняет запрос.
  • JWT с истёкшим сроком: время жизни не должно превышать 1 час, иначе клиент получит ошибку.
  • Отсутствие service account: без корректных credentials API не авторизует запросы.
  • Игнорирование reviewStatus: пока класс в статусе UNDER_REVIEW, карты нельзя добавлять на реальные устройства.

Убедитесь, что все поля заполнены, а серверный скрипт работает с правильным issuerId.

Сроки

2–3 дня: создание LoyaltyClass, серверная генерация объектов и JWT, интеграция PayClient в Android-приложение. Плюс 1–3 дня на ревью класса от Google. Стоимость рассчитывается индивидуально. Закажите интеграцию под ключ — мы оценим ваш проект и назовём сроки.

Наш опыт — 5+ лет в мобильной разработке, более 10 интеграций с Google Wallet, сотни успешно добавленных карт. Гарантируем правильную настройку с первого раза и прохождение ревью. Свяжитесь с нами, и мы подберём оптимальное решение для вашего бизнеса.

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

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

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714