Google Pay
Knižnica obsahuje komponentu SecureGooglePayButton, která zjednodušuje integraci Google Pay do vašej aplikace. Komponenta automaticky:
- overí dostupnosť Google Pay na zařízení,
- zobrazí standardní Google Pay tlačidlo,
- zpracuje platební tok a získá platební token,
- odešle token ke spracovania na platební bránu.
Předpokladem pro využití Google Pay je aktivace Checkout API a správné nastavenie v Google Play Console a Google Pay Console, které jsou popsány níže. Kompletní dokumentaci pro nativní integraci bez SDK nájdete v sekcii 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í prostredníctvom rozhraní Google Play Console. Aplikace musí být dostupná minimálně v režimu interního alebo uzavřeného testování. Možností je také plné zveřejnění.
V dokumentaci není popsán podrobný postup nastavenie 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žívaní 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šej aplikaci.
V tomto kroku postačuje zřídit přístup do Google Pay Console a ověřit, že je v sekcii „Rozhraní API služby Google Pay" uvedena vaše aplikace, která bola nakonfigurována v Google Play Console.
Podání žádosti o schválení bude popsáno v pozdější sekcii, a to po dokončení integrace.
3. Implementace
Následující část popisuje jednotlivé komponenty knižnice potřebné k integraci Google Pay do vašej aplikace.
Knižnica ř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žiadavky
| Požiadavka | Popis |
|---|---|
googleMerchantId | Google Pay Merchant ID — povinný pro produkční prostředí. |
googleMerchantName | Názov obchodníka zobrazený v Google Pay dialogu (volitelné). |
threeDSConfig | Instance ThreeDSConfig předaná do ComgateSecureSession (vyžadováno i pro Google Pay). |
| Aktivácia Checkout API | Konfigurace Google Pay je počas 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 (alebo vytvořte nový).
- V sekcii 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ázov platby",
refId = "ref-123",
fullName = "Jan Novák"
)
},
modifier = Modifier
.fillMaxWidth()
.height(56.dp)
)
Nastavenie vzhledu tlačidla
SecureGooglePayButton nově umožňuje přizpůsobit vzhled a typ Google Pay tlačidla.
Metódy štylizácie
| Metoda | Parametr | Popis |
|---|---|---|
setButtonTheme(theme) | GooglePayButtonTheme | Nastaví vizuální variantu (DARK, LIGHT). |
setButtonType(type) | GooglePayButtonType | Nastaví typ popisku tlačidla. |
setCornerRadius(radiusDp) | Int | Nastaví zaoblenie rohů v dp. |
SecureGooglePayButton(
session = session,
onPaymentResult = { result -> /* ... */ },
paymentParamsProvider = { /* ... */ },
modifier = Modifier.fillMaxWidth().height(56.dp),
update = {
setButtonTheme(GooglePayButtonTheme.LIGHT)
setButtonType(GooglePayButtonType.CHECKOUT)
setCornerRadius(12)
}
)
XML atribúty
| XML atribút | Formát | Popis |
|---|---|---|
app:gpButtonTheme | enum | Vizuální varianta tlačidla: dark (predvolené), light. |
app:gpButtonType | enum | Typ popisku tlačidla: book, buy, checkout, donate, order, pay (predvolené), plain, subscribe. |
app:gpButtonCornerRadius | dimension | Zaoblení rohů tlačidla (predvolené: 8dp). |
Nastavenie
Metoda setup() propojí tlačidlo se session a parametry platby:
SecurePayButton(Compose) používaActivity.SecureGooglePayButton(Compose) vyžadujeFragmentActivity(alebo podtyp, napr.AppCompatActivity).
@Composable
private fun PaymentScreen(session: ComgateSecureSession) {
SecureGooglePayButton(
session = session,
onPaymentResult = { result ->
// Spracovanie výsledku platby
},
paymentParamsProvider = {
PaymentParams(
email = "zakaznik@example.com",
price = 100,
curr = "CZK",
label = "Názov platby",
refId = "ref-123",
fullName = "Jan Novák",
country = "CZ"
)
},
modifier = Modifier
.fillMaxWidth()
.height(56.dp)
)
}
Automatická väzba na session
Po zavolání gpButton.setup(...) se tlačidlo automaticky naváže na ComgateSecureSession.
Jakmile session dokončí inicializaci a obsahuje Google Pay konfiguraci, tlačidlo samo overí dostupnosť Google Pay na zařízení a prípadne sa 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 odovzdáva this (aktivita). Ak session vytváříte uvnitř Fragmentu, předejte namiesto toho viewLifecycleOwner — napojí session na životný cyklus view, čímž se predíde únikom pamäte:
- Activity:
lifecycleOwner = this - Fragment:
lifecycleOwner = viewLifecycleOwner(nethis— Fragment přežívá opätovné vytvorenie view)
PaymentParams
Parametry platby pro Google Pay využívají stejný objekt PaymentParams jako karetní platby. Kompletní popis všech parametrů nájdete v sekcii Kartové údaje — 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ázov obchodu", // Volitelné
threeDSConfig = ThreeDSConfig(), // Vyžadováno i pro Google Pay
lifecycleOwner = this
)
Kompletný príklad
class PaymentActivity : AppCompatActivity() {
private lateinit var session: ComgateSecureSession
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 1. Vytvorenie session s Google Pay konfigurací
session = ComgateSecureSession(
checkoutId = "váš-checkout-id",
context = applicationContext,
googleMerchantId = "váš-google-pay-merchant-id",
googleMerchantName = "Názov obchodu",
threeDSConfig = ThreeDSConfig(),
lifecycleOwner = this,
onInitialized = { result ->
result.onFailure { e ->
Toast.makeText(this, "Chyba: ${e.message}", Toast.LENGTH_LONG).show()
}
}
)
// 2. Nastavenie 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čidlo
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 zamietnutá: ${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čidlo 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ázov 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 = rememberSecureCardCollector(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)
)
}
}
Pri použitie 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í prostredníctvom Google Pay Console. Tento krok je nezbytný pro zpřístupnění plateb reálným plátcům a zároveň zabezpeč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, alebo ich splnění není povinné:
| Sekce | Test | Splnitelnost | Vysvětlení |
|---|---|---|---|
| Basics | If you complete a DIRECT tokenizationSpecification type integration... | Nelze splnit | Knižnica provádí integraci prostredníctvom platební brány.
Přímá integrace (DIRECT) není podporována. |
| Functional tests | If you require a shipping address... | Volitelné | Adresa není na strane Comgate zpracovávána. |
| If you require a telephone number... | Volitelné | Telefonní číslo není na strane Comgate zpracováváno. |
Knižnica SecureGooglePayButton řeší veškerou konfiguraci platební brány interně (tokenizaci, gateway identifikátor apod.). Pri procházení checklistu se proto zaměřte zejména na body týkající se UX, tlačidla 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:
- používateľ si prohlíží položku alebo službu,
- používateľ je připraven dokončit nákup,
- používateľ si zvolil Google Pay jako platební metodu,
- používateľi 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 ktorým budou platby Google Pay provozovány.
- Na úvodní stránce (případně v levém menu v sekcii Rozhraní API služby Google Pay → Integrate with your Android app) zvolte aplikaci, pro ktorú má být žádost o schválení podána.
- Výběr z hlavní stránky
- Výběr prostredníctvom menu vlevo


