Metody pro Google Pay - csob/platebnibrana GitHub Wiki
Metoda | Popis |
---|---|
googlepay/echo | Získání parametrů pro inicializaci Google Pay. |
googlepay/init | Založení Google Pay platby pro googlepay@shop. |
googlepay/process | Spuštění zpracování Google Pay platby. |
Následující schéma zachycuje průběh Google Pay platby:
Zákazník platí na e-shopu svou objednávku. Obchodník zobrazuje zákazníkovi možnost zaplatit pomocí Google Pay platby, přičemž parametry pro inicializaci získává pomocí volání operace googlepay/echo
(0).
Poté, co zákazník zvolí Google Pay platbu, e-shop incializuje na platební bráně platbu pomocí operace googlepay/init
.
V odpovědi získává identifikaci platby payId
(1).
Na rozdíl od standardní platby kartou na bráně zůstává zákazník při Google Pay platbě na e-shopu obchodníka, potřebné údaje pro platbu (číslo karty a expirace) si platební brána dešifruje z payloadu poslaného v rámci operace googlepay/init
.
Platební brána provádí u některých plateb tzv. otisk zařízení (2). Jedná se o odeslání údajů z prohlížeče zákazníka vydavateli karty, který tato data následně použije pro následné ověření platby. Obchodník spouští další zpracování voláním operace googlepay/process
(3). Otisk zařízení je obchodník povinnen provést na straně e-shopu v rámci 1px iframe.
U některých plateb je v rámci ověření vyžadováno od zákazníka potvrzení platby (5). Stejně jako u otisku zařízení i potvrzení platby je obchodník povinnen provést na straně e-shopu, otevírá iframe nebo provádí přesměrování do top.location na základě parametrů přijatých z platební brány.
Obchodník průběžně zjišťuje stav platby pomocí volání operace payment/status
(4). V případě, že je vyžadováno potvrzení platby, je po dokončení ověření a autorizaci platby zákazník přesměrován pomocí returnMethod
na returnUrl
e-shopu. Po dokončení ověření a dokončení autorizace platby zobrazuje obchodník zákazníkovi výsledek platby.
Tučně uvedené parametry jsou pro volání povinné.
POST https://api.platebnibrana.csob.cz/api/v1.9/googlepay/echo
Tato operace umožňuje získat parametry pro inicializaci Google Pay. Parametry může obchodník uložit do cache a použít opakovaně pro zobrazení stránky s možností zaplatit pomocí Google Pay.
Položka | Typ | Popis |
---|---|---|
merchantId | String | ID obchodníka přiřazené platební bránou. |
dttm | String | Datum a čas odeslání požadavku ve formátu YYYYMMDDHHMMSS . |
signature | String | Podpis požadavku, kódováno v BASE64. |
Příklad požadavku:
{
"merchantId":"M1MIPS0000",
"dttm":"20220125131559",
"signature":"base64-encoded-signature-of-payment-request"
}
Položka | Typ | Popis |
---|---|---|
dttm | String | Datum a čas odpovědi ve formátu YYYYMMDDHHMMSS . |
resultCode | Number | Výsledek operace, viz výčet. |
resultMessage | String | Textový popis výsledku operace. |
initParams | Object | Parametry pro inicializaci javascriptu pro Google Pay platbu, vyplněno v případě, že resultCode je 0 . |
signature | String | Podpis odpovědi, kódováno v BASE64. |
Popis parametrů objektu initParams
, obchodník dané hodnoty v nezměněné podobě vyplní do js (viz dále) pro inicializaci Google Pay.
Položka | Typ | Popis |
---|---|---|
apiVersion | Number | Verze použitého Google Pay API. |
apiVersionMinor | Number | Minor verze použitého Google Pay API. |
paymentMethodType | String | Identifikátor typu platebního prostředku použitého v Google Pay, bude předvyplněno na základě nastavení platební brány, příklad: CARD . |
allowedCardNetworks | String | Seznam akceptovaných karetních brandů, které bude Google pay od zákazníka akceptovat, bude předvyplněno platební bránou na základě nastavení obchodníka, příklad: [ "VISA", "MASTERCARD" ] . |
allowedCardAuthMethods | String | Seznam akceptovaných typů karet uložených v rámci Google Pay, bude předvyplněno na základě nastavení platební brány, příklad: [ "CRYPTOGRAM_3DS" ] . |
assuranceDetailsRequired | Boolean | Příznak, zda je požadováno vrácení assuranceDetails dat (obsahují informace o provedené autentizaci). |
billingAddressRequired | Boolean | Příznak, zda je požadováno vrácení fakturační adresy z Google Pay. |
billingAddressParametersFormat | String | Formát vrácené fakturační adresy, bude předvyplněno na základě nastavení platební brány, příklad: FULL . |
tokenizationSpecificationType | String | Určuje způsob zpracování platebních dat, bude předvyplněno na základě nastavení platební brány, příklad: PAYMENT_GATEWAY . |
gateway | String | Identifikátor platební brány / providera registrovaného u Google, pomocí kterého je provedena vlastní autorizace platby. |
gatewayMerchantId | String | Identifikátor obchodníka přidělený platební bránou, používá se pro kontrolu konzistence předávaného payloadu. |
googlepayMerchantId | String | Identifikátor obchodníka přidělený společností Google po dokončení registrace obchodníka. |
merchantName | String | Název obchodníka, který se zobrazuje v GooglePay peněžence pro zaplacení dané platby. |
environment | String | Určuje prostředí, ve kterém je platba odehrává, možné hodnoty jsou TEST , PRODUCTION . |
totalPriceStatus | String | Typ předávané ceny, bude přednastaveno platební bránou na hodnotu FINAL . |
countryCode | String | Kód země dle standardu ISO 3166-1 alpha-2, ve které je platba zpracovávána. |
Příklad návratových hodnot pro googlepay/echo (googlepay@shop má obchodník povolen):
{
"dttm":"20220125131601",
"resultCode": 0,
"resultMessage":"OK",
"initParams": {
"apiVersion": 2,
"apiVersionMinor": 0,
"paymentMethodType": "CARD",
"allowedCardNetworks": ["VISA", "MASTERCARD"],
"allowedCardAuthMethods": ["CRYPTOGRAM_3DS"],
"assuranceDetailsRequired": true,
"billingAddressRequired": true,
"billingAddressParametersFormat": "FULL",
"tokenizationSpecificationType": "PAYMENT_GATEWAY",
"gateway":"csob",
"gatewayMerchantId":"M1MIPS0000",
"googlepayMerchantId":"01234567890123456789",
"merchantName":"Váš obchod, a.s.",
"environment":"TEST",
"totalPriceStatus":"FINAL",
"countryCode":"CZ"
},
"signature":"base64-encoded-response-signature"
}
Příklad návratových hodnot pro googlepay/echo (googlepay@shop má obchodník zakázán):
{
"dttm":"20220125131601",
"resultCode": 160,
"resultMessage":"Payment method disabled",
"signature":"base64-encoded-response-signature"
}
Poté, co obchodník získá v odpovědi na volání googlepay/echo
parametry předané v initParams
, provede na straně e-shopu vložení/vygenerování javascriptu pro inicializaci Google Pay platby, javascript je možné vygenerovat podle následující šablony, je potřeba nahradit všechny výskyty proměnných, které jsou uvedeny ve formátu ${variable}
.
Parametry ${totalPrice}
a ${currencyCode}
nejsou součástí initParams
, je potřeba je vyplnit dle zpracovávané platby. Částku nastavte jako celkovou částku s přesností na dvě desetinná místa. Formát měny musí odpovídat ISO 4217 alphabetic currency code
.
function processPayment(paymentData) {
// show returned data in developer console for debugging
console.log(paymentData);
// @todo pass payment data response to your gateway to process payment
}
Ukázková šablona pro obslužný javascript pro Google Pay pro e-shop obchodníka:
<script>
/**
* Define the version of the Google Pay API referenced when creating your
* configuration
*
* @see {@link https://developers.google.com/pay/api/web/reference/object#PaymentDataRequest|apiVersion in PaymentDataRequest}
*/
const baseRequest = {
apiVersion: ${apiVersion},
apiVersionMinor: ${apiVersionMinor}
};
/**
* Card networks supported by your site and your gateway
*
* @see {@link https://developers.google.com/pay/api/web/reference/object#CardParameters|CardParameters}
* @todo confirm card networks supported by your site and gateway
*/
const allowedCardNetworks = ${allowedCardNetworks};
/**
* Card authentication methods supported by your site and your gateway
*
* @see {@link https://developers.google.com/pay/api/web/reference/object#CardParameters|CardParameters}
* @todo confirm your processor supports Android device tokens for your
* supported card networks
*/
const allowedCardAuthMethods = ${allowedCardAuthMethods};
/**
* Identify your gateway and your site's gateway merchant identifier
*
* The Google Pay API response will return an encrypted payment method capable
* of being charged by a supported gateway after payer authorization
*
* @todo check with your gateway on the parameters to pass
* @see {@link https://developers.google.com/pay/api/web/reference/object#Gateway|PaymentMethodTokenizationSpecification}
*/
const tokenizationSpecification = {
type: '${tokenizationSpecificationType}',
parameters: {
'gateway': '${gateway}',
'gatewayMerchantId': '${gatewayMerchantId}'
}
};
/**
* Describe your site's support for the CARD payment method and its required
* fields
*
* @see {@link https://developers.google.com/pay/api/web/reference/object#CardParameters|CardParameters}
*/
const baseCardPaymentMethod = {
type: '${paymentMethodType}',
parameters: {
allowedAuthMethods: allowedCardAuthMethods,
allowedCardNetworks: allowedCardNetworks,
assuranceDetailsRequired: ${assuranceDetailsRequired},
billingAddressRequired: ${billingAddressRequired},
billingAddressParameters: {
format: '${billingAddressParametersFormat}'
}
}
};
/**
* Describe your site's support for the CARD payment method including optional
* fields
*
* @see {@link https://developers.google.com/pay/api/web/reference/object#CardParameters|CardParameters}
*/
const cardPaymentMethod = Object.assign(
{},
baseCardPaymentMethod,
{
tokenizationSpecification: tokenizationSpecification
}
);
/**
* An initialized google.payments.api.PaymentsClient object or null if not yet set
*
* @see {@link getGooglePaymentsClient}
*/
let paymentsClient = null;
/**
* Configure your site's support for payment methods supported by the Google Pay
* API.
*
* Each member of allowedPaymentMethods should contain only the required fields,
* allowing reuse of this base request when determining a viewer's ability
* to pay and later requesting a supported payment method
*
* @returns {object} Google Pay API version, payment methods supported by the site
*/
function getGoogleIsReadyToPayRequest() {
return Object.assign(
{},
baseRequest,
{
allowedPaymentMethods: [baseCardPaymentMethod]
}
);
}
/**
* Configure support for the Google Pay API
*
* @see {@link https://developers.google.com/pay/api/web/reference/object#PaymentDataRequest|PaymentDataRequest}
* @returns {object} PaymentDataRequest fields
*/
function getGooglePaymentDataRequest() {
const paymentDataRequest = Object.assign({}, baseRequest);
paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
paymentDataRequest.merchantInfo = {
// @todo a merchant ID is available for a production environment after approval by Google
// See {@link https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integration checklist}
merchantId: '${googlepayMerchantId}',
merchantName: '${merchantName}'
};
return paymentDataRequest;
}
/**
* Return an active PaymentsClient or initialize
*
* @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}
* @returns {google.payments.api.PaymentsClient} Google Pay API client
*/
function getGooglePaymentsClient() {
if ( paymentsClient === null ) {
paymentsClient = new google.payments.api.PaymentsClient({environment: '${environment}'});
}
return paymentsClient;
}
/**
* Initialize Google PaymentsClient after Google-hosted JavaScript has loaded
*
* Display a Google Pay payment button after confirmation of the viewer's
* ability to pay.
*/
function onGooglePayLoaded() {
const paymentsClient = getGooglePaymentsClient();
paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest())
.then(function(response) {
if (response.result) {
addGooglePayButton();
// @todo prefetch payment data to improve performance after confirming site functionality
// prefetchGooglePaymentData();
}
})
.catch(function(err) {
// show error in developer console for debugging
console.log('something went wrong ...');
console.error(err);
});
}
/**
* Add a Google Pay purchase button alongside an existing checkout button
*
* @see {@link https://developers.google.com/pay/api/web/reference/object#ButtonOptions|Button options}
* @see {@link https://developers.google.com/pay/api/web/guides/brand-guidelines|Google Pay brand guidelines}
*/
function addGooglePayButton() {
const paymentsClient = getGooglePaymentsClient();
const button =
paymentsClient.createButton({onClick: onGooglePaymentButtonClicked});
document.getElementById('container').appendChild(button);
}
/**
* Provide Google Pay API with a payment amount, currency, and amount status
*
* @see {@link https://developers.google.com/pay/api/web/reference/object#TransactionInfo|TransactionInfo}
* @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest
*/
function getGoogleTransactionInfo() {
return {
currencyCode: '${currencyCode}',
totalPriceStatus: '${totalPriceStatus}',
totalPrice: '${totalPrice}',
countryCode: '${countryCode}'
};
}
/**
* g payment data to improve performance
*
* @see {@link https://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()}
*/
function prefetchGooglePaymentData() {
const paymentDataRequest = getGooglePaymentDataRequest();
// transactionInfo must be set but does not affect cache
paymentDataRequest.transactionInfo = {
totalPriceStatus: 'NOT_CURRENTLY_KNOWN',
currencyCode: '${currencyCode}'
};
const paymentsClient = getGooglePaymentsClient();
paymentsClient.prefetchPaymentData(paymentDataRequest);
}
/**
* Show Google Pay payment sheet when Google Pay payment button is clicked
*/
function onGooglePaymentButtonClicked() {
const paymentDataRequest = getGooglePaymentDataRequest();
paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
const paymentsClient = getGooglePaymentsClient();
paymentsClient.loadPaymentData(paymentDataRequest)
.then(function(paymentData) {
// handle the response
processPayment(paymentData);
})
.catch(function(err) {
// show error in developer console for debugging
console.error(err);
});
}
/**
* Process payment data returned by the Google Pay API
*
* @param {object} paymentData response from Google Pay API after user approves payment
* @see {@link https://developers.google.com/pay/api/web/reference/object#PaymentData|PaymentData object reference}
*/
function processPayment(paymentData) {
// show returned data in developer console for debugging
console.log(paymentData);
// @todo pass payment data response to the payment gateway to process payment
// encode paymentData.paymentMethodData.tokenizationData.token into base64 and send it as payload parametr within googlepay/init call
}
</script>
<script async
src="https://pay.google.com/gp/p/js/pay.js"
onload="onGooglePayLoaded()"></script>
POST https://api.platebnibrana.csob.cz/api/v1.9/googlepay/init
Operace provede založení Google Pay platby pro googlepay@shop, volá se po získání payloadu z Google Pay.
Položka | Typ | Popis |
---|---|---|
merchantId | String | ID obchodníka přiřazené platební bránou. |
orderNo | String | Referenční číslo objednávky využívané pro párování plateb, které bude uvedeno také na výpisu z banky. Numerická hodnota, maximální délka je 10 číslic. |
dttm | String | Datum a čas odeslání požadavku ve formátu YYYYMMDDHHMMSS . |
clientIp | String | IP adresa zákazníka (jeho browseru) přistupující na e-shop obchodníka, formát ipv4 nebo ipv6. |
totalAmount | Number | Celková cena v setinách základní měny. Obchodník může nastavit celkovou cenu, která reflektuje způsob dopravy na základě adresy získané z Google Pay apod. Tato hodnota bude poslána do autorizace na platební bráně jako finální celková částka k zaplacení. Cena musí být stejná nebo menší jak částka autentizovaná držitelem karty v Google Pay. |
currency | String | Kód měny. Povolené hodnoty: CZK , EUR , USD , GBP , HUF , PLN , RON , NOK , SEK . |
closePayment | Boolean | Indikuje, zda má být platba automaticky zahrnuta do uzávěrky a proplacena. Povolené hodnoty: true / false . Od verze 1.9 nepovinný parametr, defaultní hodnota: true . |
payload | String | Data ve formátu JSON (paymentData.paymentMethodData.tokenizationData.token) přijatá obchodníkem v e-shopu v rámci Google Pay obchodník kóduje jako BASE64 a následně předává v parametru payload. Payment data obsahují Google Pay Payment Token potřebný pro autorizaci platby na platební bráně. |
returnUrl | String | URL adresa, na kterou bude klient přesměrován zpět do e-shopu po dokončení platby v případě, že u platby je vyžadováno potvrzení v rámci ověření platby. Maximální délka 300 znaků. Při přesměrování zpět na e-shop se předává stejná sada parametrů jako v případě návratu z platební brány při platbě kartou. |
returnMethod | String | Metoda návratu na URL adresu e-shopu. Povolené hodnoty POST , GET . Doporučená metoda je POST . |
customer | Object | Dodatečná data o nákupu týkající se zákazníka. Viz detailní popis struktury customer . |
order | Object | Dodatečná data o nákupu týkající se objednávky. Viz detailní popis struktury order . |
sdkUsed | Boolean | Indikuje, zda je ověření platby prováděno přes 3DS SDK (v případě mobilní aplikace) nebo ne (platba přes prohlížeč). Povolené hodnoty: true / false . Defaultní hodnota: false . |
merchantData | String | Libovolná pomocná data, která předává obchodník na bránu, musí být kódována v BASE64. Maximální délka po zakódování je 255 znaků. V případě obchodního modelu "Marketplace" musí obchodník identifikovat svého retailera pomocí IČO. Tento identifikátor je třeba plnit do hranatých závorek [] a může být umístěn libovolně v rámci položky merchantData. V případě, že se nákupu účastní vícero retailerů, hodnoty IČO se oddělují čárkou - např. [12345678,87654321]. |
language | String | Preferovaná jazyková mutace, která se použije v případě, že se provádí potvrzení platby. Povolené hodnoty: cs ,en ,de ,fr ,hu ,it ,ja ,pl ,pt ,ro ,ru ,sk ,es ,tr ,vi ,hr ,sl ,sv . |
ttlSec | Number | Nastavení životnosti platby, v sekundách, min. povolená hodnota 300, max. povolená hodnota 1800 (5-30 min). Defaultní hodnota: 1800. Životnost platby je počítána od okamžiku provolání googlepay/init . |
signature | String | Podpis požadavku, kódováno v BASE64. |
Příklad požadavku:
{
"merchantId":"M1MIPS0000",
"orderNo":"51966",
"dttm":"20220125131559",
"clientIp":"192.0.2.2",
"totalAmount":12300,
"currency":"CZK",
"payload":"base64-encoded-payload-from-googlepay",
"returnUrl":"https://shop.example.com/return",
"returnMethod":"POST",
"signature":"base64-encoded-signature-of-payment-request"
}
Příklad požadavku:
{
"merchantId":"M1MIPS0000",
"orderNo":"51966",
"dttm":"20220125131559",
"clientIp":"192.0.2.2",
"totalAmount":12300,
"currency":"CZK",
"closePayment": true,
"payload":"base64-encoded-payload-from-googlepay",
"returnUrl":"https://shop.example.com/return",
"returnMethod":"POST",
"customer": {
"name":"Jan Novák",
"email":"[email protected]",
"mobilePhone":"+420.800300300"
},
"order": {
"type":"purchase",
"availability":"now",
"delivery":"digital",
"deliveryMode": "0",
"deliveryEmail": "[email protected]"
},
"signature":"base64-encoded-signature-of-payment-request"
}
Položka | Typ | Popis |
---|---|---|
payId | String | Jednoznačné ID platby (přidělené platební bránou v operaci googlepay/init , obsahuje 15-znakový řetězec). |
dttm | String | Datum a čas odpovědi ve formátu YYYYMMDDHHMMSS . |
resultCode | Number | Výsledek operace, viz výčet. |
resultMessage | String | Textový popis výsledku operace. |
paymentStatus | Number | Stav platby, viz životní cyklus transakce. |
statusDetail | String | Detailní stav platby (tzv. mikrostav), obsahuje například důvod zamítnutí platby, viz popis. |
actions | Object | Struktura pro předání potřebných dat pro provedení otisku zařízení. Viz struktura actions. |
signature | String | Podpis odpovědi, kódováno v BASE64. |
Příklad návratových hodnot pro googlepay/init -- úspěšně založená platba:
{
"payId":"7624c5e60252@HA",
"dttm":"20220125131601",
"resultCode": 0,
"resultMessage":"OK",
"paymentStatus": 1,
"signature":"base64-encoded-response-signature"
}
Příklad návratových hodnot pro googlepay/init -- úspěšně založená platba, včetně parametrů pro provedení otisku zařízení:
{
"payId":"7624c5e60252@HA",
"dttm":"20220125131601",
"resultCode": 0,
"resultMessage":"OK",
"paymentStatus": 1,
"actions": {
"fingerprint": {
"browserInit": {
"url":"https://example.com/3ds-method-endpoint"
}
}
},
"signature":"base64-encoded-response-signature"
}
Příklad návratových hodnot pro googlepay/init -- úspěšně založená platba, včetně parametrů pro inicializaci 3DS SDK pro ověření platby:
{
"payId":"7624c5e60252@HA",
"dttm":"20220125131601",
"resultCode": 0,
"resultMessage":"OK",
"paymentStatus": 1,
"actions": {
"fingerprint": {
"sdkInit": {
"directoryServerID":"A000000003",
"schemeId":"Visa",
"messageVersion":"2.2.0"
}
}
},
"signature":"base64-encoded-response-signature"
}
V případě nevalidního požadavku vrací platební brána odpověď obsahující popis chyby. Detailní popis je uveden na stránce Volání rozhraní eAPI.
POST https://api.platebnibrana.csob.cz/api/v1.9/googlepay/process
Operace spustí zpracování Google Pay platby.
Položka | Typ | Popis |
---|---|---|
merchantId | String | ID obchodníka přiřazené platební bránou. |
payId | String | payID získané při založení Google Pay platby pomocí operace googlepay/init . |
dttm | String | Datum a čas odeslání požadavku ve formátu YYYYMMDDHHMMSS . |
fingerprint | Object | Dodatečná data pro ověření platby. Viz struktura fingerprint. |
signature | String | Podpis požadavku, kódováno v BASE64. |
Příklad požadavku: (googlepay@shop, platba prováděná z prohlížeče zákazníka)
Obchodník předává v požadavku parametry prohlížeče zákazníka.
{
"merchantId":"M1MIPS0000",
"payId":"7624c5e60252@HA",
"dttm":"20220125131615",
"fingerprint": {
"browser": {
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36",
"acceptHeader":"text/html,application/xhtml+xml,application/xml;",
"language":"en",
"javascriptEnabled":false
}
},
"signature":"base64-encoded-request-signature"
}
Příklad požadavku: (googlepay@shop, platba prováděná z mobilní aplikace s integrovaným 3DS SDK)
Obchodník předává v požadavku parametry poté, co se provedla inicializace 3DS SDK.
{
"merchantId":"M1MIPS0000",
"payId":"7624c5e60252@HA",
"dttm":"20220125131615",
"fingerprint": {
"sdk": {
"appID":"198d0791-0025-4183-b9ae-900c88dd80e0",
"encData":"encrypted-data",
"ephemPubKey": "encoded-public-key",
"maxTimeout": 5,
"referenceNumber":"sdk-reference-number",
"transID":"7f101033-df46-4f5c-9e96-9575c924e1e7"
}
},
"signature":"base64-encoded-request-signature"
}
Položka | Typ | Popis |
---|---|---|
payId | String | Jednoznačné ID platby (přidělené platební bránou v operaci googlepay/init , obsahuje 15-znakový řetězec). |
dttm | String | Datum a čas odpovědi ve formátu YYYYMMDDHHMMSS . |
resultCode | Number | Výsledek operace, viz výčet. |
resultMessage | String | Textový popis výsledku operace. |
paymentStatus | Number | Stav platby, viz životní cyklus transakce. |
statusDetail | String | Detailní stav platby (tzv. mikrostav), obsahuje například důvod zamítnutí platby, viz popis. |
actions | Object | Struktura pro předání potřebných dat pro provedení potvrzení v rámci ověření platby. Viz struktura actions. |
signature | String | Podpis odpovědi, kódováno v BASE64. |
Příklad návratových hodnot pro googlepay/process (bez nutnosti provést potvrzení v rámci ověření platby)
{
"payId":"7624c5e60252@HA",
"dttm":"20220125131618",
"resultCode": 0,
"resultMessage":"OK",
"paymentStatus": 2,
"signature":"base64-encoded-response-signature"
}
Příklad návratových hodnot pro googlepay/process (včetně parametrů pro provedení potvrzení v rámci ověření platby v prohlížeči zákazníka)
{
"payId":"7624c5e60252@HA",
"dttm":"20220125131618",
"resultCode": 0,
"resultMessage":"OK",
"paymentStatus": 2,
"actions": {
"authenticate": {
"browserChallenge": {
"url":"https://example.com/challenge-endpoint"
}
}
},
"signature":"base64-encoded-response-signature"
}
Příklad návratových hodnot pro googlepay/process (včetně parametrů pro provedení potvrzení v rámci ověření platby pomocí 3DS SDK)
{
"payId":"7624c5e60252@HA",
"dttm":"20220125131618",
"resultCode": 0,
"resultMessage":"OK",
"paymentStatus": 2,
"actions": {
"authenticate": {
"sdkChallenge": {
"threeDSServerTransID":"eeddda80-6ca7-4b22-9d6a-eb8e84791ec9",
"acsReferenceNumber":"3DS_LOA_ACS_201_13579",
"acsTransID":"7f3296a8-08c4-4afb-a3e2-8ce31b2e9069",
"acsSignedContent":"base64-encoded-acs-signed-content"
}
}
},
"signature":"base64-encoded-response-signature"
}
Výsledek ověření a následné autorizace je potřeba zjistit následným voláním payment/status
. Doba zpracování se může lišit v závislosti na tom, zda je vyžadováno potvrzení platby v rámci jejího ověření:
- pokud potvrzení není vyžadováno, je doporučená doba volání je 2-3 vteřiny po volání
googlepay/process
, pokud je stav platby stále2
(platba probíhá), doporučujeme periodicky volat v intervalu 5 vteřin (celková doba autorizace závisí na zpracování požadavku v systémech VISA/MC a může být v nejhorším případě až 60 vteřin). - pokud je potvrzení vyžadováno, může trvat řádově minuty, než je zákazníkem platba potvrzena a vydavatel karty dokončí ověření. V tomto případě doporučujeme volat
payment/status
periodicky v delším intervalu např. 30 vteřin.