Google Pay
Knihovna obsahuje komponentu SecureGooglePayButton, která zjednodušuje integraci Google Pay do vaší aplikace. Komponenta automaticky:
- ověří dostupnost Google Pay na zařízení,
- zobrazí standardní Google Pay tlačítko,
- zpracuje platební tok a získá platební token,
- odešle token ke zpracování na platební bránu.
Předpokladem pro využití Google Pay je aktivace Checkout API a správné nastavení v Google Play Console a Google Pay Console, které jsou popsány níže. Kompletní dokumentaci pro nativní integraci bez SDK naleznete v sekci Google Pay — Mobilní aplikace.
1. Google Play Console
Před nasazením Google Pay do produkční verze aplikace je nutné aplikaci správně nakonfigurovat a publikovat v obchodě Google Play. Tento krok je požadován společností Google a je nezbytný pro aktivaci Google Pay v souladu s jejími podmínkami.
Konfigurace, nahrávání a správa aplikace se provádí prostřednictvím rozhraní Google Play Console. Aplikace musí být dostupná minimálně v režimu interního nebo uzavřeného testování. Možností je také plné zveřejnění.
V dokumentaci není popsán podrobný postup nastavení v Google Play Console. Proces může být rozsáhlý a liší se podle konkrétní situace, proto doporučujeme řídit se oficiálními pokyny společnosti Google.
Během vývoje je také nutné zohlednit další požadavky Google, které se týkají zveřejnění aplikace s dostupným Google Pay.
2. Google Pay Console
Jakmile je aplikace zpřístupněna alespoň v režimu interního testování, je vhodné seznámit se s požadavky na schválení v Google Pay Console. Tento krok je nezbytný pro aktivaci produkční verze Google Pay.
Celý proces registrace a konfigurace je popsán v oficiální dokumentaci.
Schvalovací proces může trvat několik dní a vyžaduje splnění následujících požadavků:
- pravidel pro používání značky (brand guidelines),
- doporučených postupů UX,
- a podmínek uvedených v kontrolním seznamu integrace.
Součástí schvalovacího procesu je také doložení screenshotů implementace Google Pay ve vaší aplikaci.
V tomto kroku postačuje zřídit přístup do Google Pay Console a ověřit, že je v sekci „Rozhraní API služby Google Pay" uvedena vaše aplikace, která byla nakonfigurována v Google Play Console.
Podání žádosti o schválení bude popsáno v pozdější sekci, a to po dokončení integrace.
3. Implementace
Následující část popisuje jednotlivé komponenty knihovny potřebné k integraci Google Pay do vaší aplikace.
Knihovna řeší konfiguraci platební brány, sestavení platebního požadavku, extrakci tokenu i jeho odeslání na API automaticky. Stačí použít komponentu SecureGooglePayButton a předat potřebné parametry.
Požadavky
| Požadavek | Popis |
|---|---|
googleMerchantId | Google Pay Merchant ID — povinný pro produkční prostředí. |
googleMerchantName | Název obchodníka zobrazený v Google Pay dialogu (volitelné). |
threeDSConfig | Instance ThreeDSConfig předaná do ComgateSecureSession (vyžadováno i pro Google Pay). |
| Aktivace Checkout API | Konfigurace Google Pay je během inicializace session načtena interně knihovnou. |
Jak získat googleMerchantId
googleMerchantId získáte v Google Pay & Wallet Console v detailu vašeho obchodnického profilu.
Stručný postup:
- Otevřete Google Pay & Wallet Console.
- Vyberte svůj Merchant profil (nebo vytvořte nový).
- V sekci s detaily integrace zkopírujte hodnotu Merchant ID.
- Tuto hodnotu použijte jako
googleMerchantIdvComgateSecureSession.
SecureGooglePayButton
Jetpack Compose
import cz.comgate.sdk.compose.*
SecureGooglePayButton(
session = session,
onPaymentResult = { result -> handleResult(result) },
paymentParamsProvider = {
PaymentParams(
email = "zakaznik@example.com",
price = 100,
curr = "CZK",
country = "CZ",
label = "Název platby",
refId = "ref-123",
fullName = "Jan Novák"
)
},
modifier = Modifier
.fillMaxWidth()
.height(56.dp)
)
Nastavení vzhledu tlačítka
SecureGooglePayButton nově umožňuje přizpůsobit vzhled a typ Google Pay tlačítka.
Metody stylování
| Metoda | Parametr | Popis |
|---|---|---|
setButtonTheme(theme) | GooglePayButtonTheme | Nastaví vizuální variantu (DARK, LIGHT). |
setButtonType(type) | GooglePayButtonType | Nastaví typ popisku tlačítka. |
setCornerRadius(radiusDp) | Int | Nastaví zaoblení rohů v dp. |
setLoadingAnimationEnabled(enabled) | Boolean | Zapne/vypne shimmer animaci během zpracování platby. Výchozí: true. |
SecureGooglePayButton(
session = session,
onPaymentResult = { result -> /* ... */ },
paymentParamsProvider = { /* ... */ },
modifier = Modifier.fillMaxWidth().height(56.dp),
update = {
setButtonTheme(GooglePayButtonTheme.LIGHT)
setButtonType(GooglePayButtonType.CHECKOUT)
setCornerRadius(12)
setLoadingAnimationEnabled(true)
}
)
XML atributy
| XML atribut | Formát | Popis |
|---|---|---|
app:gpButtonTheme | enum | Vizuální varianta tlačítka: dark (výchozí), light. |
app:gpButtonType | enum | Typ popisku tlačítka: book, buy, checkout, donate, order, pay (výchozí), plain, subscribe. |
app:gpButtonCornerRadius | dimension | Zaoblení rohů tlačítka (výchozí: 8dp). |
app:gpButtonLoadingAnimation | boolean | Povolí/zakáže shimmer animaci během zpracování platby. Výchozí: true. |
Nastavení
Metoda setup() propojí tlačítko se session a parametry platby:
SecurePayButton(Compose) používáActivity.SecureGooglePayButton(Compose) vyžadujeFragmentActivity(nebo podtyp, např.AppCompatActivity).
@Composable
private fun PaymentScreen(session: ComgateSecureSession) {
SecureGooglePayButton(
session = session,
onPaymentResult = { result ->
// Zpracování výsledku platby
},
paymentParamsProvider = {
PaymentParams(
email = "zakaznik@example.com",
price = 100,
curr = "CZK",
label = "Název platby",
refId = "ref-123",
fullName = "Jan Novák",
country = "CZ"
)
},
modifier = Modifier
.fillMaxWidth()
.height(56.dp)
)
}
Automatická vazba na session
Po zavolání gpButton.setup(...) se tlačítko automaticky naváže na ComgateSecureSession.
Jakmile session dokončí inicializaci a obsahuje Google Pay konfiguraci, tlačítko samo ověří dostupnost Google Pay na zařízení a případně se zobrazí.
val session = ComgateSecureSession(
checkoutId = "váš-checkout-id",
context = applicationContext,
threeDSConfig = ThreeDSConfig(),
lifecycleOwner = this,
onInitialized = { result ->
result.onFailure { e ->
Toast.makeText(this, "Chyba: ${e.message}", Toast.LENGTH_LONG).show()
}
}
)
Ve výše uvedených příkladech se do lifecycleOwner předává this (aktivita). Pokud session vytváříte uvnitř Fragmentu, předejte místo toho viewLifecycleOwner — napojí session na životní cyklus view, čímž se předejde memory leakům:
- Activity:
lifecycleOwner = this - Fragment:
lifecycleOwner = viewLifecycleOwner(nethis— Fragment přežívá opětovné vytvoření view)
PaymentParams
Parametry platby pro Google Pay využívají stejný objekt PaymentParams jako karetní platby. Kompletní popis všech parametrů naleznete v sekci Karetní data — PaymentParams.
Konfigurace v ComgateSecureSession
Pro Google Pay je nutné v konstruktoru ComgateSecureSession předat googleMerchantId (pro produkci) a volitelně googleMerchantName:
val session = ComgateSecureSession(
checkoutId = "váš-checkout-id",
context = applicationContext,
googleMerchantId = "váš-google-pay-merchant-id", // Povinné pro produkci
googleMerchantName = "Název obchodu", // Volitelné
threeDSConfig = ThreeDSConfig(), // Vyžadováno i pro Google Pay
lifecycleOwner = this
)
Kompletní příklad
class PaymentActivity : AppCompatActivity() {
private lateinit var session: ComgateSecureSession
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 1. Vytvoření session s Google Pay konfigurací
session = ComgateSecureSession(
checkoutId = "váš-checkout-id",
context = applicationContext,
googleMerchantId = "váš-google-pay-merchant-id",
googleMerchantName = "Název obchodu",
threeDSConfig = ThreeDSConfig(),
lifecycleOwner = this,
onInitialized = { result ->
result.onFailure { e ->
Toast.makeText(this, "Chyba: ${e.message}", Toast.LENGTH_LONG).show()
}
}
)
// 2. Nastavení Compose UI
setContent {
MaterialTheme {
Surface(modifier = Modifier.fillMaxSize()) {
GooglePayScreen(session)
}
}
}
}
}
@Composable
private fun GooglePayScreen(session: ComgateSecureSession) {
var resultText by remember { mutableStateOf("") }
Column(modifier = Modifier.fillMaxSize().padding(16.dp)) {
// Google Pay tlačítko
SecureGooglePayButton(
session = session,
onPaymentResult = { result ->
resultText = when (result) {
is PaymentResult.Paid -> "Platba úspěšná"
is PaymentResult.Pending -> "Platba se zpracovává..."
is PaymentResult.Cancelled -> "Platba zamítnuta: ${result.errorReason}"
is PaymentResult.Failed -> "Chyba: ${result.error.message}"
else -> ""
}
},
paymentParamsProvider = {
PaymentParams(
email = "zakaznik@example.com",
price = 100,
curr = "CZK",
label = "Objednávka #123",
refId = "order-123",
fullName = "Jan Novák",
country = "CZ"
)
},
modifier = Modifier.fillMaxWidth().height(56.dp)
)
if (resultText.isNotEmpty()) {
Text(text = resultText, modifier = Modifier.padding(top = 8.dp))
}
}
}
Kombinace s karetní platbou
Google Pay tlačítko lze snadno kombinovat s karetním formulářem na jedné obrazovce. Obě komponenty sdílejí stejnou ComgateSecureSession:
class PaymentActivity : AppCompatActivity() {
private lateinit var session: ComgateSecureSession
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Session pro oba typy plateb
session = ComgateSecureSession(
checkoutId = "váš-checkout-id",
context = applicationContext,
googleMerchantId = "váš-google-pay-merchant-id",
googleMerchantName = "Název obchodu",
threeDSConfig = ThreeDSConfig(), // Vyžadováno i pro Google Pay
lifecycleOwner = this
)
setContent {
MaterialTheme {
Surface(modifier = Modifier.fillMaxSize()) {
CombinedPaymentScreen(session)
}
}
}
}
}
@Composable
private fun CombinedPaymentScreen(session: ComgateSecureSession) {
val panState = rememberSecurePanFieldState()
val expiryState = rememberSecureExpiryFieldState()
val cvvState = rememberSecureCvvFieldState()
val statusState = rememberPaymentStatusState()
val collector = rememberSecureDataCollector(panState, expiryState, cvvState)
Column(modifier = Modifier.fillMaxSize().padding(16.dp)) {
// Karetní formulář
SecurePanField(state = panState, modifier = Modifier.fillMaxWidth())
Spacer(modifier = Modifier.height(8.dp))
SecureExpiryField(state = expiryState, modifier = Modifier.fillMaxWidth())
Spacer(modifier = Modifier.height(8.dp))
SecureCvvField(state = cvvState, modifier = Modifier.fillMaxWidth())
Spacer(modifier = Modifier.height(12.dp))
SecurePayButton(
session = session,
collector = collector,
onPaymentResult = { result -> statusState.showStatus(result) },
paymentParamsProvider = { /* ... */ },
modifier = Modifier.fillMaxWidth()
)
HorizontalDivider(modifier = Modifier.padding(vertical = 16.dp))
// Google Pay
SecureGooglePayButton(
session = session,
onPaymentResult = { result -> statusState.showStatus(result) },
paymentParamsProvider = { /* ... */ },
modifier = Modifier.fillMaxWidth().height(56.dp)
)
SecurePaymentStatusView(
state = statusState,
modifier = Modifier.fillMaxWidth().padding(top = 8.dp)
)
}
}
Při použití Google Pay v rámci Mobilního SDK vždy vytvořte a předejte threeDSConfig do ComgateSecureSession.
4. Podání žádosti o schválení
Pro aktivaci Google Pay v produkčním režimu je nutné odeslat žádost o schválení prostřednictvím Google Pay Console. Tento krok je nezbytný pro zpřístupnění plateb reálným plátcům a zároveň zajišťuje soulad s požadavky společnosti Google.
Checklist integrace
Před podáním žádosti je nutné projít kontrolní seznam integrace a ověřit, zda je integrace funkční. Google neprovádí detailní kontrolu splnění jednotlivých položek checklistu. V rámci integrace přes Comgate není možné splnit všechny požadavky uvedené v seznamu, přesto doporučujeme ověřit alespoň klíčové části.
Následující tabulka shrnuje požadavky, které buď není možné v rámci integrace s Comgate splnit, nebo jejich splnění není povinné:
| Sekce | Test | Splnitelnost | Vysvětlení |
|---|---|---|---|
| Basics | If you complete a DIRECT tokenizationSpecification type integration... | Nelze splnit | Knihovna provádí integraci prostřednictvím platební brány.
Přímá integrace (DIRECT) není podporována. |
| Functional tests | If you require a shipping address... | Volitelné | Adresa není na straně Comgate zpracovávána. |
| If you require a telephone number... | Volitelné | Telefonní číslo není na straně Comgate zpracováváno. |
Knihovna SecureGooglePayButton řeší veškerou konfiguraci platební brány interně (tokenizaci, gateway identifikátor apod.). Při procházení checklistu se proto zaměřte zejména na body týkající se UX, tlačítka a celkového chování aplikace.
Průvodce žádostí
Než podáte žádost o schválení, doporučujeme připravit si všechny požadované screenshoty aplikace.
Google vyžaduje snímky obrazovky znázorňující následující situace:
- uživatel si prohlíží položku nebo službu,
- uživatel je připraven dokončit nákup,
- uživatel si zvolil Google Pay jako platební metodu,
- uživateli se zobrazují platební údaje uložené v Google Pay (doporučujeme vyfotit jiným zařízením),
- nákup byl úspěšně dokončen.
Přesné znění požadavků najdete na konci formuláře žádosti v Google Pay Console.
- Přihlaste se do Google Pay Console a vyberte obchodní profil, pod kterým budou platby Google Pay provozovány.
- Na úvodní stránce (případně v levém menu v sekci Rozhraní API služby Google Pay → Integrate with your Android app) zvolte aplikaci, pro kterou má být žádost o schválení podána.
- Výběr z hlavní stránky
- Výběr prostřednictvím menu vlevo


