Інтеграція Google Wallet з картками лояльності Android

Як додати картку лояльності в Google Wallet з Android-додатку? Користувачі хочуть носити картки лояльності в телефоні. Google Wallet — природне місце на Android, встановлене на 1,5 млрд пристроїв. Але інтеграція складніша, ніж проста кнопка "Додати в Wallet": потрібно зареєструвати видавця, створ

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, 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-додатку?

Користувачі хочуть носити картки лояльності в телефоні. 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 UA

Як згенерувати 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, сотні успішно доданих карток. Гарантуємо правильне налаштування з першого разу і проходження рев'ю. Зв'яжіться з нами, і ми підберемо оптимальне рішення для вашого бізнесу.