Samouczek

Jeśli Twoja aplikacja na Androida jest dystrybuowana w Sklepie Google Play, możesz ją zintegrować z Google Pay API. Możesz też skonfigurować w niej akceptowanie kart płatniczych. Aby zintegrować swoją aplikację i skonfigurować akceptowanie kart płatniczych, wykonaj czynności opisane w tym samouczku.

Krok 1. Określ wersję Google Pay API

Zadeklaruj, jakiej wersji Google Pay API używa Twoja aplikacja. Główne i pomocnicze numery wersji zawarte w odpowiedzi wpływają na pola, które powinny być określone w każdym przekazywanym obiekcie.

Utwórz podstawowy obiekt żądania, który zawiera właściwości znajdujące się we wszystkich pozostałych obiektach żądań.

Kotlin

    private val baseRequest = JSONObject().apply {         put("apiVersion", 2)         put("apiVersionMinor", 0)     }

Java

  private static JSONObject getBaseRequest() throws JSONException {     return new JSONObject().put("apiVersion", 2).put("apiVersionMinor", 0);   }

Krok 2. Poproś o token płatności dla Twojego dostawcy usług płatniczych

Google szyfruje informacje o wybranej przez płatnika karcie, by zapewnić bezpieczne przetwarzanie operacji przez dostawcę usług płatniczych.

Kotlin

private fun gatewayTokenizationSpecification(): JSONObject {     return JSONObject().apply {         put("type", "PAYMENT_GATEWAY")         put("parameters", JSONObject(mapOf(                 "gateway" to "example",                 "gatewayMerchantId" to "exampleGatewayMerchantId")))     } }

Java

  private static JSONObject getGatewayTokenizationSpecification() throws JSONException {     return new JSONObject() {{       put("type", "PAYMENT_GATEWAY");       put("parameters", new JSONObject() {{         put("gateway", "example");         put("gatewayMerchantId", "exampleGatewayMerchantId");       }});     }};   }

Zastąp example i exampleGatewayMerchantId odpowiednimi wartościami dla Twojego dostawcy usług płatniczych. Znajdź w poniższej tabeli konkretne wartości gateway i gatewayMerchantId dla Twojego dostawcy:

Brama Parametry i dokumenty
ABA PayWay
  "gateway": "ababank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

accept.blue
  "gateway": "acceptblue"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ACI
  "gateway": "aciworldwide"   "gatewayMerchantId": "YOUR_ENTITY_ID"

Dokumentacja dla deweloperów

ACpay
  "gateway": "acpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Acquired.com
  "gateway": "acquired"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Adyen
  "gateway": "adyen"   "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

Dokumentacja dla deweloperów

Airba Pay
  "gateway": "airbapay"   "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

Dokumentacja dla deweloperów

Airvend
  "gateway": "airvend"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Airwallex
  "gateway": "airwallex"   "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

Dokumentacja dla deweloperów

Akurateco
  "gateway": "akuratecolab"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Alfa-Bank
  "gateway": "alfabank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Algoritma
  "gateway": "algoritma"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Allinpay
  "gateway": "allinpayintl"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

AllPayments
  "gateway": "allpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

alticepay
  "gateway": "alticepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

>Dokumentacja dla deweloperów

AMO FINTECH LLC
  "gateway": "amofintech"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Anedot
  "gateway": "anedot"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ApcoPay
  "gateway": "apcopay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

APPEX
  "gateway": "epos"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

AsiaBill
  "gateway": "asiabill"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Assist
  "gateway": "assist"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Assist Belarus
  "gateway": "belassist"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Assist Kazakhstan
  "gateway": "assistkz"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Aurus
  "gateway": "auruspay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Axerve
  "gateway": "gestpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

azericardgpay
  "gateway": "azericardgpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Bank 131
  "gateway": "bank131"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Bank Vostok
  "gateway": "bankvostok"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Barclaycard
  "gateway": "barclayssmartpayadvance"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Barion
  "gateway": "barion"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Basis Theory
  "gateway": "basistheory"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

BCC.KZ
  "gateway": "bccpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

bePaid
  "gateway": "ecomcharge"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Bereke Bank
  "gateway": "berekepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Billing Systems
  "gateway": "billingsystems"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

bisys.kz
  "gateway": "bisysgpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Bizzon
  "gateway": "bizzon"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Blocks
  "gateway": "blocks"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Bluefin
  "gateway": "bluefin"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Bluefin Europe
  "gateway": "bluefineurope"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Blue Media
  "gateway": "bluemedia"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

BlueSnap
  "gateway": "bluesnap"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

BORICA
  "gateway": "borica"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

BPC
  "gateway": "bpcpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

BR-DGE
  "gateway": "comcarde"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Braintree
  "gateway": "braintree"   "braintree:apiVersion": "v1"   "braintree:sdkVersion": "braintree.client.VERSION"   "braintree:merchantId": "YOUR_BRAINTREE_MERCHANT_ID"   "braintree:clientKey": "YOUR_BRAINTREE_TOKENIZATION_KEY"

Dokumentacja dla deweloperów

Braspag
  "gateway": "cielo"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

BridgerPay
  "gateway": "bridgerpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

BT Pay
  "gateway": "btpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Buya
  "gateway": "buya"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CardCom
  "gateway": "cardcom"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CardConnect
  "gateway": "cardconnect"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Cardknox
  "gateway": "cardknox"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

cardlink
  "gateway": "cardlink"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Cardstream
  "gateway": "crst"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Cashflows
  "gateway": "cashflowsgateway"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Cathay United Bank
  "gateway": "cathaybk"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CCAvenue UAE
  "gateway": "ccavenueuae"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CCV
  "gateway": "ccv"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Cecabank
  "gateway": "cecabank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Celerispay
  "gateway": "celerispay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CentralPay
  "gateway": "centralpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Chargehive
  "gateway": "chargehive"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CharityEngine
  "gateway": "charityengine"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Chase Merchant Services
  "gateway": "chase"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Checkout.com
  "gateway": "checkoutltd"   "gatewayMerchantId": "YOUR_PUBLIC_KEY"

Dokumentacja dla deweloperów

CityPay
  "gateway": "citypay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Cloud9 Payment Gateway (C9PG)
  "gateway": "c9pg"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CloudPayments
  "gateway": "cloudpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CloudWalk
  "gateway": "cloudwalk"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Computop
  "gateway": "computop"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ConcordPay
  "gateway": "concordpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Connectum
  "gateway": "connectum"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ConnexPay
  "gateway": "connexpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CoralPay
  "gateway": "coralpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Corefy
  "gateway": "paycoreio"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Corvus Pay
  "gateway": "corvuspay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Credorax
  "gateway": "credorax"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CrossPay
  "gateway": "crosspay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Cross Switch
  "gateway": "crossswitch"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CSG Forte
  "gateway": "csgforte"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CTBC Bank
  "gateway": "ctbcbank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CURO Payments
  "gateway": "curopayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

CYBERBIZ
  "gateway": "cyberbizpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Cybersource
  "gateway": "cybersource"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

danube.pay
  "gateway": "danubepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Datacap Systems, Inc.
  "gateway": "datacap systems inc."   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Datatrans
  "gateway": "datatrans"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

DECTA
  "gateway": "decta"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Dejavoo
  "gateway": "denovosystempay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

DEUNA
  "gateway": "deuna"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Deutsche Bank AG
  "gateway":   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Deutsche Bank – Merchant Solutions
  "gateway":   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

DG Financial Technology, Inc.
  "gateway": "veritrans"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Digital Finance
  "gateway": "digitalfinance"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

dLocal
  "gateway": "dlocal"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

DNA Payments
  "gateway": "dnapayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Dojo
  "gateway": "dojo"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Dotpay
  "gateway": "dotpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

e-SiTef – Software Express
  "gateway": "softwareexpress"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

easycard
  "gateway": "easycard"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

EasyPay
  "gateway": "easypay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Easypay EU
  "gateway": "easypaypt"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

EBANX
  "gateway": "ebanx"   "gatewayMerchantId": "YOUR_PUBLIC_INTEGRATION_KEY"

Dokumentacja dla deweloperów

eCard
  "gateway": "ecard"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ECOMMPAY
  "gateway": "ecommpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Ecopaynet
  "gateway": "ecopaynet"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ECPay
  "gateway": "ecpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

eftcorporation
  "gateway": "eftcorporation"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

eGHL
  "gateway": "eghl"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Elavon (Converge)
  "gateway": "convergepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Emerchantpay
  "gateway": "emerchantpay"   "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

emspay
  "gateway": "emsonline"   "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Encoded
  "gateway": "encoded"   "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

epay
  "gateway": "epay"   "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

EPAYJSC
  "gateway": "epayjsc"   "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

EpicPay
  "gateway": "epicpay"   "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Espago
  "gateway": "espago"   "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Etisalat
  "gateway": "etisalatpaymentgateway"   "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

EveryPay S.A.
  "gateway": "EveryPay S.A."   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Evervault
  "gateway": "evervault"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

EVONET
  "gateway": "cardinfolink"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

EVOPAY
  "gateway": "EVOPAY"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Evo Payment Gateway
  "gateway": "evopaymentgateway"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

exactly.com
  "gateway": "exactly"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Exact Payments
  "gateway": "exactpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Fat Zebra
  "gateway": "fatzebra"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Fenige
  "gateway": "fenige"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Fexco payUnite
  "gateway": "fexco"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Fibonatix
  "gateway": "fibonatixparagon"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Financial Line
  "gateway": "finline"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Finanso UA
  "gateway": "finansoua"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

fincode byGMO
  "gateway": "fincode"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

FINEXUS
  "gateway": "finexus"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Finix
  "gateway": "finix"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

First American by Deluxe
  "gateway": "firstpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

First Data (Payeezy)
  "gateway": "firstdata"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

