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

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

Останні роботи

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