- Ve formuláři v sekci Your Google Pay API integration type zvolte možnost Brána (Gateway).

- Nahrajte všechny připravené screenshoty, které demonstrují správnou funkčnost Google Pay ve vaší aplikaci.
Některé kategorie ve formuláři mohou obsahovat shodné screenshoty – záleží na tom, jakým způsobem je navržen váš checkout proces.

-
Po vyplnění všech požadovaných údajů klikněte na tlačítko Uložit.
-
Pokud se formulář úspěšně uloží a neobsahuje žádné chyby, zobrazí se v horní části stránky nová sekce pro odeslání žádosti. Zkontrolujte, že jsou splněny všechny požadavky, potvrďte je zaškrtnutím příslušných políček a klikněte na tlačítko Submit for approval, čímž žádost odešlete.

Po odeslání žádosti provede podpora Google Pay kontrolu vaší aplikace. V případě úspěchu bude integrace schválena, v opačném případě obdržíte e‑mail s instrukcemi, co je potřeba upravit. Proces schvalování může trvat několik dní.
V některých případech se může stát, že podpora Google Pay na žádost delší dobu nereaguje. Doporučujeme vyčkat alespoň 5 pracovních dní (dle kalendáře USA) a teprve poté kontaktovat podporu s dotazem na stav žádosti.
Možnost Kontaktovat podporu najdete v levém menu Google Pay Console.
- Jakmile je aplikace schválena, obdržíte email s potvrzením. Schválení též uvidíte v Google Pay Console, kde bude aplikace označena jako „Aktivní". Nyní je možné přepnout v
ComgateSecureSessionparametrdevModenafalse(nebo jej zcela vynechat) pro aktivaci produkčního režimu.