FIS Biller Solutions
  "gateway": "fisglobalbsp"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Flitt
  "gateway": "flitt"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Fluid Pay
  "gateway": "fluidpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

FM Finance LTD
  "gateway": "fmfinanceltd"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ForteBank
  "gateway": "fortebank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Fractal
  "gateway": "fractal"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Freedom Finance Bank
  "gateway": "axayscom"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

FreedomPay
  "gateway": "freedompay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

FreedomPay.Money
  "gateway": "payboxmoney"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Freepay
  "gateway": "freepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Frontstream
  "gateway": "frontstreampayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Fung Payments
  "gateway": "fungpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

GBPayments
  "gateway": "gbpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

geidea
  "gateway": "geidea"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

GETTRX
  "gateway": "globalelectronictechnology"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Global One Pay
  "gateway": "globalonepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Global Payments
  "gateway": "globalpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

globalpaymentsinc
  "gateway": "globalpaymentsinc"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

GMO Payment Gateway
  "gateway": "gmopg"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

GoDaddy Payments
  "gateway": "godaddypayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Good Idea Technologies
  "gateway": "git"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

GoPay
  "gateway": "gopay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

GP Webpay
  "gateway": "gpwebpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Gr4vy
  "gateway": "gr4vy"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Gravity Payments
  "gateway": "gravitypayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Halyk Bank
  "gateway": "halykbank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Helcim
  "gateway": "helcim"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

HIPS
  "gateway": "hips"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

HiTrust
  "gateway": "hitrustpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Hyp
  "gateway": "hyp"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

icard
  "gateway": "icardwallet"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

iKhokha
  "gateway": "ikhokha"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

IMOJE
  "gateway": "imoje"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Impaya
  "gateway": "impayarus"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Inovio Payments
  "gateway": "inoviopay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

InPlat
  "gateway": "inplat"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

InstaMed
  "gateway": "instamed"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

IntaSend Solutions Limited
  "gateway": "intasend"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

IntellectMoney
  "gateway": "intellectmoney"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Interactive Transaction Solutions
  "gateway": "interactivets"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Interswitch Payment Gateway
  "gateway": "interswitch"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Intervale
  "gateway": "intervale"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ioka fintech
  "gateway": "ioka"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

iPay88
  "gateway": "ipay88"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

IPSI
  "gateway": "ipsi"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

iQmetrix
  "gateway": "iqmetrixpaymentservicesgateway"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

IXOPAY
  "gateway": "ixopay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

JetPay
  "gateway": "jetpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

JudoPay
  "gateway": "judopay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

KapitalBank
  "gateway": "eCommerceKapitalBank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Kassa
  "gateway": "kassacom"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

kassa24pay
  "gateway": "kassa24pay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Kineox
  "gateway": "kineox"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Klix by Citadele
  "gateway": "klix"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Koin
  "gateway": "koin"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Lapsa Payments
  "gateway": "lapsapayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

LHV Pank
  "gateway": "lhvpank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Liberty
  "gateway": "liberty"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Life Pay
  "gateway": "lifepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Limepay
  "gateway": "limepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Linkly
  "gateway": "linkly"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

LiqPay
  "gateway": "liqpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Littlepay
  "gateway": "littlepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

LogPay
  "gateway": "logpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Loyale
  "gateway": "loyale"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

lynck
  "gateway": "lynck"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Lyra
  "gateway": "lyra"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Magnetiq Bank
  "gateway": "magnetiq"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

maib
  "gateway": "maibecomm"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MakeCommerce (Maksekeskus)
  "gateway": "maksekeskus"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Maksu GMBH
  "gateway": "maksupayeu"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Mandarin
  "gateway": "mandarin"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Market Pay
  "gateway": "marketpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Mastercard Payment Gateway Services
  "gateway": "mpgs"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MerchantE
  "gateway": "merchante"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Merchant Warrior
  "gateway": "merchantwarrior"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Midtrans
  "gateway": "midtrans"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Minsait Payments Systems
  "gateway": "minsaitpaymentsgateway"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MITEC
  "gateway": "mitecmx"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MIXPLAT
  "gateway": "mixplat"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MOBI.Money
  "gateway": "mobimoney"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Modulbank
  "gateway": "modulbank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Mollie
  "gateway": "mollie"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Molpay
  "gateway": "molpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Mondido
  "gateway": "mondido"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Monei
  "gateway": "monei"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

monek
  "gateway": "monek"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Moneris
  "gateway": "moneris"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Moneta
  "gateway": "moneta"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Monext
  "gateway": "monext"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Money.Mail.Ru
  "gateway": "moneymailru"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

monripayments
  "gateway": "monripayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Moov
  "gateway": "moov"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MPay
  "gateway": "managepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

mstartipg
  "gateway": "mstartipg"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Multicarta
  "gateway": "mulitcarta"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MultiSafepay
  "gateway": "multisafepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Mundipagg
  "gateway": "mundipagg"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MyCheck
  "gateway": "mycheck"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MyChoice2Pay
  "gateway": "mychoice2pay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MyFatoorah
  "gateway": "myfatoorah"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

MyPay
  "gateway": "mypay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

myPOS
  "gateway": "mypos"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

N&TS Group
  "gateway": "netsgroup"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

NCCC
  "gateway": "nccc"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Neolink
  "gateway": "neolinkprocessing"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Neon Pay
  "gateway": "neonpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Netopia
  "gateway": "netopia"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Netvalve
  "gateway": "netvalve"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Network International
  "gateway": "networkintl"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Newebpay (dawniej STPath, Pay2Go)
  "gateway": "newebpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Newtech
  "gateway": "newtechmobile"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Nexi
  "gateway": "nexi"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Nexi Easy
  "gateway": "easy"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

NMI
  "gateway": "gatewayservices"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

noon payments
  "gateway": "noonpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Noqoody Pay
  "gateway": "noqoodypay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Novalnet
  "gateway": "novalnet"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Nexi Relay
  "gateway": "nexirelay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

NTT DATA
  "gateway": "nttdatahk"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Nuvei
  "gateway": "nuvei"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Oceanpayment
  "gateway": "oceanpayment"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Omise
  "gateway": "omise"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Omno
  "gateway": "omno"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

One Inc
  "gateway": "oneinc"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Onelya
  "gateway": "onelya"   "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Onerway
  "gateway": "ronghan"   "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

OneVision Limited
  "gateway": "onevision"   "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

OnPay
  "gateway": "onpayio"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Opayo by Elavon
  "gateway": "opayoelavon"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

OrkestaPay
  "gateway": "orkestapay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Oschadbank
  "gateway": "oschadbank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

pagarme
  "gateway": "pagarme"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PagBank
  "gateway": "pagbank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PagBrasil
  "gateway": "pagbrasil"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PagSeguro
  "gateway": "pagsegurointernational"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PAY2M
  "gateway": "pay2m"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payarc
  "gateway": "payarc"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Pay.com
  "gateway": "paycom"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PAYCOMET
  "gateway": "paycomet"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paydock
  "gateway": "paydock"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayEase
  "gateway": "payeasenet"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayEngine
  "gateway": "payengine"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayFabric
  "gateway": "payfabric"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayFacto
  "gateway": "payfacto"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

paygent
  "gateway": "paygent"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payhub
  "gateway": "payhub"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayKKa
  "gateway": "paykkaeu"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayLane
  "gateway": "paylane"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payler
  "gateway": "payler"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayLink®
  "gateway": "paylink"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payload
  "gateway": "payload"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paymark
  "gateway": "paymark"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayMaster
  "gateway": "paymaster"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payment Fusion
  "gateway": "paymentfusion"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paymentvision
  "gateway": "paymentvision"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paymentwall
  "gateway": "paymentwall"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paymo
  "gateway": "paymo"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paymob
  "gateway": "gpaymob"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paymtech
  "gateway": "paymtech"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayNearMe
  "gateway": "paynearme"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payneteasy
  "gateway": "payneteasy"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Pay.nl
  "gateway": "paynl"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paynopain
  "gateway": "paynopain"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayOne
  "gateway": "payone"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayOnline
  "gateway": "payonline"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payoo
  "gateway": "payoo"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayPlus
  "gateway": "payplus"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayPro Pvt Ltd
  "gateway": "paypro"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Payrails
  "gateway": "payrails"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payrexx
  "gateway": "payrexx"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayRiff
  "gateway": "payriff"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payrix
  "gateway": "payrix"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paysafe
  "gateway": "paysafe"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payscout
  "gateway": "payscout"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paysend Business
  "gateway": "paysend"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paysoft
  "gateway": "paysoft"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Pay360
  "gateway": "pay360"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

paytech
  "gateway": "paytechsolutions"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayTech Ukraine
  "gateway": "paytech"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payten Payment Gateway
  "gateway": "paytentr"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paythru
  "gateway": "paythru"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payture
  "gateway": "payture"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayU
  "gateway": "payu"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayU LATAM
  "gateway": "payulatam"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PAYUNi
  "gateway": "payuni"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów<

PayU Romania
  "gateway": "payuro"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PayU Russia
  "gateway": "payuru"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payway
  "gateway": "payway"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Paywiser
  "gateway": "paywiser"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Payzone Ireland
  "gateway": "payzoneireland"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PBT Gateway Services Ltd
  "gateway": "pbtgateway"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Pelecard
  "gateway": "pelecard"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Pensopay
  "gateway": "pensopay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Pikassa
  "gateway": "pikassa"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PingPong
  "gateway": "pingpongx"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Pin Payments
  "gateway": "pinpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Planet
  "gateway": "cccpayment"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PlanetPay
  "gateway": "itcardpaymentservice"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Plategka.com
  "gateway": "plategkacom"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Platon
  "gateway": "platon"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Pomelo
  "gateway": "pomelopay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Portmone
  "gateway": "portmonecom"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Preczn
  "gateway": "preczn"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PrimePay
  "gateway": "primepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Primer
  "gateway": "primer"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Procard
  "gateway": "procard"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ProcessOut
  "gateway": "processout"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Przelewy24
  "gateway": "przelewy24"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PSB Bank
  "gateway": "psbank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PSCB
  "gateway": "pscbru"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PSiGate Inc.
  "gateway": "psigate"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

