Skip to main content

Google Pay

Knižnica obsahuje komponentu SecureGooglePayButton, ktorá zjednodušuje integráciu Google Pay do vašej aplikácie. Komponenta automaticky:

  • overí dostupnosť Google Pay na zariadení,
  • zobrazí standardní Google Pay tlačidlo,
  • spracuje platobný tok a získa platobný token,
  • odešle token ke spracovania na platební bránu.
Informácie

Predpokladom pre využitie Google Pay je aktivácia Checkout API a správne nastavenie v Google Play Console a Google Pay Console, ktoré sú popísané nižšie.

1. Google Play Console​

Pred nasadením Google Pay do produkčnej verzie aplikácie je nutné aplikáciu správne nakonfigurovať a publikovať v obchode Google Play. Tento krok je požadovaný spoločnosťou Google a je nevyhnutný pre aktiváciu Google Pay v súlade s jej podmienkami.

Konfigurácia, nahrávanie a správa aplikácie sa vykonáva prostredníctvom rozhrania Google Play Console. Aplikácia musí byť dostupná minimálne v režime interného alebo uzavretého testovania. Možnosťou je aj plné zverejnenie.

Tip

V dokumentácii nie je popísaný podrobný postup nastavenia v Google Play Console. Proces môže byť rozsiahly a líši sa podľa konkrétnej situácie, preto odporúčame riadiť sa oficiálnymi pokynmi spoločnosti Google.

Počas vývoja je tiež nutné zohľadniť ďalšie požiadavky Google, ktoré sa týkajú zverejnenia aplikácie s dostupným Google Pay.

2. Google Pay Console​

Akonáhle je aplikácia sprístupnená aspoň v režime interného testovania, je vhodné oboznámiť sa s požiadavkami na schválenie v Google Pay Console. Tento krok je nevyhnutný pre aktiváciu produkčnej verzie Google Pay.

Celý proces registrácie a konfigurácie je popísaný v oficiálnej dokumentácii.

Schvaľovací proces môže trvať niekoľko dní a vyžaduje splnenie nasledujúcich požiadaviek:

Upozornenie

Súčasťou schvaľovacieho procesu je aj doloženie screenshotov implementácie Google Pay vo vašej aplikácii.

V tomto kroku postačuje zriadiť prístup do Google Pay Console a overiť, že je v sekcii „Rozhranie API služby Google Pay" uvedená vaša aplikácia, ktorá bola nakonfigurovaná v Google Play Console.

Podanie žiadosti o schválenie bude popísané v neskoršej sekcii, a to po dokončení integrácie.

3. Implementácia​

Nasledujúca časť popisuje jednotlivé komponenty knižnice potrebné na integráciu Google Pay do vašej aplikácie.

Tip

Knižnica rieši konfiguráciu platobnej brány, zostavenie platobnej požiadavky, extrakciu tokenu aj jeho odoslanie na API automaticky. Stačí použiť komponentu SecureGooglePayButton a odovzdať potrebné parametre.

Požiadavky​

PožiadavkaPopis
googleMerchantIdGoogle Pay Merchant ID — povinný pre produkčné prostredie.
googleMerchantNameNázov obchodníka zobrazený v Google Pay dialogu (volitelné).
threeDSConfigInštancia ThreeDSConfig odovzdaná do ComgateSecureSession (vyžadované aj pre Google Pay).
Aktivácia Checkout APIKonfigurácia Google Pay je počas inicializácie session načítaná interne knižnicou.

Ako získať googleMerchantId​

googleMerchantId získate v Google Pay & Wallet Console v detaile vášho obchodníckeho profilu.

Stručný postup:

  1. Otvorte Google Pay & Wallet Console.
  2. Vyberte svoj Merchant profil (alebo vytvorte nový).
  3. V sekcii s detaily integrace zkopírujte hodnotu Merchant ID.
  4. Túto hodnotu použite ako googleMerchantId v ComgateSecureSession.

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 novo umožňuje prispôsobiť vzhľad a typ Google Pay tlačidla.

Metódy štylizácie​

MetódaParameterPopis
setButtonTheme(theme)GooglePayButtonThemeNastaví vizuálnu variantu (DARK, LIGHT).
setButtonType(type)GooglePayButtonTypeNastaví typ popisku tlačidla.
setCornerRadius(radiusDp)IntNastaví zaoblenie rohov 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útFormátPopis
app:gpButtonThemeenumVizuální varianta tlačidla: dark (predvolené), light.
app:gpButtonTypeenumTyp popisku tlačidla: book, buy, checkout, donate, order, pay (predvolené), plain, subscribe.
app:gpButtonCornerRadiusdimensionZaoblenie rohov tlačidla (predvolené: 8dp).

Nastavenie​

Metóda setup() prepojí tlačidlo so session a parametrami platby:

Dôležitý rozdiel oproti kartovej platbe
  • SecurePayButton (Compose) používa Activity.
  • SecureGooglePayButton (Compose) vyžaduje FragmentActivity (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. Akonáhle session dokončí inicializáciu a obsahuje Google Pay konfiguráciu, tlačidlo samo overí dostupnosť Google Pay na zariadení 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()
}
}
)
Použitie vo Fragmente