5. Testovací prostředí
Na rozdíl od integrace Apple Pay je testování Google Pay podstatně jednodušší. Pro testování je však nutné použít fyzické zařízení s aktivovanou peněženkou Google Wallet.
Jako doplněk při vývoji lze využít také emulátor systému Android, integrovaný v rámci Android Studia. Ten však podporuje pouze omezené funkce, například zobrazení tlačítka Google Pay.
Testovací vs. produkční režim
Knihovna automaticky přepíná Google Pay mezi testovacím a produkčním prostředím na základě parametru devMode v ComgateSecureSession:
devMode | Prostředí Google Pay | Popis |
|---|---|---|
true | WalletConstants.ENVIRONMENT_TEST | Testovací karty, žádné reálné transakce. |
false (výchozí) | WalletConstants.ENVIRONMENT_PRODUCTION | Reálné platby — vyžaduje schválenou aplikaci v Google Pay Console. |
Při vývoji a testování vždy nastavte devMode = true. Produkční platby jsou dostupné až po schválení aplikace v Google Pay Console a její instalaci přes Google Play — včetně režimu interního testování.
Fyzické Android zařízení
Pro plnohodnotné testování Google Pay doporučujeme používat skutečné zařízení. Zařízení musí být přihlášeno k libovolnému účtu Google a podporovat Google Wallet.
-
Připravte zařízení
- Zkontrolujte, že je nainstalována aktuální verze Androidu.
- Přihlaste se do Google účtu určeného pro testování.
- Připravte si USB kabel pro připojení zařízení k počítači.
-
Aktivujte vývojářský režim
- Postup aktivace se li ší podle výrobce a verze systému. Řiďte se oficiální dokumentací, případně pokyny výrobce.
- Aktivujte volby USB debugging a povolení instalace aplikací z neznámých zdrojů.
-
Testovací karty
- Pokud je
devModenastaven natrue, po kliknutí na tlačítko Google Pay se automaticky zobrazí testovací karty. - Tyto karty nelze použít pro reálné transakce a slouží výhradně k ověření integrace.
- Podrobnosti naleznete v oficiální dokumentaci Google.
- Pokud je
-
Spusťte aplikaci na zařízení
- Pro spuštění aplikace na připojeném testovacím zařízení postupujte podle oficiálních pokynů Android Studia.
-
Otestujte platbu
- Po spuštění aplikace klikněte na tlačítko Google Pay.
- Pokud je vše nastaveno správně, zobrazí se výběr testovacích karet.
- Transakce bude simulována – nedojde k jejímu reálnému provedení.
Pokud se Google Pay nezobrazuje, zkontrolujte:
- zda je
devModenastaven natruevComgateSecureSession, - zda bylo zavoláno
gpButton.setup(...)na tlačítkuSecureGooglePayButton, - správnost parametrů v
PaymentParams, - podporu Google Wallet na zařízení.
Android emulátor
Android emulátor podporuje Google Pay pouze v omezeném rozsahu. Lze otestovat zobrazení tlačítka Google Pay a základní UI. Není možné dokončit platbu ani získat platební token. Pro testování generování tokenu je vždy nutné použít fyzické Android zařízení.
Spuštění aplikace v emulátoru je popsáno v oficiální dokumentaci.
Na Android emulátoru nelze získat zašifrovaný platební token. Jedná se o záměrné omezení ze strany společnosti Google.