PXP Financial
  "gateway": "pxpfinancial"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Qenta Payment CEE
  "gateway": "qenta"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

QIWI
  "gateway": "qiwi"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Qualpay
  "gateway": "qualpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

QuickPay
  "gateway": "quickpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Qvalent
  "gateway": "qvalent"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Radial
  "gateway": "radial"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Raiffeisen Processing Centre
  "gateway": "raiffeisenprocessingcentre"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Rapyd
  "gateway": "rapyd"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

RBK.money
  "gateway": "rbkmoney"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Rebail Capital
  "gateway": "rebailcapital"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Rebilly
  "gateway": "Rebilly"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Recurly
  "gateway": "recurly"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Reddot
  "gateway": "reddotpayment"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Rede
  "gateway": "rede"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Redsys
  "gateway": "redsys"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Reepay
  "gateway": "reepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

RocketGate
  "gateway": "rocketgate"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Russian Standard Bank
  "gateway": "rsb"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Ryft
  "gateway": "ryft"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Saferpay
  "gateway": "worldlinesaferpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Safexpay
  "gateway": "safexpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Sberbank
  "gateway": "sberbank"   "gatewayMerchantId": "YOUR_ORGANIZATION_NAME"

Dokumentacja dla deweloperów

SEB Baltic
  "gateway": "sebbaltic"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

SEBES Technology
  "gateway": "sebes"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Sense Bank
  "gateway": "sensebank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

SensePass
  "gateway": "sensepass"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Servicios Digitales Popular S.A.
  "gateway": "pagosazul"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Shift4
  "gateway": "shift4payments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Shiji Group
  "gateway": "shijipaymentsolutions"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

SH Start High
  "gateway": "shstartpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

shvarenapay
  "gateway": "shvarenapay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

simbasoft
  "gateway": "simbasoft"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Sipay
  "gateway": "sipay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

SmartPay
  "gateway": "smartpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Softbank Payment Service
  "gateway": "sbps"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Softtouch POS and Payments
  "gateway": "softtouch"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Solid
  "gateway": "solid"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Sony Payment Services
  "gateway": "sonypaymentservices"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Splitit
  "gateway": "splitit"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Spreedly
  "gateway": "spreedly"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Square
  "gateway": "square"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

SredaPay
  "gateway": "sredapay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Stancer
  "gateway": "stancer"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Stripe
  "gateway": "stripe"   "stripe:version": "2018-10-31"   "stripe:publishableKey": "YOUR_PUBLIC_STRIPE_KEY"

Dokumentacja dla deweloperów

SUMIT
  "gateway": "sumit"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Suntech
  "gateway": "esafe"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Surfboard Payments
  "gateway": "surfboard"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Svea Bank
  "gateway": "svea"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Swedbank Baltic
  "gateway": "swedbankbaltic"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Swedbank Pay
  "gateway": "payexswedbankpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

TabaPay
  "gateway": "tabapay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

TapPay (Cherri Tech)
  "gateway": "tappay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

TapPayments
  "gateway": "tappayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

tarlanpayments
  "gateway": "tarlanpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

TAS Link
  "gateway": "taslink"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Tatra banka (CardPay)
  "gateway": "tatrabanka"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

TEKO
  "gateway": "teko"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

theMAP
  "gateway": "themap"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Till Payments
  "gateway": "tillpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Time Project LLC
  "gateway": "timeproject"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Tinkoff
  "gateway": "tinkoff"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

TIPTOP PAY
  "gateway": "tiptoppay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

TPay
  "gateway": "tpaycom"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

TPay.com
  "gateway": "tpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Transact Campus
  "gateway": "transactcampus"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Transaction Services Network
  "gateway": "tns"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Transpayrent
  "gateway": "transpayrent"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Tranzila
  "gateway": "tranzila"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Tranzzo
  "gateway": "tranzzo"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Tribe Payments
  "gateway": "tribepayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Truevo
  "gateway": "truevo"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

TrustPay
  "gateway": "trustpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Trust Payments
  "gateway": "trustpayments"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Tuna
  "gateway": "tuna"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

2can&ibox
  "gateway": "twocan"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

UAPAY
  "gateway": "uapay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

UBRR
  "gateway": "ubrrpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Ukrcard
  "gateway": "ukrcardpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

UkrGasBank Pay
  "gateway": "ukrgasbankpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Unibank OJSC
  "gateway": "unibankcheckout"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

unitedfinancialcorporation
  "gateway": "unitedfinancialcorporation"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Uniteller
  "gateway": "uniteller"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Unitpay
  "gateway": "unitpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Unlimint
  "gateway": "unlimint"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Unzer
  "gateway": "unzer"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Unzer Austria
  "gateway": "unzeraustria"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

UPC
  "gateway": "upc"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Upgate
  "gateway": "upgate"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

USAePay
  "gateway": "usaepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

UseePay
  "gateway": "useepay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

USIO, Inc.
  "gateway": "usio"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Valitor
  "gateway": "valitor"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

value.io
  "gateway": "inspirecommerce"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Vanco
  "gateway": "vanco"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Vantiv
  "gateway": "vantiv"   "vantiv:merchantPayPageId": "YOUR_PAY_PAGE_ID"   "vantiv:merchantOrderId": "YOUR_ORDER_ID"   "vantiv:merchantTransactionId": "YOUR_TRANSACTION_ID"   "vantiv:merchantReportGroup": "*web"

Dokumentacja dla deweloperów

Vayapay
  "gateway": "vayapay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

Verestro
  "gateway": "verestro"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Very Good Security
  "gateway": "verygoodsecurity"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Victoriabank
  "gateway": "victoriabank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Vindicia
  "gateway": "vindicia"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Viva Wallet
  "gateway": "vivawallet"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

VTEX
  "gateway": "vtex"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Waffo
  "gateway": "waffo"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Wallee
  "gateway": "wallee"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Walletdoc
  "gateway": "walletdoc"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Walletto
  "gateway": "walletto"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

WayForPay
  "gateway": "wayforpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

WEAT
  "gateway": "weatpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

WhenThen
  "gateway": "whenthen"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Windcave
  "gateway": "windcave"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Wirebank
  "gateway": "wirebank"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Wirecard
  "gateway": "wirecard"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

WOOPPAY
  "gateway": "wooppay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

WooshPay
  "gateway": "swooshtransfer"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Worldline (GlobalCollect)
  "gateway": "globalcollect"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Worldline - Ingenico (WL Online Checkout)
  "gateway": "worldlineingenicoogone"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Worldline Nordics (Worldline Online Checkout)
  "gateway": "worldlineonlinecheckout"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Worldline Sips
  "gateway": "wlsips"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Worldnet
  "gateway": "worldnet"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Worldpay
  "gateway": "worldpay"   "gatewayMerchantId": "YOUR_WORLDPAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Wpay
  "gateway": "wpayaus"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

WSPay
  "gateway": "wspay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

xMoney
  "gateway": "xmoneypay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

XPATE
  "gateway": "xpate"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

xpay
  "gateway": "xpaycomua"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

YabandPay B.V.
  "gateway": "yabandpay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

YIĞIM Payment System
  "gateway": "yigim"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Brak dostępnej dokumentacji dla deweloperów

ЮKassa (YooKassa)
  "gateway": "yoomoney"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Yuno
  "gateway": "yuno"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Z-credit
  "gateway": "zcredit"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Zalopay
  "gateway": "zalopay"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

ZEN.com
  "gateway": "zen"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Zest
  "gateway": "zestpayment"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Zuora
  "gateway": "zuora"   "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

Dokumentacja dla deweloperów

Najpopularniejszym sposobem implementacji płatności kartą w Google Pay API przez sprzedawców jest typ tokenizacji PAYMENT_GATEWAY. Jeśli Twój dostawca usług płatniczych nie jest obsługiwany, możesz zaakceptować Google Pay przez integrację DIRECT. Więcej informacji znajdziesz w dokumentacji tokenizacji bezpośredniej.

Krok 3. Określ obsługiwane sieci kart płatniczych

Określ sieci kart akceptowane w Twojej aplikacji.

Kotlin

private val allowedCardNetworks = JSONArray(listOf(         "AMEX",         "DISCOVER",         "INTERAC",         "JCB",         "MASTERCARD",         "VISA"))

Java

private static JSONArray getAllowedCardNetworks() {   return new JSONArray()       .put("AMEX")       .put("DISCOVER")       .put("INTERAC")       .put("JCB")       .put("MASTERCARD")       .put("VISA"); }

Google Pay API może zwrócić listę kart zapisanych na stronie Google.com (PAN_ONLY) lub token urządzenia z Androidem uwierzytelniany za pomocą kryptogramu 3-D Secure (CRYPTOGRAM_3DS).

Kotlin

private val allowedCardAuthMethods = JSONArray(listOf(         "PAN_ONLY",         "CRYPTOGRAM_3DS"))

Java

private static JSONArray getAllowedCardAuthMethods() {   return new JSONArray()       .put("PAN_ONLY")       .put("CRYPTOGRAM_3DS"); }

Więcej informacji znajdziesz w opisie CardParameters w dokumentacji obiektów JSON. Aby uzyskać pomoc dotyczącą tokenów urządzeń z Androidem, skontaktuj się z bramą lub firmą obsługującą płatności w obsługiwanych sieciach kart.

Krok 4. Opisz dozwolone formy płatności

Aby opisać obsługę formy płatności CARD przez aplikację, połącz obsługiwane metody uwierzytelniania i obsługiwane sieci kart.