Vo vyššie uvedených príkladoch sa do lifecycleOwner odovzdáva this (aktivita). Ak session vytvárate vnútri Fragmentu, odovzdajte namiesto toho viewLifecycleOwner — napojí session na životný cyklus view, čím sa predíde únikom pamäte:

  • Activity: lifecycleOwner = this
  • Fragment: lifecycleOwner = viewLifecycleOwner (nie this — Fragment prežíva opätovné vytvorenie view)

PaymentParams​

Parametre platby pre Google Pay využívajú rovnaký objekt PaymentParams ako kartové platby. Kompletný popis všetkých parametrov nájdete v sekcii Kartové údaje — PaymentParams.

Konfigurácia v ComgateSecureSession​

Pre Google Pay je nutné v konštruktore ComgateSecureSession odovzdať googleMerchantId (pre produkciu) a voliteľne 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))
}
}
}

Kombinácia s kartovou platbou​

Google Pay tlačidlo možno ľahko kombinovať s kartovým formulárom na jednej obrazovke. Obe komponenty zdieľajú rovnakú 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 = rememberSecureDataCollector(panState, expiryState, cvvState)

Column(modifier = Modifier.fillMaxSize().padding(16.dp)) {
// Kartový formulár
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)
)
}
}
Informácie

Pri použití Google Pay v rámci Mobilného SDK vždy vytvorte a odovzdajte threeDSConfig do ComgateSecureSession.

4. Podanie žiadosti o schválenie​

Pre aktiváciu Google Pay v produkčnom režime je nutné odoslať žiadosť o schválenie prostredníctvom Google Pay Console. Tento krok je nevyhnutný pre sprístupnenie platieb reálnym platiteľom a zároveň zabezpečuje súlad s požiadavkami spoločnosti Google.

Checklist integrácie​

Pred podaním žiadosti je nutné prejsť kontrolný zoznam integrácie a overiť, či je integrácia funkčná. Google nevykonáva detailnú kontrolu splnenia jednotlivých položiek checklistu. V rámci integrácie cez Comgate nie je možné splniť všetky požiadavky uvedené v zozname, napriek tomu odporúčame overiť aspoň kľúčové časti.

Nasledujúca tabuľka zhŕňa požiadavky, ktoré buď nie je možné v rámci integrácie s Comgate splniť, alebo ich splnenie nie je povinné:

SekciaTestSplniteľnosťVysvetlenie
BasicsIf you complete a DIRECT tokenizationSpecification type integration...Nemožno splniťKnižnica vykonáva integráciu prostredníctvom platobnej brány. Priama integrácia (DIRECT) nie je podporovaná.
Functional testsIf you require a shipping address...VoliteľnéAdresa nie je na strane Comgate spracovávaná.
If you require a telephone number...VoliteľnéTelefónne číslo nie je na strane Comgate spracovávané.
Tip

Knižnica SecureGooglePayButton rieši všetku konfiguráciu platobnej brány interne (tokenizáciu, gateway identifikátor a pod.). Pri prechádzaní checklistu sa preto zamerajte najmä na body týkajúce sa UX, tlačidla a celkového správania aplikácie.

Sprievodca žiadosťou​

Tip

Než podáte žiadosť o schválenie, odporúčame pripraviť si všetky požadované screenshoty aplikácie.

Google vyžaduje snímky obrazovky znázorňujúce nasledujúce situácie:

  1. používateľ si prohlíží položku alebo službu,
  2. používateľ je pripravený dokončiť nákup,
  3. používateľ si zvolil Google Pay jako platební metodu,
  4. používateľovi sa zobrazujú platobné údaje uložené v Google Pay (odporúčame odfotiť iným zariadením),
  5. nákup bol úspešne dokončený.

Presné znenie požiadaviek nájdete na konci formulára žiadosti v Google Pay Console.

  1. Prihláste sa do Google Pay Console a vyberte obchodný profil, pod ktorým budú platby Google Pay prevádzkované.
  1. Na úvodnej stránke (prípadne v ľavom menu v sekcii Rozhranie API služby Google Pay → Integrate with your Android app) zvoľte aplikáciu, pre ktorú má byť žiadosť o schválenie podaná.
https://pay.google.com/business/console/home/XXXXXXXXXXX

Výber aplikácie z hlavnej stránky Google Pay Console

  1. Vo formulári v sekcii Your Google Pay API integration type zvoľte možnosť Brána (Gateway).
https://pay.google.com/business/console/payment/android/XXXXXXXXXXX/com.example.app

Výber typu integrácie „Brána" vo formulári žiadosti o schválenie

  1. Nahrajte všetky pripravené screenshoty, ktoré demonštrujú správnu funkčnosť Google Pay vo vašej aplikácii.
Tip

Niektoré kategórie vo formulári môžu obsahovať zhodné screenshoty – záleží na tom, akým spôsobom je navrhnutý váš checkout proces.

https://pay.google.com/business/console/payment/android/XXXXXXXXXXX/com.example.app