- Ve formuláři v sekcii 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šej 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 údajov kliknite na tlačidlo Uložit.
-
Ak 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 kliknite na tlačidlo Submit for approval, čímž žádost odešlete.

Po odeslání žádosti provede podpora Google Pay kontrolu vašej 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ěktorý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 až 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(alebo 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 pri vývoji lze využít také emulátor systému Android, integrovaný v rámci Android Studia. Ten však podporuje iba omezené funkce, například zobrazení tlačidla Google Pay.
Testovací vs. produkční režim
Knižnica 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 (predvolené) | WalletConstants.ENVIRONMENT_PRODUCTION | Reálné platby — vyžaduje schválenou aplikaci v Google Pay Console. |
Pri 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 — vrátane 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 aktivácie 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í inštalácia aplikací z neznámých zdrojů.
-
Testovací karty
- Ak je
devModenastaven natrue, po kliknutí na tlačidlo Google Pay se automaticky zobrazí testovací karty. - Tieto karty nelze použít pro reálné transakce a slouží výhradne k ověření integrace.
- Podrobnosti nájdete v oficiální dokumentaci Google.
- Ak 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 kliknite na tlačidlo Google Pay.
- Ak 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í.
Ak 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 iba v omezeném rozsahu. Lze otestovat zobrazení tlačidla 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.