Kotlin

    private fun baseCardPaymentMethod(): JSONObject {         return JSONObject().apply {              val parameters = JSONObject().apply {                 put("allowedAuthMethods", allowedCardAuthMethods)                 put("allowedCardNetworks", allowedCardNetworks)                 put("billingAddressRequired", true)                 put("billingAddressParameters", JSONObject().apply {                     put("format", "FULL")                 })             }              put("type", "CARD")             put("parameters", parameters)         }     }

Java

  private static JSONObject getBaseCardPaymentMethod() throws JSONException {     JSONObject cardPaymentMethod = new JSONObject();     cardPaymentMethod.put("type", "CARD");      JSONObject parameters = new JSONObject();     parameters.put("allowedAuthMethods", getAllowedCardAuthMethods());     parameters.put("allowedCardNetworks", getAllowedCardNetworks());     // Optionally, you can add billing address/phone number associated with a CARD payment method.     parameters.put("billingAddressRequired", true);      JSONObject billingAddressParameters = new JSONObject();     billingAddressParameters.put("format", "FULL");      parameters.put("billingAddressParameters", billingAddressParameters);      cardPaymentMethod.put("parameters", parameters);      return cardPaymentMethod;   }

Rozszerz podstawowy obiekt formy płatności kartą, aby opisać, jakie informacje mają być zwracane do aplikacji, łącznie z danymi płatności tokenizowanych.

Kotlin

    private fun cardPaymentMethod(): JSONObject {         val cardPaymentMethod = baseCardPaymentMethod()         cardPaymentMethod.put("tokenizationSpecification", gatewayTokenizationSpecification())          return cardPaymentMethod     }

Java

  private static JSONObject getCardPaymentMethod() throws JSONException {     JSONObject cardPaymentMethod = getBaseCardPaymentMethod();     cardPaymentMethod.put("tokenizationSpecification", getGatewayTokenizationSpecification());      return cardPaymentMethod;   }

Więcej informacji na temat obsługiwanych parameters znajdziesz w sekcji CardParameters w dokumentacji obiektów JSON.

Oprócz CARD Google Pay obsługuje również formę płatności PAYPAL. Więcej informacji o dodawaniu PayPala jako formy płatności w Google Pay znajdziesz w dokumentacji PayPal dla deweloperów.

Krok 5. Utwórz wystąpienie PaymentsClient

Utwórz wystąpienie PaymentsClient w metodzie onCreate w Activity. Wystąpienie PaymentsClient jest używane w interakcjach z Google Pay API.

Kotlin

    fun createPaymentsClient(activity: Activity): PaymentsClient {         val walletOptions = Wallet.WalletOptions.Builder()                 .setEnvironment(Constants.PAYMENTS_ENVIRONMENT)                 .build()          return Wallet.getPaymentsClient(activity, walletOptions)     }

Java

  public static PaymentsClient createPaymentsClient(Activity activity) {     Wallet.WalletOptions walletOptions =         new Wallet.WalletOptions.Builder().setEnvironment(Constants.PAYMENTS_ENVIRONMENT).build();     return Wallet.getPaymentsClient(activity, walletOptions);   }

Krok 6. Określ gotowość do płacenia za pomocą Google Pay API

Użyj poniższego fragmentu kodu, aby dodać obsługiwane formy płatności do podstawowego obiektu żądania:

Kotlin

    fun isReadyToPayRequest(): JSONObject? {         return try {             baseRequest.apply {                 put("allowedPaymentMethods", JSONArray().put(baseCardPaymentMethod()))             }          } catch (e: JSONException) {             null         }     }

Java

  public static Optional<JSONObject> getIsReadyToPayRequest() {     try {       JSONObject isReadyToPayRequest = getBaseRequest();       isReadyToPayRequest.put(           "allowedPaymentMethods", new JSONArray().put(getBaseCardPaymentMethod()));        return Optional.of(isReadyToPayRequest);      } catch (JSONException e) {       return Optional.empty();     }   }

Przed wyświetleniem przycisku Google Pay wywołaj isReadyToPay API, aby określić, czy użytkownik może płacić przy użyciu Google Pay API. Pełną listę właściwości konfiguracji znajdziesz w dokumentacji obiektu JSON IsReadyToPayRequest.

Kotlin

    private fun possiblyShowGooglePayButton() {          val isReadyToPayJson = PaymentsUtil.isReadyToPayRequest() ?: return         val request = IsReadyToPayRequest.fromJson(isReadyToPayJson.toString()) ?: return          // The call to isReadyToPay is asynchronous and returns a Task. We need to provide an         // OnCompleteListener to be triggered when the result of the call is known.         val task = paymentsClient.isReadyToPay(request)         task.addOnCompleteListener { completedTask ->             try {                 completedTask.getResult(ApiException::class.java)?.let(::setGooglePayAvailable)             } catch (exception: ApiException) {                 // Process error                 Log.w("isReadyToPay failed", exception)             }         }     }

Java

  private void possiblyShowGooglePayButton() {      final Optional<JSONObject> isReadyToPayJson = PaymentsUtil.getIsReadyToPayRequest();     if (!isReadyToPayJson.isPresent()) {       return;     }      // The call to isReadyToPay is asynchronous and returns a Task. We need to provide an     // OnCompleteListener to be triggered when the result of the call is known.     IsReadyToPayRequest request = IsReadyToPayRequest.fromJson(isReadyToPayJson.get().toString());     Task<Boolean> task = paymentsClient.isReadyToPay(request);     task.addOnCompleteListener(this,         new OnCompleteListener<Boolean>() {           @Override           public void onComplete(@NonNull Task<Boolean> task) {             if (task.isSuccessful()) {               setGooglePayAvailable(task.getResult());             } else {               Log.w("isReadyToPay failed", task.getException());             }           }         });   }

Jak widać na przykładzie, najlepiej jest wyświetlać Google Pay jako opcję płatności dopiero po odebraniu pozytywnego wyniku z funkcji isReadyToPay. Podczas wdrażania opcji płatności wyświetlanie przycisku płatności Google Pay jest najczęściej konfigurowane w układzie include. Więcej informacji o przyciskach płatności, logo i znakach Google Pay, które możesz wykorzystać w aplikacji, znajdziesz we wskazówkach dotyczących marki.

Krok 7. Utwórz obiekt PaymentDataRequest

Obiekt JSON PaymentDataRequest opisuje informacje, o które prosisz płatnika w arkuszu płatności Google Pay.

Podaj cenę transakcji i stan ceny. Więcej informacji znajdziesz w dokumentacji obiektu JSON TransactionInfo.

Poniższy przykład pokazuje, jak uzyskać informacje o cenie, stanie ceny i walucie transakcji.

Kotlin

    private fun getTransactionInfo(price: String): JSONObject {         return JSONObject().apply {             put("totalPrice", price)             put("totalPriceStatus", "FINAL")             put("countryCode", Constants.COUNTRY_CODE)             put("currencyCode", Constants.CURRENCY_CODE)         }     }

Java

  private static JSONObject getTransactionInfo(String price) throws JSONException {     JSONObject transactionInfo = new JSONObject();     transactionInfo.put("totalPrice", price);     transactionInfo.put("totalPriceStatus", "FINAL");     transactionInfo.put("countryCode", Constants.COUNTRY_CODE);     transactionInfo.put("currencyCode", Constants.CURRENCY_CODE);     transactionInfo.put("checkoutOption", "COMPLETE_IMMEDIATE_PURCHASE");      return transactionInfo;   }

Podaj nazwę sprzedawcy widoczną dla użytkowników. Więcej informacji znajdziesz w dokumentacji obiektu JSON MerchantInfo.

Poniższy przykład pokazuje, jak uzyskać nazwę sprzedawcy:

Kotlin

private val merchantInfo: JSONObject =         JSONObject().put("merchantName", "Example Merchant")

Java

  private static JSONObject getMerchantInfo() throws JSONException {     return new JSONObject().put("merchantName", "Example Merchant");   }

Przypisz podstawowy obiekt żądania do nowego obiektu JSON PaymentDataRequest. Potem dodaj formy płatności obsługiwane w Twojej aplikacji razem z konfiguracją i innymi danymi, które powinna zawierać odpowiedź. Na koniec dodaj informacje o transakcji i sprzedawcy, który wysłał żądanie.

Ten przykład ilustruje, jak wysłać żądanie o dane płatności:

Kotlin

fun getPaymentDataRequest(price: String): JSONObject? {     try {         return baseRequest.apply {             put("allowedPaymentMethods", JSONArray().put(cardPaymentMethod()))             put("transactionInfo", getTransactionInfo(price))             put("merchantInfo", merchantInfo)              // An optional shipping address requirement is a top-level property of the             // PaymentDataRequest JSON object.             val shippingAddressParameters = JSONObject().apply {                 put("phoneNumberRequired", false)                 put("allowedCountryCodes", JSONArray(listOf("US", "GB")))             }             put("shippingAddressParameters", shippingAddressParameters)             put("shippingAddressRequired", true)         }     } catch (e: JSONException) {         return null     } }

Java

  public static Optional<JSONObject> getPaymentDataRequest(long priceCents) {      final String price = PaymentsUtil.centsToString(priceCents);      try {       JSONObject paymentDataRequest = PaymentsUtil.getBaseRequest();       paymentDataRequest.put(           "allowedPaymentMethods", new JSONArray().put(PaymentsUtil.getCardPaymentMethod()));       paymentDataRequest.put("transactionInfo", PaymentsUtil.getTransactionInfo(price));       paymentDataRequest.put("merchantInfo", PaymentsUtil.getMerchantInfo());        /* An optional shipping address requirement is a top-level property of the PaymentDataRequest       JSON object. */       paymentDataRequest.put("shippingAddressRequired", true);        JSONObject shippingAddressParameters = new JSONObject();       shippingAddressParameters.put("phoneNumberRequired", false);        JSONArray allowedCountryCodes = new JSONArray(Constants.SHIPPING_SUPPORTED_COUNTRIES);        shippingAddressParameters.put("allowedCountryCodes", allowedCountryCodes);       paymentDataRequest.put("shippingAddressParameters", shippingAddressParameters);       return Optional.of(paymentDataRequest);      } catch (JSONException e) {       return Optional.empty();     }   }

Więcej informacji znajdziesz w dokumentacji obiektu JSON PaymentDataRequest.

Krok 8. Zarejestruj moduł obsługi zdarzeń za pomocą gestów

Aby poprosić o wyświetlanie arkusza płatności Google Pay po aktywacji przycisku płatności Google Pay przez użytkownika, zdefiniuj OnClickListener.

Kotlin

        googlePayButton.setOnClickListener { requestPayment() }

Java

    googlePayButton.setOnClickListener(         new View.OnClickListener() {           @Override           public void onClick(View view) {             requestPayment(view);           }         });

Obiekt PaymentDataRequest to obiekt Parcelable, który reprezentuje żądanie danych płatności. PaymentDataRequest zawiera informacje niezbędne do obsługi płatności. Użyj klasy AutoResolveHelper, aby automatycznie rozwiązać zadanie Task, a potem przetworzyć jego wynik w metodzie onActivityResult Twojej klasy Activity.

Krok 9. Przetwórz obiekt odpowiedzi

Gdy płatnik poda wymagane informacje w arkuszu płatności Google Pay, obiekt PaymentData zostanie zwrócony do onActivityResult.

Przekonwertuj pozytywną odpowiedź do obiektu JSON, aby przekazać dane karty do firmy obsługującej płatności i wyświetlić użytkownikowi potwierdzenie zakupu. Jeśli obiekt transactionInfo.totalPriceStatus przekazany do PaymentDataRequest ma wartość ESTIMATED, to przed obciążeniem zwróconej formy płatności musisz pokazać cenę końcową.

Wyodrębnij token płatności z odpowiedzi paymentData. Jeśli implementujesz integrację bramy, przekaż ten token do swojej bramy bez żadnych modyfikacji.

Kotlin

    public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {         when (requestCode) {             // Value passed in AutoResolveHelper             LOAD_PAYMENT_DATA_REQUEST_CODE -> {                 when (resultCode) {                     RESULT_OK ->                         data?.let { intent ->                             PaymentData.getFromIntent(intent)?.let(::handlePaymentSuccess)                         }                      RESULT_CANCELED -> {                         // The user cancelled the payment attempt                     }                      AutoResolveHelper.RESULT_ERROR -> {                         AutoResolveHelper.getStatusFromIntent(data)?.let {                             handleError(it.statusCode)                         }                     }                 }                  // Re-enables the Google Pay payment button.                 googlePayButton.isClickable = true             }         }     }

Java

  public void onActivityResult(int requestCode, int resultCode, Intent data) {     switch (requestCode) {       // value passed in AutoResolveHelper       case LOAD_PAYMENT_DATA_REQUEST_CODE:         switch (resultCode) {            case Activity.RESULT_OK:             PaymentData paymentData = PaymentData.getFromIntent(data);             handlePaymentSuccess(paymentData);             break;            case Activity.RESULT_CANCELED:             // The user cancelled the payment attempt             break;            case AutoResolveHelper.RESULT_ERROR:             Status status = AutoResolveHelper.getStatusFromIntent(data);             handleError(status.getStatusCode());             break;         }          // Re-enables the Google Pay payment button.         googlePayButton.setClickable(true);     }   }

Więcej informacji o zawartości i strukturze odpowiedzi znajdziesz w dokumentacji obiektu JSON PaymentData.

Połącz wszystkie elementy

Pokazany poniżej fragment zawiera kompletny przykład prawidłowo skonfigurowanego projektu. Instrukcje konfiguracji na poziomie projektu znajdziesz w artykule Konfigurowanie projektu.

CheckoutActivity.kt (Kotlin)

Ten przykład Activity zakłada, że Twój układ zawiera przycisk płatności Google Pay z atrybutem id o wartości googlepay_button.

/*  * Copyright 2018 Google Inc.  *  * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0  *  * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  */  package com.google.android.gms.samples.wallet.activity  import android.app.Activity import android.content.Intent import android.os.Bundle import android.text.Html import android.util.Log import android.view.View import android.widget.Toast import com.google.android.gms.common.api.ApiException import com.google.android.gms.samples.wallet.util.PaymentsUtil import com.google.android.gms.samples.wallet.R import com.google.android.gms.samples.wallet.util.Json import com.google.android.gms.wallet.* import kotlinx.android.synthetic.main.activity_checkout.* import org.json.JSONArray import org.json.JSONException import org.json.JSONObject  /**  * Checkout implementation for the app  */ class CheckoutActivity : Activity() {      private val SHIPPING_COST_CENTS = 9 * PaymentsUtil.CENTS.toLong()      /**      * A client for interacting with the Google Pay API.      *      * @see [PaymentsClient](https://developers.google.com/android/reference/com/google/android/gms/wallet/PaymentsClient)      */     private lateinit var paymentsClient: PaymentsClient      private lateinit var garmentList: JSONArray     private lateinit var selectedGarment: JSONObject      /**      * Arbitrarily-picked constant integer you define to track a request for payment data activity.      *      * @value #LOAD_PAYMENT_DATA_REQUEST_CODE      */     private val LOAD_PAYMENT_DATA_REQUEST_CODE = 991      /**      * Initialize the Google Pay API on creation of the activity      *      * @see Activity.onCreate      */     override fun onCreate(savedInstanceState: Bundle?) {         super.onCreate(savedInstanceState)         setContentView(R.layout.activity_checkout)          // Set up the mock information for our item in the UI.         selectedGarment = fetchRandomGarment()         displayGarment(selectedGarment)          // Initialize a Google Pay API client for an environment suitable for testing.         // It's recommended to create the PaymentsClient object inside of the onCreate method.         paymentsClient = PaymentsUtil.createPaymentsClient(this)         possiblyShowGooglePayButton()          googlePayButton.setOnClickListener { requestPayment() }     }      /**      * Determine the viewer's ability to pay with a payment method supported by your app and display a      * Google Pay payment button.      *      * @see [](https://developers.google.com/android/reference/com/google/android/gms/wallet/PaymentsClient.html.isReadyToPay     ) */     private fun possiblyShowGooglePayButton() {          val isReadyToPayJson = PaymentsUtil.isReadyToPayRequest() ?: return         val request = IsReadyToPayRequest.fromJson(isReadyToPayJson.toString()) ?: return          // The call to isReadyToPay is asynchronous and returns a Task. We need to provide an         // OnCompleteListener to be triggered when the result of the call is known.         val task = paymentsClient.isReadyToPay(request)         task.addOnCompleteListener { completedTask ->             try {                 completedTask.getResult(ApiException::class.java)?.let(::setGooglePayAvailable)             } catch (exception: ApiException) {                 // Process error                 Log.w("isReadyToPay failed", exception)             }         }     }      /**      * If isReadyToPay returned `true`, show the button and hide the "checking" text. Otherwise,      * notify the user that Google Pay is not available. Please adjust to fit in with your current      * user flow. You are not required to explicitly let the user know if isReadyToPay returns `false`.      *      * @param available isReadyToPay API response.      */     private fun setGooglePayAvailable(available: Boolean) {         if (available) {             googlePayButton.visibility = View.VISIBLE         } else {             Toast.makeText(                     this,                     "Unfortunately, Google Pay is not available on this device",                     Toast.LENGTH_LONG).show();         }     }      private fun requestPayment() {          // Disables the button to prevent multiple clicks.         googlePayButton.isClickable = false          // The price provided to the API should include taxes and shipping.         // This price is not displayed to the user.         val garmentPrice = selectedGarment.getDouble("price")         val priceCents = Math.round(garmentPrice * PaymentsUtil.CENTS.toLong()) + SHIPPING_COST_CENTS          val paymentDataRequestJson = PaymentsUtil.getPaymentDataRequest(priceCents)         if (paymentDataRequestJson == null) {             Log.e("RequestPayment", "Can't fetch payment data request")             return         }         val request = PaymentDataRequest.fromJson(paymentDataRequestJson.toString())          // Since loadPaymentData may show the UI asking the user to select a payment method, we use         // AutoResolveHelper to wait for the user interacting with it. Once completed,         // onActivityResult will be called with the result.         if (request != null) {             AutoResolveHelper.resolveTask(                     paymentsClient.loadPaymentData(request), this, LOAD_PAYMENT_DATA_REQUEST_CODE)         }     }      /**      * Handle a resolved activity from the Google Pay payment sheet.      *      * @param requestCode Request code originally supplied to AutoResolveHelper in requestPayment().      * @param resultCode Result code returned by the Google Pay API.      * @param data Intent from the Google Pay API containing payment or error data.      * @see [Getting a result      * from an Activity](https://developer.android.com/training/basics/intents/result)      */     public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {         when (requestCode) {             // Value passed in AutoResolveHelper             LOAD_PAYMENT_DATA_REQUEST_CODE -> {                 when (resultCode) {                     RESULT_OK ->                         data?.let { intent ->                             PaymentData.getFromIntent(intent)?.let(::handlePaymentSuccess)                         }                      RESULT_CANCELED -> {                         // The user cancelled the payment attempt                     }                      AutoResolveHelper.RESULT_ERROR -> {                         AutoResolveHelper.getStatusFromIntent(data)?.let {                             handleError(it.statusCode)                         }                     }                 }                  // Re-enables the Google Pay payment button.                 googlePayButton.isClickable = true             }         }     }      /**      * PaymentData response object contains the payment information, as well as any additional      * requested information, such as billing and shipping address.      *      * @param paymentData A response object returned by Google after a payer approves payment.      * @see [Payment      * Data](https://developers.google.com/pay/api/android/reference/object.PaymentData)      */     private fun handlePaymentSuccess(paymentData: PaymentData) {         val paymentInformation = paymentData.toJson() ?: return          try {             // Token will be null if PaymentDataRequest was not constructed using fromJson(String).             val paymentMethodData = JSONObject(paymentInformation).getJSONObject("paymentMethodData")             val billingName = paymentMethodData.getJSONObject("info")                     .getJSONObject("billingAddress").getString("name")             Log.d("BillingName", billingName)              Toast.makeText(this, getString(R.string.payments_show_name, billingName), Toast.LENGTH_LONG).show()              // Logging token string.             Log.d("GooglePaymentToken", paymentMethodData                     .getJSONObject("tokenizationData")                     .getString("token"))          } catch (e: JSONException) {             Log.e("handlePaymentSuccess", "Error: " + e.toString())         }      }      /**      * At this stage, the user has already seen a popup informing them an error occurred. Normally,      * only logging is required.      *      * @param statusCode will hold the value of any constant from CommonStatusCode or one of the      * WalletConstants.ERROR_CODE_* constants.      * @see [      * Wallet Constants Library](https://developers.google.com/android/reference/com/google/android/gms/wallet/WalletConstants.constant-summary)      */     private fun handleError(statusCode: Int) {         Log.w("loadPaymentData failed", String.format("Error code: %d", statusCode))     }      private fun fetchRandomGarment() : JSONObject {         if (!::garmentList.isInitialized) {             garmentList = Json.readFromResources(this, R.raw.tshirts)         }          val randomIndex:Int = Math.round(Math.random() * (garmentList.length() - 1)).toInt()         return garmentList.getJSONObject(randomIndex)     }      private fun displayGarment(garment:JSONObject) {         detailTitle.setText(garment.getString("title"))         detailPrice.setText("\$${garment.getString("price")}")          val escapedHtmlText:String = Html.fromHtml(garment.getString("description")).toString()         detailDescription.setText(Html.fromHtml(escapedHtmlText))          val imageUri = "@drawable/${garment.getString("image")}"         val imageResource = resources.getIdentifier(imageUri, null, packageName)         detailImage.setImageResource(imageResource)     } }      

PaymentsUtil.kt (Kotlin)

Ten przykładowy plik tworzy obiekty JSON, które pozwalają utworzyć IsReadyToPayRequest lub PaymentDataRequest.

/*  * Copyright 2017 Google Inc.  *  * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0  *  * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  */  package com.google.android.gms.samples.wallet.util  import android.app.Activity import com.google.android.gms.samples.wallet.Constants import com.google.android.gms.wallet.PaymentsClient import com.google.android.gms.wallet.Wallet import org.json.JSONArray import org.json.JSONException import org.json.JSONObject import java.math.BigDecimal import java.math.RoundingMode  /**  * Contains helper static methods for dealing with the Payments API.  *  * Many of the parameters used in the code are optional and are set here merely to call out their  * existence. Please consult the documentation to learn more and feel free to remove ones not  * relevant to your implementation.  */ object PaymentsUtil {     val CENTS = BigDecimal(100)      /**      * Create a Google Pay API base request object with properties used in all requests.      *      * @return Google Pay API base request object.      * @throws JSONException      */     private val baseRequest = JSONObject().apply {         put("apiVersion", 2)         put("apiVersionMinor", 0)     }      /**      * Gateway Integration: Identify your gateway and your app'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 and modify them in Constants.java.      *      * @return Payment data tokenization for the CARD payment method.      * @throws JSONException      * @see [PaymentMethodTokenizationSpecification](https://developers.google.com/pay/api/android/reference/object.PaymentMethodTokenizationSpecification)      */     private fun gatewayTokenizationSpecification(): JSONObject {         return JSONObject().apply {             put("type", "PAYMENT_GATEWAY")             put("parameters", JSONObject(Constants.PAYMENT_GATEWAY_TOKENIZATION_PARAMETERS))         }     }      /**      * `DIRECT` Integration: Decrypt a response directly on your servers. This configuration has      * additional data security requirements from Google and additional PCI DSS compliance complexity.      *      *      * Please refer to the documentation for more information about `DIRECT` integration. The      * type of integration you use depends on your payment processor.      *      * @return Payment data tokenization for the CARD payment method.      * @throws JSONException      * @see [PaymentMethodTokenizationSpecification](https://developers.google.com/pay/api/android/reference/object.PaymentMethodTokenizationSpecification)      */     private fun directTokenizationSpecification(): JSONObject {         if (Constants.DIRECT_TOKENIZATION_PUBLIC_KEY == "REPLACE_ME" ||                 (Constants.DIRECT_TOKENIZATION_PARAMETERS.isEmpty() ||                  Constants.DIRECT_TOKENIZATION_PUBLIC_KEY.isEmpty())) {              throw RuntimeException(                     "Please edit the Constants.java file to add protocol version & public key.")         }          return JSONObject().apply {             put("type", "DIRECT")             put("parameters", JSONObject(Constants.DIRECT_TOKENIZATION_PARAMETERS))         }     }      /**      * Card networks supported by your app and your gateway.      *      *      * TODO: Confirm card networks supported by your app and gateway & update in Constants.java.      *      * @return Allowed card networks      * @see [CardParameters](https://developers.google.com/pay/api/android/reference/object.CardParameters)      */     private val allowedCardNetworks = JSONArray(Constants.SUPPORTED_NETWORKS)      /**      * Card authentication methods supported by your app and your gateway.      *      *      * TODO: Confirm your processor supports Android device tokens on your supported card networks      * and make updates in Constants.java.      *      * @return Allowed card authentication methods.      * @see [CardParameters](https://developers.google.com/pay/api/android/reference/object.CardParameters)      */     private val allowedCardAuthMethods = JSONArray(Constants.SUPPORTED_METHODS)      /**      * Describe your app's support for the CARD payment method.      *      *      * The provided properties are applicable to both an IsReadyToPayRequest and a      * PaymentDataRequest.      *      * @return A CARD PaymentMethod object describing accepted cards.      * @throws JSONException      * @see [PaymentMethod](https://developers.google.com/pay/api/android/reference/object.PaymentMethod)      */     // Optionally, you can add billing address/phone number associated with a CARD payment method.     private fun baseCardPaymentMethod(): JSONObject {         return JSONObject().apply {              val parameters = JSONObject().apply {                 put("allowedAuthMethods", allowedCardAuthMethods)                 put("allowedCardNetworks", allowedCardNetworks)                 put("billingAddressRequired", true)                 put("billingAddressParameters", JSONObject().apply {                     put("format", "FULL")                 })             }              put("type", "CARD")             put("parameters", parameters)         }     }      /**      * Describe the expected returned payment data for the CARD payment method      *      * @return A CARD PaymentMethod describing accepted cards and optional fields.      * @throws JSONException      * @see [PaymentMethod](https://developers.google.com/pay/api/android/reference/object.PaymentMethod)      */     private fun cardPaymentMethod(): JSONObject {         val cardPaymentMethod = baseCardPaymentMethod()         cardPaymentMethod.put("tokenizationSpecification", gatewayTokenizationSpecification())          return cardPaymentMethod     }      /**      * An object describing accepted forms of payment by your app, used to determine a viewer's      * readiness to pay.      *      * @return API version and payment methods supported by the app.      * @see [IsReadyToPayRequest](https://developers.google.com/pay/api/android/reference/object.IsReadyToPayRequest)      */     fun isReadyToPayRequest(): JSONObject? {         return try {             baseRequest.apply {                 put("allowedPaymentMethods", JSONArray().put(baseCardPaymentMethod()))             }          } catch (e: JSONException) {             null         }     }      /**      * Information about the merchant requesting payment information      *      * @return Information about the merchant.      * @throws JSONException      * @see [MerchantInfo](https://developers.google.com/pay/api/android/reference/object.MerchantInfo)      */     private val merchantInfo: JSONObject =             JSONObject().put("merchantName", "Example Merchant")      /**      * Creates an instance of [PaymentsClient] for use in an [Activity] using the      * environment and theme set in [Constants].      *      * @param activity is the caller's activity.      */     fun createPaymentsClient(activity: Activity): PaymentsClient {         val walletOptions = Wallet.WalletOptions.Builder()                 .setEnvironment(Constants.PAYMENTS_ENVIRONMENT)                 .build()          return Wallet.getPaymentsClient(activity, walletOptions)     }      /**      * Provide Google Pay API with a payment amount, currency, and amount status.      *      * @return information about the requested payment.      * @throws JSONException      * @see [TransactionInfo](https://developers.google.com/pay/api/android/reference/object.TransactionInfo)      */     @Throws(JSONException::class)     private fun getTransactionInfo(price: String): JSONObject {         return JSONObject().apply {             put("totalPrice", price)             put("totalPriceStatus", "FINAL")             put("countryCode", Constants.COUNTRY_CODE)             put("currencyCode", Constants.CURRENCY_CODE)         }     }      /**      * An object describing information requested in a Google Pay payment sheet      *      * @return Payment data expected by your app.      * @see [PaymentDataRequest](https://developers.google.com/pay/api/android/reference/object.PaymentDataRequest)      */     fun getPaymentDataRequest(priceCemts: Long): JSONObject? {         return try {             baseRequest.apply {                 put("allowedPaymentMethods", JSONArray().put(cardPaymentMethod()))                 put("transactionInfo", getTransactionInfo(priceCemts.centsToString()))                 put("merchantInfo", merchantInfo)                  // An optional shipping address requirement is a top-level property of the                 // PaymentDataRequest JSON object.                 val shippingAddressParameters = JSONObject().apply {                     put("phoneNumberRequired", false)                     put("allowedCountryCodes", JSONArray(listOf("US", "GB")))                 }                 put("shippingAddressParameters", shippingAddressParameters)                 put("shippingAddressRequired", true)             }         } catch (e: JSONException) {             null         }     } }  /**  * Converts cents to a string format accepted by [PaymentsUtil.getPaymentDataRequest].  *  * @param cents value of the price.  */ fun Long.centsToString() = BigDecimal(this)         .divide(PaymentsUtil.CENTS)         .setScale(2, RoundingMode.HALF_EVEN)         .toString()      

CheckoutActivity.java (Java)

Ten przykład Activity zakłada, że Twój układ zawiera przycisk płatności Google Pay z atrybutem id o wartości googlepay_button.

/*  * Copyright 2020 Google Inc.  *  * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0  *  * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  */  package com.google.android.gms.samples.wallet.activity;  import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.Html; import android.util.Log; import android.view.View; import android.widget.Toast;  import com.google.android.gms.common.api.Status; import com.google.android.gms.samples.wallet.databinding.ActivityCheckoutBinding; import com.google.android.gms.samples.wallet.util.PaymentsUtil; import com.google.android.gms.samples.wallet.R; import com.google.android.gms.samples.wallet.util.Json; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.android.gms.wallet.AutoResolveHelper; import com.google.android.gms.wallet.IsReadyToPayRequest; import com.google.android.gms.wallet.PaymentData; import com.google.android.gms.wallet.PaymentDataRequest; import com.google.android.gms.wallet.PaymentsClient;  import java.util.Locale; import java.util.Optional;  import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;  import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity;  /**  * Checkout implementation for the app  */ public class CheckoutActivity extends AppCompatActivity {    // Arbitrarily-picked constant integer you define to track a request for payment data activity.   private static final int LOAD_PAYMENT_DATA_REQUEST_CODE = 991;    private static final long SHIPPING_COST_CENTS = 90 * PaymentsUtil.CENTS_IN_A_UNIT.longValue();    // A client for interacting with the Google Pay API.   private PaymentsClient paymentsClient;    private ActivityCheckoutBinding layoutBinding;   private View googlePayButton;    private JSONArray garmentList;   private JSONObject selectedGarment;    /**    * Initialize the Google Pay API on creation of the activity    *    * @see Activity#onCreate(android.os.Bundle)    */   @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     initializeUi();      // Set up the mock information for our item in the UI.     try {       selectedGarment = fetchRandomGarment();       displayGarment(selectedGarment);     } catch (JSONException e) {       throw new RuntimeException("The list of garments cannot be loaded");     }      // Initialize a Google Pay API client for an environment suitable for testing.     // It's recommended to create the PaymentsClient object inside of the onCreate method.     paymentsClient = PaymentsUtil.createPaymentsClient(this);     possiblyShowGooglePayButton();   }    /**    * Handle a resolved activity from the Google Pay payment sheet.    *    * @param requestCode Request code originally supplied to AutoResolveHelper in requestPayment().    * @param resultCode  Result code returned by the Google Pay API.    * @param data        Intent from the Google Pay API containing payment or error data.    * @see <a href="https://developer.android.com/training/basics/intents/result">Getting a result    * from an Activity</a>    */   @Override   public void onActivityResult(int requestCode, int resultCode, Intent data) {     switch (requestCode) {       // value passed in AutoResolveHelper       case LOAD_PAYMENT_DATA_REQUEST_CODE:         switch (resultCode) {            case Activity.RESULT_OK:             PaymentData paymentData = PaymentData.getFromIntent(data);             handlePaymentSuccess(paymentData);             break;            case Activity.RESULT_CANCELED:             // The user cancelled the payment attempt             break;            case AutoResolveHelper.RESULT_ERROR:             Status status = AutoResolveHelper.getStatusFromIntent(data);             handleError(status.getStatusCode());             break;         }          // Re-enables the Google Pay payment button.         googlePayButton.setClickable(true);     }   }    private void initializeUi() {      // Use view binding to access the UI elements     layoutBinding = ActivityCheckoutBinding.inflate(getLayoutInflater());     setContentView(layoutBinding.getRoot());      // The Google Pay button is a layout file – take the root view     googlePayButton = layoutBinding.googlePayButton.getRoot();     googlePayButton.setOnClickListener(         new View.OnClickListener() {           @Override           public void onClick(View view) {             requestPayment(view);           }         });   }    private void displayGarment(JSONObject garment) throws JSONException {     layoutBinding.detailTitle.setText(garment.getString("title"));     layoutBinding.detailPrice.setText(         String.format(Locale.getDefault(), "$%.2f", garment.getDouble("price")));      final String escapedHtmlText = Html.fromHtml(         garment.getString("description"), Html.FROM_HTML_MODE_COMPACT).toString();     layoutBinding.detailDescription.setText(Html.fromHtml(         escapedHtmlText, Html.FROM_HTML_MODE_COMPACT));      final String imageUri = String.format("@drawable/%s", garment.getString("image"));     final int imageResource = getResources().getIdentifier(imageUri, null, getPackageName());     layoutBinding.detailImage.setImageResource(imageResource);   }    /**    * Determine the viewer's ability to pay with a payment method supported by your app and display a    * Google Pay payment button.    *    * @see <a href="https://developers.google.com/android/reference/com/google/android/gms/wallet/    * PaymentsClient.html#isReadyToPay(com.google.android.gms.wallet.    * IsReadyToPayRequest)">PaymentsClient#IsReadyToPay</a>    */   private void possiblyShowGooglePayButton() {      final Optional<JSONObject> isReadyToPayJson = PaymentsUtil.getIsReadyToPayRequest();     if (!isReadyToPayJson.isPresent()) {       return;     }      // The call to isReadyToPay is asynchronous and returns a Task. We need to provide an     // OnCompleteListener to be triggered when the result of the call is known.     IsReadyToPayRequest request = IsReadyToPayRequest.fromJson(isReadyToPayJson.get().toString());     Task<Boolean> task = paymentsClient.isReadyToPay(request);     task.addOnCompleteListener(this,         new OnCompleteListener<Boolean>() {           @Override           public void onComplete(@NonNull Task<Boolean> task) {             if (task.isSuccessful()) {               setGooglePayAvailable(task.getResult());             } else {               Log.w("isReadyToPay failed", task.getException());             }           }         });   }    /**    * If isReadyToPay returned {@code true}, show the button and hide the "checking" text. Otherwise,    * notify the user that Google Pay is not available. Please adjust to fit in with your current    * user flow. You are not required to explicitly let the user know if isReadyToPay returns {@code    * false}.    *    * @param available isReadyToPay API response.    */   private void setGooglePayAvailable(boolean available) {     if (available) {       googlePayButton.setVisibility(View.VISIBLE);     } else {       Toast.makeText(this, R.string.googlepay_status_unavailable, Toast.LENGTH_LONG).show();     }   }    /**    * PaymentData response object contains the payment information, as well as any additional    * requested information, such as billing and shipping address.    *    * @param paymentData A response object returned by Google after a payer approves payment.    * @see <a href="https://developers.google.com/pay/api/android/reference/    * object#PaymentData">PaymentData</a>    */   private void handlePaymentSuccess(PaymentData paymentData) {      // Token will be null if PaymentDataRequest was not constructed using fromJson(String).     final String paymentInfo = paymentData.toJson();     if (paymentInfo == null) {       return;     }      try {       JSONObject paymentMethodData = new JSONObject(paymentInfo).getJSONObject("paymentMethodData");       // If the gateway is set to "example", no payment information is returned - instead, the       // token will only consist of "examplePaymentMethodToken".        final JSONObject tokenizationData = paymentMethodData.getJSONObject("tokenizationData");       final String token = tokenizationData.getString("token");       final JSONObject info = paymentMethodData.getJSONObject("info");       final String billingName = info.getJSONObject("billingAddress").getString("name");       Toast.makeText(           this, getString(R.string.payments_show_name, billingName),           Toast.LENGTH_LONG).show();        // Logging token string.       Log.d("Google Pay token: ", token);      } catch (JSONException e) {       throw new RuntimeException("The selected garment cannot be parsed from the list of elements");     }   }    /**    * At this stage, the user has already seen a popup informing them an error occurred. Normally,    * only logging is required.    *    * @param statusCode will hold the value of any constant from CommonStatusCode or one of the    *                   WalletConstants.ERROR_CODE_* constants.    * @see <a href="https://developers.google.com/android/reference/com/google/android/gms/wallet/    * WalletConstants#constant-summary">Wallet Constants Library</a>    */   private void handleError(int statusCode) {     Log.e("loadPaymentData failed", String.format("Error code: %d", statusCode));   }    public void requestPayment(View view) {      // Disables the button to prevent multiple clicks.     googlePayButton.setClickable(false);      // The price provided to the API should include taxes and shipping.     // This price is not displayed to the user.     try {       double garmentPrice = selectedGarment.getDouble("price");       long garmentPriceCents = Math.round(garmentPrice * PaymentsUtil.CENTS_IN_A_UNIT.longValue());       long priceCents = garmentPriceCents + SHIPPING_COST_CENTS;        Optional<JSONObject> paymentDataRequestJson = PaymentsUtil.getPaymentDataRequest(priceCents);       if (!paymentDataRequestJson.isPresent()) {         return;       }        PaymentDataRequest request =           PaymentDataRequest.fromJson(paymentDataRequestJson.get().toString());        // Since loadPaymentData may show the UI asking the user to select a payment method, we use       // AutoResolveHelper to wait for the user interacting with it. Once completed,       // onActivityResult will be called with the result.       if (request != null) {         AutoResolveHelper.resolveTask(             paymentsClient.loadPaymentData(request),             this, LOAD_PAYMENT_DATA_REQUEST_CODE);       }      } catch (JSONException e) {       throw new RuntimeException("The price cannot be deserialized from the JSON object.");     }   }    private JSONObject fetchRandomGarment() {      // Only load the list of items if it has not been loaded before     if (garmentList == null) {       garmentList = Json.readFromResources(this, R.raw.tshirts);     }      // Take a random element from the list     int randomIndex = Math.toIntExact(Math.round(Math.random() * (garmentList.length() - 1)));     try {       return garmentList.getJSONObject(randomIndex);     } catch (JSONException e) {       throw new RuntimeException("The index specified is out of bounds.");     }   } } 

PaymentsUtil.java (Java)

Ten przykładowy plik tworzy obiekty JSON, które pozwalają utworzyć IsReadyToPayRequest lub PaymentDataRequest.

/*  * Copyright 2020 Google Inc.  *  * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0  *  * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  */  package com.google.android.gms.samples.wallet.util;  import android.app.Activity;  import com.google.android.gms.samples.wallet.Constants; import com.google.android.gms.wallet.PaymentsClient; import com.google.android.gms.wallet.Wallet;  import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Optional;  import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;  /**  * Contains helper static methods for dealing with the Payments API.  *  * <p>Many of the parameters used in the code are optional and are set here merely to call out their  * existence. Please consult the documentation to learn more and feel free to remove ones not  * relevant to your implementation.  */ public class PaymentsUtil {    public static final BigDecimal CENTS_IN_A_UNIT = new BigDecimal(100d);    /**    * Create a Google Pay API base request object with properties used in all requests.    *    * @return Google Pay API base request object.    * @throws JSONException    */   private static JSONObject getBaseRequest() throws JSONException {     return new JSONObject().put("apiVersion", 2).put("apiVersionMinor", 0);   }    /**    * Creates an instance of {@link PaymentsClient} for use in an {@link Activity} using the    * environment and theme set in {@link Constants}.    *    * @param activity is the caller's activity.    */   public static PaymentsClient createPaymentsClient(Activity activity) {     Wallet.WalletOptions walletOptions =         new Wallet.WalletOptions.Builder().setEnvironment(Constants.PAYMENTS_ENVIRONMENT).build();     return Wallet.getPaymentsClient(activity, walletOptions);   }    /**    * Gateway Integration: Identify your gateway and your app's gateway merchant identifier.    *    * <p>The Google Pay API response will return an encrypted payment method capable of being charged    * by a supported gateway after payer authorization.    *    * <p>TODO: Check with your gateway on the parameters to pass and modify them in Constants.java.    *    * @return Payment data tokenization for the CARD payment method.    * @throws JSONException    * @see <a href=    * "https://developers.google.com/pay/api/android/reference/object#PaymentMethodTokenizationSpecification">PaymentMethodTokenizationSpecification</a>    */   private static JSONObject getGatewayTokenizationSpecification() throws JSONException {     return new JSONObject() {{       put("type", "PAYMENT_GATEWAY");       put("parameters", new JSONObject() {{         put("gateway", "example");         put("gatewayMerchantId", "exampleGatewayMerchantId");       }});     }};   }    /**    * {@code DIRECT} Integration: Decrypt a response directly on your servers. This configuration has    * additional data security requirements from Google and additional PCI DSS compliance complexity.    *    * <p>Please refer to the documentation for more information about {@code DIRECT} integration. The    * type of integration you use depends on your payment processor.    *    * @return Payment data tokenization for the CARD payment method.    * @throws JSONException    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#PaymentMethodTokenizationSpecification">PaymentMethodTokenizationSpecification</a>    */   private static JSONObject getDirectTokenizationSpecification()       throws JSONException, RuntimeException {     if (Constants.DIRECT_TOKENIZATION_PARAMETERS.isEmpty()         || Constants.DIRECT_TOKENIZATION_PUBLIC_KEY.isEmpty()         || Constants.DIRECT_TOKENIZATION_PUBLIC_KEY == null         || Constants.DIRECT_TOKENIZATION_PUBLIC_KEY == "REPLACE_ME") {       throw new RuntimeException(           "Please edit the Constants.java file to add protocol version & public key.");     }     JSONObject tokenizationSpecification = new JSONObject();      tokenizationSpecification.put("type", "DIRECT");     JSONObject parameters = new JSONObject(Constants.DIRECT_TOKENIZATION_PARAMETERS);     tokenizationSpecification.put("parameters", parameters);      return tokenizationSpecification;   }    /**    * Card networks supported by your app and your gateway.    *    * <p>TODO: Confirm card networks supported by your app and gateway & update in Constants.java.    *    * @return Allowed card networks    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#CardParameters">CardParameters</a>    */   private static JSONArray getAllowedCardNetworks() {     return new JSONArray(Constants.SUPPORTED_NETWORKS);   }    /**    * Card authentication methods supported by your app and your gateway.    *    * <p>TODO: Confirm your processor supports Android device tokens on your supported card networks    * and make updates in Constants.java.    *    * @return Allowed card authentication methods.    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#CardParameters">CardParameters</a>    */   private static JSONArray getAllowedCardAuthMethods() {     return new JSONArray(Constants.SUPPORTED_METHODS);   }    /**    * Describe your app's support for the CARD payment method.    *    * <p>The provided properties are applicable to both an IsReadyToPayRequest and a    * PaymentDataRequest.    *    * @return A CARD PaymentMethod object describing accepted cards.    * @throws JSONException    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#PaymentMethod">PaymentMethod</a>    */   private static JSONObject getBaseCardPaymentMethod() throws JSONException {     JSONObject cardPaymentMethod = new JSONObject();     cardPaymentMethod.put("type", "CARD");      JSONObject parameters = new JSONObject();     parameters.put("allowedAuthMethods", getAllowedCardAuthMethods());     parameters.put("allowedCardNetworks", getAllowedCardNetworks());     // Optionally, you can add billing address/phone number associated with a CARD payment method.     parameters.put("billingAddressRequired", true);      JSONObject billingAddressParameters = new JSONObject();     billingAddressParameters.put("format", "FULL");      parameters.put("billingAddressParameters", billingAddressParameters);      cardPaymentMethod.put("parameters", parameters);      return cardPaymentMethod;   }    /**    * Describe the expected returned payment data for the CARD payment method    *    * @return A CARD PaymentMethod describing accepted cards and optional fields.    * @throws JSONException    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#PaymentMethod">PaymentMethod</a>    */   private static JSONObject getCardPaymentMethod() throws JSONException {     JSONObject cardPaymentMethod = getBaseCardPaymentMethod();     cardPaymentMethod.put("tokenizationSpecification", getGatewayTokenizationSpecification());      return cardPaymentMethod;   }    /**    * An object describing accepted forms of payment by your app, used to determine a viewer's    * readiness to pay.    *    * @return API version and payment methods supported by the app.    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#IsReadyToPayRequest">IsReadyToPayRequest</a>    */   public static Optional<JSONObject> getIsReadyToPayRequest() {     try {       JSONObject isReadyToPayRequest = getBaseRequest();       isReadyToPayRequest.put(           "allowedPaymentMethods", new JSONArray().put(getBaseCardPaymentMethod()));        return Optional.of(isReadyToPayRequest);      } catch (JSONException e) {       return Optional.empty();     }   }    /**    * Provide Google Pay API with a payment amount, currency, and amount status.    *    * @return information about the requested payment.    * @throws JSONException    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#TransactionInfo">TransactionInfo</a>    */   private static JSONObject getTransactionInfo(String price) throws JSONException {     JSONObject transactionInfo = new JSONObject();     transactionInfo.put("totalPrice", price);     transactionInfo.put("totalPriceStatus", "FINAL");     transactionInfo.put("countryCode", Constants.COUNTRY_CODE);     transactionInfo.put("currencyCode", Constants.CURRENCY_CODE);     transactionInfo.put("checkoutOption", "COMPLETE_IMMEDIATE_PURCHASE");      return transactionInfo;   }    /**    * Information about the merchant requesting payment information    *    * @return Information about the merchant.    * @throws JSONException    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#MerchantInfo">MerchantInfo</a>    */   private static JSONObject getMerchantInfo() throws JSONException {     return new JSONObject().put("merchantName", "Example Merchant");   }    /**    * An object describing information requested in a Google Pay payment sheet    *    * @return Payment data expected by your app.    * @see <a    * href="https://developers.google.com/pay/api/android/reference/object#PaymentDataRequest">PaymentDataRequest</a>    */   public static Optional<JSONObject> getPaymentDataRequest(long priceCents) {      final String price = PaymentsUtil.centsToString(priceCents);      try {       JSONObject paymentDataRequest = PaymentsUtil.getBaseRequest();       paymentDataRequest.put(           "allowedPaymentMethods", new JSONArray().put(PaymentsUtil.getCardPaymentMethod()));       paymentDataRequest.put("transactionInfo", PaymentsUtil.getTransactionInfo(price));       paymentDataRequest.put("merchantInfo", PaymentsUtil.getMerchantInfo());        /* An optional shipping address requirement is a top-level property of the PaymentDataRequest       JSON object. */       paymentDataRequest.put("shippingAddressRequired", true);        JSONObject shippingAddressParameters = new JSONObject();       shippingAddressParameters.put("phoneNumberRequired", false);        JSONArray allowedCountryCodes = new JSONArray(Constants.SHIPPING_SUPPORTED_COUNTRIES);        shippingAddressParameters.put("allowedCountryCodes", allowedCountryCodes);       paymentDataRequest.put("shippingAddressParameters", shippingAddressParameters);       return Optional.of(paymentDataRequest);      } catch (JSONException e) {       return Optional.empty();     }   }    /**    * Converts cents to a string format accepted by {@link PaymentsUtil#getPaymentDataRequest}.    *    * @param cents value of the price in cents.    */   public static String centsToString(long cents) {     return new BigDecimal(cents)         .divide(CENTS_IN_A_UNIT, RoundingMode.HALF_EVEN)         .setScale(2, RoundingMode.HALF_EVEN)         .toString();   } }