Nahranie screenshotov do formulára žiadosti o schválenie

  1. Po vyplnení všetkých požadovaných údajov kliknite na tlačidlo Uložiť.

  2. Ak sa formulár úspešne uloží a neobsahuje žiadne chyby, zobrazí sa v hornej časti stránky nová sekcia na odoslanie žiadosti. Skontrolujte, že sú splnené všetky požiadavky, potvrďte ich zaškrtnutím príslušných políčok a kliknite na tlačidlo Submit for approval, čím žiadosť odošlete.

https://pay.google.com/business/console/payment/android/XXXXXXXXXXX/com.example.app

Odoslanie žiadosti o schválenie v Google Pay Console

Po odeslání žádosti provede podpora Google Pay kontrolu vašej aplikace. V prípade úspechu bude integrácia schválená, v opačnom prípade obdržíte e‑mail s inštrukciami, čo je potrebné upraviť. Proces schvaľovania môže trvať niekoľko dní.

Tip

V niektorých prípadoch sa môže stať, že podpora Google Pay na žiadosť dlhší čas nereaguje. Odporúčame vyčkať aspoň 5 pracovných dní (podľa kalendára USA) a až potom kontaktovať podporu s otázkou na stav žiadosti.

Možnosť Kontaktovať podporu nájdete v ľavom menu Google Pay Console.

  1. Akonáhle je aplikácia schválená, obdržíte e-mail s potvrdením. Schválenie tiež uvidíte v Google Pay Console, kde bude aplikácia označená ako „Aktívna". Teraz je možné prepnúť v ComgateSecureSession parameter devMode na false (alebo ho úplne vynechať) pre aktiváciu produkčného režimu.
https://pay.google.com/business/console/payment/XXXXXXXXXXX

Stav schválenia aplikácie označený ako „Aktívna" v Google Pay Console

5. Testovacie prostredie​

Na rozdiel od integrácie Apple Pay je testovanie Google Pay podstatne jednoduchšie. Na testovanie je však nutné použiť fyzické zariadenie s aktivovanou peňaženkou Google Wallet.

Ako doplnok pri vývoji možno využiť aj emulátor systému Android, integrovaný v rámci Android Studia. Ten však podporuje iba obmedzené funkcie, napríklad zobrazenie tlačidla Google Pay.

Testovací vs. produkčný režim​

Knižnica automaticky prepína Google Pay medzi testovacím a produkčným prostredím na základe parametra devMode v ComgateSecureSession:

devModeProstredie Google PayPopis
trueWalletConstants.ENVIRONMENT_TESTTestovacie karty, žiadne reálne transakcie.
false (predvolené)WalletConstants.ENVIRONMENT_PRODUCTIONReálné platby — vyžaduje schválenou aplikaci v Google Pay Console.
Upozornenie

Pri vývoji a testovaní vždy nastavte devMode = true. Produkčné platby sú dostupné až po schválení aplikácie v Google Pay Console a jej inštalácii cez Google Play — vrátane režimu interného testovania.

Fyzické Android zariadenie​

Na plnohodnotné testovanie Google Pay odporúčame používať skutočné zariadenie. Zariadenie musí byť prihlásené k ľubovoľnému účtu Google a podporovať Google Wallet.

  1. Pripravte zariadenie

    • Skontrolujte, že je nainštalovaná aktuálna verzia Androidu.
    • Prihláste sa do Google účtu určeného na testovanie.
    • Pripravte si USB kábel na pripojenie zariadenia k počítaču.
  2. Aktivujte vývojársky režim

  3. Testovacie karty

    • Ak je devMode nastaven na true, po kliknutí na tlačidlo Google Pay se automaticky zobrazí testovací karty.
    • Tieto karty nemožno použiť pre reálne transakcie a slúžia výhradne na overenie integrácie.
    • Podrobnosti nájdete v oficiální dokumentaci Google.
  4. Spustite aplikáciu na zariadení

  5. Otestujte platbu

    • Po spustení aplikácie kliknite na tlačidlo Google Pay.
    • Ak je všetko nastavené správne, zobrazí sa výber testovacích kariet.
    • Transakcia bude simulovaná – nedôjde k jej reálnemu vykonaniu.
Tip

Ak se Google Pay nezobrazuje, zkontrolujte:

  • či je devMode nastavený na true v ComgateSecureSession,
  • či bolo zavolané gpButton.setup(...) na tlačidle SecureGooglePayButton,
  • správnosť parametrov v PaymentParams,
  • podporu Google Wallet na zariadení.

Android emulátor​

Android emulátor podporuje Google Pay iba v omezeném rozsahu. Možno otestovať zobrazenie tlačidla Google Pay a základné UI. Nie je možné dokončiť platbu ani získať platobný token. Na testovanie generovania tokenu je vždy nutné použiť fyzické Android zariadenie.

Spustenie aplikácie v emulátore je popísané v oficiálnej dokumentácii.

Upozornenie

Na Android emulátore nemožno získať zašifrovaný platobný token. Ide o zámerné obmedzenie zo strany spoločnosti Google.