Page Summary
-
This tutorial provides a step-by-step guide for integrating Google Pay into Android applications for accepting card payments.
-
Developers can configure payment settings, including supported card networks and payment providers.
-
The tutorial includes code examples in Kotlin and Java to demonstrate the integration process.
-
The
examplegateway is for testing purposes only; replace it with your provider's details for live transactions. -
Developers should ensure to review the Google Pay API documentation and best practices for a successful integration.
Follow the steps in this tutorial to add Google Pay to your Android application and configure it to accept payment cards.
Step 1: Define your payment configuration
Configure your Google Pay API version
Declare the version of the Google Pay API that your application uses. The major and minor versions affect the fields expected in each passed object and are included in the response.
Create a base request object that contains properties that are present in all other request objects.
Kotlin
private val baseRequest = JSONObject () . put ( "apiVersion" , 2 ) . put ( "apiVersionMinor" , 0 )
Java
private static JSONObject getBaseRequest () throws JSONException { return new JSONObject () . put ( "apiVersion" , 2 ) . put ( "apiVersionMinor" , 0 ); }
Request a payment token for your payment provider
Google encrypts information about a payer's selected card for secure processing by a payment provider.
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" ) ); }
Replace example
and exampleGatewayMerchantId
with
the appropriate values for your payment provider. Use the following table to find the specific gateway
and gatewayMerchantId
values for your payment provider:
| Gateway | Parameters and documents |
|---|---|
| 9Pay | "gateway": "ninepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| 91APP PAYMENTS | "gateway": "payments91app" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ABA PayWay | "gateway": "ababank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| accept.blue | "gateway": "acceptblue" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ACI | "gateway": "aciworldwide" "gatewayMerchantId": " YOUR_ENTITY_ID " |
| ACpay | "gateway": "acpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Acquired.com | "gateway": "acquired" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Adyen | "gateway": "adyen" "gatewayMerchantId": " YOUR_MERCHANT_ACCOUNT_NAME " |
| AI Fintech | "gateway": "aifintech" "gatewayMerchantId": " YOUR_MERCHANT_ACCOUNT_NAME " |
| Airba Pay | "gateway": "airbapay"" "gatewayMerchantId": " YOUR_MERCHANT_ACCOUNT_NAME " |
| Airvend | "gateway": "airvend" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Airwallex | "gateway": "airwallex" "gatewayMerchantId": " YOUR_MERCHANT_ACCOUNT_NAME " |
| Akurateco | "gateway": "akuratecolab" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Alfa-Bank | "gateway": "alfabank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Algoritma | "gateway": "algoritma" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Allinpay | "gateway": "allinpayintl" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| AllPayments | "gateway": "allpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| alticepay | "gateway": "alticepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| AMO FINTECH LLC | "gateway": "amofintech" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Amwal Pay | "gateway": "amwalalraqamia" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Anedot | "gateway": "anedot" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ApcoPay | "gateway": "apcopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| APPEX | "gateway": "epos" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Armenian Card OJSC | "gateway": "epgarca" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| AsiaBill | "gateway": "asiabill" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Assist | "gateway": "assist" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Assist Belarus | "gateway": "belassist" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Assist Kazakhstan | "gateway": "assistkz" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Aurus | "gateway": "auruspay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Authorize.net | "gateway": "authorizenet" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Axerve | "gateway": "gestpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| AXS | "gateway": "axsasia" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| azericardgpay | "gateway": "azericardgpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| B2B Soft Pay | "gateway": "b2bsoftpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bank 131 | "gateway": "bank131" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| BANK RBK | "gateway": "bankrbkkzpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bank Vostok | "gateway": "bankvostok" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Barclaycard | "gateway": "barclayssmartpayadvance" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Barion | "gateway": "barion" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Basis Theory | "gateway": "basistheory" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| BCC.KZ | "gateway": "bccpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| bePaid | "gateway": "ecomcharge" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bereke Bank | "gateway": "berekepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Better Payment Germany GmbH | "gateway": "betterpayment" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Billing Systems | "gateway": "billingsystems" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bindo Labs Limited | "gateway": "bindo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| bisys.kz | "gateway": "bisysgpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bizon.one | "gateway": "bizonone" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bizzon | "gateway": "bizzon" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Blackstone Merchant Services | "gateway": "blackstone" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Blocks | "gateway": "blocks" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bluefin | "gateway": "bluefin" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bluefin Europe | "gateway": "bluefineurope" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Blue Media | "gateway": "bluemedia" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| BlueSnap | "gateway": "bluesnap" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Blusky Technology Services | "gateway": "bluskysvcpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| BORICA | "gateway": "borica" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| BPC | "gateway": "bpcpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| BR-DGE | "gateway": "comcarde" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Braintree | "gateway": "braintree" "braintree:apiVersion": "v1" "braintree:sdkVersion": "braintree.client. VERSION " "braintree:merchantId": " YOUR_BRAINTREE_MERCHANT_ID " "braintree:clientKey": " YOUR_BRAINTREE_TOKENIZATION_KEY " |
| Braspag | "gateway": "cielo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| BridgerPay | "gateway": "bridgerpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Bonum | "gateway": "bonumpsp" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| BT Pay | "gateway": "btpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Buckaroo | "gateway": "buckaroo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Buya | "gateway": "buya" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CARDAQ | "gateway": "cardaq" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CardCom | "gateway": "cardcom" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CardConnect | "gateway": "cardconnect" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Cardknox | "gateway": "cardknox" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| cardlink | "gateway": "cardlink" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Cardstream | "gateway": "crst" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Cashflows | "gateway": "cashflowsgateway" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Cathay United Bank | "gateway": "cathaybk" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CCAvenue UAE | "gateway": "ccavenueuae" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CCV | "gateway": "ccv" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Cecabank | "gateway": "cecabank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Celerispay | "gateway": "celerispay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CentralPay | "gateway": "centralpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Centrobill LTD | "gateway": "centrobill" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Chargehive | "gateway": "chargehive" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CharityEngine | "gateway": "charityengine" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Chase Merchant Services | "gateway": "chase" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Checkout.com | "gateway": "checkoutltd" "gatewayMerchantId": " YOUR_PUBLIC_KEY " |
| CityPay | "gateway": "citypay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Cloud9 Payment Gateway (C9PG) | "gateway": "c9pg" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CloudPayments | "gateway": "cloudpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CloudWalk | "gateway": "cloudwalk" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Coinflow | "gateway": "coinflow" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Computop | "gateway": "computop" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ConcordPay | "gateway": "concordpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Conekta | "gateway": "conektagpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Connectum | "gateway": "connectum" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ConnexPay | "gateway": "connexpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CoralPay | "gateway": "coralpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Corefy | "gateway": "paycoreio" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Corvus Pay | "gateway": "corvuspay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Credit2000 | "gateway": "credit2000" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Credorax | "gateway": "credorax" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CrossPay | "gateway": "crosspay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Cross Switch | "gateway": "crossswitch" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CSG Forte | "gateway": "csgforte" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CTBC Bank | "gateway": "ctbcbank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CURO Payments | "gateway": "curopayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| CYBERBIZ | "gateway": "cyberbizpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Cybersource | "gateway": "cybersource" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| danube.pay | "gateway": "danubepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Datacap Systems, Inc. | "gateway": "datatrans" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Datatrans | "gateway": "datatrans" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| DECTA | "gateway": "decta" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs |
| Dejavoo | "gateway": "denovosystempay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| DEUNA | "gateway": "deuna" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Deutsche Bank AG | "gateway": "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs |
| Deutsche Bank – Merchant Solutions | "gateway": "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| DG Financial Technology, Inc. | "gateway": "veritrans" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Digital Commerce Bank | "gateway": "dcpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Digital Finance | "gateway": "digitalfinance" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Dintero | "gateway": "dintero" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| dLocal | "gateway": "dlocal" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| DNA Payments | "gateway": "dnapayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Dojo | "gateway": "dojo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| DOKU | "gateway": "dokudjakarta" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Dotpay | "gateway": "dotpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| e-SiTef - Software Express | "gateway": "softwareexpress" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| easycard | "gateway": "easycard" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| EasyPay | "gateway": "easypay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Easypay EU | "gateway": "easypaypt" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| EBANX | "gateway": "ebanx" "gatewayMerchantId": " YOUR_PUBLIC_INTEGRATION_KEY " |
| eCard | "gateway": "ecard" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Ecart Pay | "gateway": "ecartpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Ecomm Merchant Solutions | "gateway": "ecommmerchantsolutions" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ECOMMPAY | "gateway": "ecommpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Ecopaynet | "gateway": "ecopaynet" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ECPay | "gateway": "ecpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| EdfaPay | "gateway": "edfapay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| eftcorporation | "gateway": "eftcorporation" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| eGHL | "gateway": "eghl" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Elavon (Converge) | "gateway": "convergepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Emerchantpay | "gateway": "emerchantpay" "gatewayMerchantID": " YOUR_GATEWAY_MERCHANT_ID " |
| emspay | "gateway": "emsonline" "gatewayMerchantID": " YOUR_GATEWAY_MERCHANT_ID " |
| Encoded | "gateway": "encoded" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| epay | "gateway": "epay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| EPAYJSC | "gateway": "epayjsc" "gatewayMerchantID": " YOUR_GATEWAY_MERCHANT_ID " |
| EpicPay | "gateway": "epicpay" "gatewayMerchantID": " YOUR_GATEWAY_MERCHANT_ID " |
| Espago | "gateway": "espago" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Etisalat | "gateway": "etisalatpaymentgateway" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Evertec Placetopay S.A.S | "gateway": "placetopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Evervault | "gateway": "evervault" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| EveryPay S.A. | "gateway": "EveryPay S.A." "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| EVONET | "gateway": "cardinfolink" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| EVOPAY | "gateway": "EVOPAY" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Evo Payment Gateway | "gateway": "evopaymentgateway" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| exactly.com | "gateway": "exactly" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Exact Payments | "gateway": "exactpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fat Zebra | "gateway": "fatzebra" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fenige | "gateway": "fenige" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fexco payUnite | "gateway": "fexco" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fibonatix | "gateway": "fibonatixparagon" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Financial Line | "gateway": "finline" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Finanso UA | "gateway": "finansoua" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| fincode byGMO | "gateway": "fincode" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| FINEXUS | "gateway": "finexus" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Finix | "gateway": "finix" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| FireAntPay | "gateway": "fireantpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| First American by Deluxe | "gateway": "firstpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fiuu (formerly Razer Merchant Services & MOLPay) | "gateway": "molpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| FIS Biller Solutions | "gateway": "fisglobalbsp" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fiserv | "gateway": "fiserv" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fiserv | "gateway": "fiservipg" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Flitt | "gateway": "flitt" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Flow pagos | "gateway": "flow_pay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Fluid Pay | "gateway": "fluidpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Flyway | "gateway": "flyway" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| FM Finance LTD | "gateway": "fmfinanceltd" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ForteBank | "gateway": "fortebank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Forward | "gateway": "forward" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fractal | "gateway": "fractal" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Freedom Finance Bank | "gateway": "axayscom" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| FreedomPay | "gateway": "freedompay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| FreedomPay.Money | "gateway": "payboxmoney" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Freepay | "gateway": "freepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Frisbii | "gateway": "Frisbii" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Frontstream | "gateway": "frontstreampayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Fung Payments | "gateway": "fungpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| GBPayments | "gateway": "gbpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| geidea | "gateway": "geidea" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| GETTRX | "gateway": "globalelectronictechnology" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Gkash | "gateway": "gkash" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Global One Pay | "gateway": "globalonepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Global Payments | "gateway": "globalpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| globalpaymentsinc | "gateway": "globalpaymentsinc" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| GMO Payment Gateway | "gateway": "gmopg" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| GoDaddy Payments | "gateway": "godaddypayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Good Idea Technologies | "gateway": "git" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| GoPay | "gateway": "gopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| GP Webpay | "gateway": "gpwebpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Gravity Payments | "gateway": "gravitypayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Gr4vy | "gateway": "gr4vy" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Halyk Bank | "gateway": "halykbank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Helcim | "gateway": "helcim" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| HIPS | "gateway": "hips" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| HiTrust | "gateway": "hitrustpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| hutko | "gateway": "hutko" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Hyp | "gateway": "hyp" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| icard | "gateway": "icardwallet" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| iCount | "gateway": "iCount" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| iCredit | "gateway": "rivhit" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| IDid Tecnologia Ltda | "gateway": "idid" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| iKhokha | "gateway": "ikhokha" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| IMOJE | "gateway": "imoje" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Impaya | "gateway": "impayarus" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Infofintech S A S | "gateway": "infofintech" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Inovio Payments | "gateway": "inoviopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| InPlat | "gateway": "inplat" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| InstaMed | "gateway": "instamed" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| IntaSend Solutions Limited | "gateway": "intasend" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| IntellectMoney | "gateway": "intellectmoney" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Interactive Transaction Solutions | "gateway": "interactivets" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Interpay | "gateway": "interpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Interswitch Payment Gallery | "gateway": "interswitch" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Intervale | "gateway": "intervale" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ioka fintech | "gateway": "ioka" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| iPay88 | "gateway": "ipay88" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| IPSI | "gateway": "ipsi" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| iQmetrix | "gateway": "iqmetrixpaymentservicesgateway" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| iVeri Payment Technologies | "gateway": "iveri" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| IXOPAY | "gateway": "ixopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| JagoLink Limited | "gateway": "jagolink" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| JetPay | "gateway": "jetpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| jpmmps | "gateway": "jpmmps" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| JudoPay | "gateway": "judopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| JustiFi | "gateway": "justifi" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| KapitalBank | "gateway": "eCommerceKapitalBank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Kassa | "gateway": "kassacom" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| kassa24pay | "gateway": "kassa24pay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Kazpost JSC | "gateway": "qazpost" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| KimNganPay | "gateway": "kimngan" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Kineox | "gateway": "kineox" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Klix by Citadele | "gateway": "klix" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Koin | "gateway": "koin" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| KPay Group | "gateway": "kpaygroup" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Lapsa Payments | "gateway": "lapsapayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| LHV Pank | "gateway": "lhvpank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Liberty | "gateway": "liberty" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Life Pay | "gateway": "lifepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Limepay | "gateway": "limepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Linkly | "gateway": "linkly" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| LiqPay | "gateway": "liqpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| LITIQON OÜ | "gateway": "nuvex" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Littlepay | "gateway": "littlepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| LogPay | "gateway": "logpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Loyale | "gateway": "loyale" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| lynck | "gateway": "lynck" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Lyra | "gateway": "lyra" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Magnetiq Bank | "gateway": "magnetiq" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| maib | "gateway": "maibecomm" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MakeCommerce (Maksekeskus) | "gateway": "maksekeskus" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Maksu GMBH | "gateway": "maksupayeu" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Mandarin | "gateway": "mandarin" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Market Pay | "gateway": "marketpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Mastercard Payment Gateway Services | "gateway": "mpgs" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Mellifera | "gateway": "mellifera" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MerchantE | "gateway": "merchante" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Midtrans | "gateway": "midtrans" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Menahel4uGoCredit | "gateway": "menahel4ugocredit" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Merchant Warrior | "gateway": "merchantwarrior" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Minsait Payments Systems | "gateway": "minsaitpaymentsgateway" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MITEC | "gateway": "mitecmx" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MIXPLAT | "gateway": "mixplat" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MOBI.Money | "gateway": "mobimoney" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Modulbank | "gateway": "modulbank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Mollie | "gateway": "mollie" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Mondido | "gateway": "mondido" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Monei | "gateway": "monei" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| monek | "gateway": "monek" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Moneris | "gateway": "moneris" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Moneta | "gateway": "moneta" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Monext | "gateway": "monext" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MoneyHash | "gateway": "moneyhash" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Money.Mail.Ru | "gateway": "moneymailru" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| monripayments | "gateway": "monripayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Moov | "gateway": "moov" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Moyasar | "gateway": "moyasar" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MPay | "gateway": "managepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MSolution | "gateway": "msolution" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| mstartipg | "gateway": "mstartipg" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Multicarta | "gateway": "mulitcarta" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MultiSafepay | "gateway": "multisafepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Mundipagg | "gateway": "mundipagg" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MyCheck | "gateway": "mycheck" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MyChoice2Pay | "gateway" : "mychoice2pay" "gatewayMerchantId" : " YOUR_GATEWAY_MERCHANT_ID " |
| MyFatoorah | "gateway": "myfatoorah" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| MyPay | "gateway": "mypay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| myPOS | "gateway": "mypos" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| N&TS Group | "gateway": "netsgroup" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| NCCC | "gateway": "nccc" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Neolink | "gateway": "neolinkprocessing" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Neon Pay | "gateway": "neonpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Netopia | "gateway": "netopia" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Netvalve | "gateway": "netvalve" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Network International | "gateway": "networkintl" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Newebpay (formerly STPath, Pay2Go) | "gateway": "newebpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Newtech | "gateway": "newtechmobile" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Nexi | "gateway": "nexi" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Nexi Easy | "gateway": "easy" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| NMI | "gateway": "gatewayservices" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| noon payments | "gateway": "noonpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Noqoody Pay | "gateway": "noqoodypay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Novalnet | "gateway": "novalnet" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Nexi Relay | "gateway": "nexirelay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| NTT DATA | "gateway": "nttdatahk" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Nuvei | "gateway": "nuvei" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Oceanpayment | "gateway": "oceanpayment" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Omise | "gateway": "omise" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Omno | "gateway": "omno" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| One Inc | "gateway": "oneinc" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Onelya | "gateway": "onelya" "gatewayMerchantId": " YOUR_GATWAY_MERCHANT_ID " |
| Onerway | "gateway": "ronghan" "gatewayMerchantId": " YOUR_GATWAY_MERCHANT_ID " |
| OneVision Limited | "gateway": "onevision" "gatewayMerchantId": " YOUR_GATWAY_MERCHANT_ID " |
| OnPay | "gateway": "onpayio" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Opayo by Elavon | "gateway": "opayoelavon" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ONVO | "gateway": "onvopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| OrkestaPay | "gateway": "orkestapay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Oschadbank | "gateway": "oschadbank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Outpayce | "gateway": "outpayce" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| pagarme | "gateway": "pagarme" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PagBank | "gateway": "pagbank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PagBrasil | "gateway": "pagbrasil" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PagSeguro | "gateway": "pagsegurointernational" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PAY2M | "gateway": "pay2m" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payadmit | "gateway": "payadmit" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payarc | "gateway": "payarc" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paybis | "gateway": "paybis" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PAYBOX VERIFONE | "gateway": "paybox" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Pay.com | "gateway": "paycom" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PAYCOMET | "gateway": "paycomet" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paycross Ltd | "gateway": "paycross" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paydock | "gateway": "paydock" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayEase | "gateway": "payeasenet" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayEngine | "gateway": "payengine" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayerMax | "gateway": "payermax" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayFabric | "gateway": "payfabric" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayFacto | "gateway": "payfacto" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayFast | "gateway": "gopayfastuat" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| paygent | "gateway": "paygent" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payhub | "gateway": "payhub" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayKKa | "gateway": "paykkaeu" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayLane | "gateway": "paylane" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payler | "gateway": "payler" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayLink® | "gateway": "paylink" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payload | "gateway" : "payload" "gatewayMerchantId" : " YOUR_GATEWAY_MERCHANT_ID " |
| Paymark | "gateway": "paymark" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayMaster | "gateway": "paymaster" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayMe | "gateway": "payme" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payment Fusion | "gateway": "paymentfusion" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PaymentIQ | "gateway": "worldlinedevcode" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paymentvision | "gateway": "paymentvision" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paymentwall | "gateway": "paymentwall" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paymo | "gateway": "paymo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paymob | "gateway": "gpaymob" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayMongo | "gateway": "paymongo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paymtech | "gateway": "paymtech" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayNearMe | "gateway": "paynearme" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payneteasy | "gateway": "payneteasy" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayNetWorx | "gateway": "paynetworx" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayNext Inc | "gateway": "paynext" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Pay.nl | "gateway": "paynl" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paynopain | "gateway": "paynopain" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayOne | "gateway": "payone" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayOnline | "gateway": "payonline" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payonomy Limited | "gateway": "asperato" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Payoo | "gateway": "payoo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Pay Theory | "gateway": "paytheory" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayPlus | "gateway": "payplus" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayPlusLLC | "gateway": "payplusllc" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayPro Pvt Ltd | "gateway": "paypro" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Payrails | "gateway": "payrails" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payrexx | "gateway": "payrexx" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayRiff | "gateway": "payriff" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payrix | "gateway": "payrix" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paysafe | "gateway": "paysafe" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payscout | "gateway": "payscout" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paysend Business | "gateway": "paysend" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paysoft | "gateway": "paysoft" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Pay360 | "gateway": "pay360" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| paytech | "gateway": "paytechsolutions" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayTech Ukraine | "gateway": "paytech" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payten Payment Gateway | "gateway": "paytentr" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paythru | "gateway": "paythru" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payture | "gateway": "payture" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayU | "gateway": "payu" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayU LATAM | "gateway": "payulatam" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PAYUNi | "gateway": "payuni" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayU Romania | "gateway": "payuro" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PayU Russia | "gateway": "payuru" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payway | "gateway": "payway" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Paywiser | "gateway": "paywiser" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Payzone Ireland | "gateway": "payzoneireland" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PBT Gateway Services Ltd | "gateway": "pbtgateway" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Pelecard | "gateway": "pelecard" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Pensopay | "gateway": "pensopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Pikassa | "gateway": "pikassa" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PingPong | "gateway": "pingpongx" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Pin Payments | "gateway": "pinpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Planet | "gateway": "cccpayment" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PlanetPay | "gateway": "itcardpaymentservice" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Plategka.com | "gateway": "plategkacom" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Platon | "gateway": "platon" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Plexo | "gateway": "plexouy" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Plexy | "gateway": "plexy" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Pomelo | "gateway": "pomelopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Portmone | "gateway": "portmonecom" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Powerpay | "gateway": "powerpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Preczn | "gateway": "preczn" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PrimePay | "gateway": "primepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Primer | "gateway": "primer" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Procard | "gateway": "procard" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ProcessOut | "gateway": "processout" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Przelewy24 | "gateway": "przelewy24" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PSCB | "gateway": "pscbru" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PSiGate Inc. | "gateway": "psigate" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| PXP Financial | "gateway": "pxpfinancial" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Qenta Payment CEE | "gateway": "qenta" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| QIWI | "gateway": "qiwi" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| QNB | "gateway": "qnbpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Qualpay | "gateway": "qualpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| QuickPay | "gateway": "quickpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Qvalent | "gateway": "qvalent" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Radial | "gateway": "radial" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Raiffeisen Processing Centre | "gateway": "raiffeisenprocessingcentre" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| RapidCents | "gateway": "rapidcentspay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Rapyd | "gateway": "rapyd" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| RBK.money | "gateway": "rbkmoney" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Rebail Capital | "gateway": "rebailcapital" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Rebilly | "gateway": "Rebilly" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Recurly | "gateway": "recurly" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Reddot | "gateway": "reddotpayment" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Rede | "gateway": "rede" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Redsys | "gateway": "redsys" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Reepay | "gateway": "reepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Revolut | "gateway": "revolut" "gatewayMerchantId": " YOUR_REVOLUT_ORDER_TOKEN " |
| RocketGate | "gateway": "rocketgate" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Rootline | "gateway": "rootline" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Russian Standard Bank | "gateway": "rsb" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Ryft | "gateway": "ryft" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| S.C. C SOLUTION S.R.L. | "gateway": "plationline" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Safepay | "gateway": "safepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Saferpay | "gateway": "worldlinesaferpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Safexpay | "gateway": "safexpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Sberbank | "gateway": "sberbank" "gatewayMerchantId": " YOUR_ORGANIZATION_NAME " |
| SEB Baltic | "gateway": "sebbaltic" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SEBES Technology | "gateway": "sebes" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SecurePay | "gateway": "securepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Sense Bank | "gateway": "sensebank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SensePass | "gateway": "sensepass" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Servicios Digitales Popular S.A. | "gateway": "pagosazul" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Shift4 | "gateway": "shift4payments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Shiji Group | "gateway": "shijipaymentsolutions" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SH Start High | "gateway": "shstartpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| shvarenapay | "gateway" : "shvarenapay" "gatewayMerchantId" : " YOUR_GATEWAY_MERCHANT_ID " |
| SIBS Romania | "gateway": "romcard" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| simbasoft | "gateway": "simbasoft" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SimplePay Zrt | "gateway" : "simplepay" "gatewayMerchantId" : " YOUR_GATEWAY_MERCHANT_ID " |
| Sipay | "gateway": "sipay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SmartPay | "gateway": "smartpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Softbank Payment Service | "gateway": "sbps" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Softtouch POS and Payments | "gateway": "softtouch" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Sohar International | "gateway": "soharinternational" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Sokin | "gateway": "sokinpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Solid | "gateway": "solid" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Sony Payment Services | "gateway": "sonypaymentservices" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Splitit | "gateway": "splitit" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Spreedly | "gateway": "spreedly" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Square | "gateway": "square" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SredaPay | "gateway": "sredapay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SSLCOMMERZ | "gateway": "sslcommerz" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Stancer | "gateway": "stancer" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Stripe | "gateway": "stripe" "stripe:version": "2018-10-31" "stripe:publishableKey": " YOUR_PUBLIC_STRIPE_KEY " |
| SUMIT | "gateway": "sumit" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| SUNBAY | "gateway": "sunbay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Suntech | "gateway": "esafe" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Surfboard Payments | "gateway": "surfboard" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Svea Bank | "gateway": "svea" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Swedbank Baltic | "gateway": "swedbankbaltic" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Swedbank Pay | "gateway": "payexswedbankpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TabaPay | "gateway": "tabapay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TapPay (Cherri Tech) | "gateway": "tappay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TapPayments | "gateway": "tappayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| tarlanpayments | "gateway": "tarlanpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TAS Link | "gateway": "taslink" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Tatra banka (CardPay) | "gateway": "tatrabanka" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Technology Partnership PGS | "gateway": "technologypartnership" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TEKO | "gateway": "teko" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Telepay | "gateway": "telerompay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Telr | "gateway": "telr" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| theMAP | "gateway": "themap" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Till Payments | "gateway": "tillpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Time Project LLC | "gateway": "timeproject" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Tinkoff | "gateway": "tinkoff" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TIPTOP PAY | "gateway": "tiptoppay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| TORA | "gateway": "tora" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TotalPay | "gateway": "totalpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TPay | "gateway": "tpaycom" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TPay.com | "gateway": "tpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Transact Campus | "gateway": "transactcampus" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Transact Pro | "gateway": "transactpro" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Transaction Services Network | "gateway": "tns" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Transpayrent | "gateway": "transpayrent" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Tranzila | "gateway": "tranzila" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Tranzzo | "gateway": "tranzzo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Tribe Payments | "gateway": "tribepayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Truevo | "gateway": "truevo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| TrustPay | "gateway": "trustpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Trust Payments | "gateway": "trustpayments" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Tuna | "gateway": "tuna" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Tyler Technologies | "gateway": "tylertech" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| 2can&ibox | "gateway": "twocan" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| UAPAY | "gateway": "uapay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| UBRR | "gateway": "ubrrpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Ukrcardpay | "gateway": "ukrcardpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| UkrGasBank Pay | "gateway": "ukrgasbankpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Unibank OJSC | "gateway": "unibankcheckout" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| unitedfinancialcorporation | "gateway": "unitedfinancialcorporation" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Uniteller | "gateway": "uniteller" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Unitpay | "gateway": "unitpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Unlimint | "gateway": "unlimint" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Unzer | "gateway": "unzer" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Unzer Austria | "gateway": "unzeraustria" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| UPC | "gateway": "upc" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Upgate | "gateway": "upgate" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| USAePay | "gateway": "usaepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| UseePay | "gateway": "useepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| USIO, Inc. | "gateway": "usio" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Valitor | "gateway": "valitor" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| value.io | "gateway": "inspirecommerce" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Vanco | "gateway": "vanco" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| VantagePay | "gateway": "vantagepay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Vantiv | "gateway": "vantiv" "vantiv:merchantPayPageId": " YOUR_PAY_PAGE_ID " "vantiv:merchantOrderId": " YOUR_ORDER_ID " "vantiv:merchantTransactionId": " YOUR_TRANSACTION_ID " "vantiv:merchantReportGroup": "*web" |
| Vayapay | "gateway": "vayapay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| Vendo | "gateway": "vendoservices" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Verestro | "gateway": "verestro" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Very Good Security | "gateway": "verygoodsecurity" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Victoriabank | "gateway": "victoriabank" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Vindicia | "gateway": "vindicia" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Viva Wallet | "gateway": "vivawallet" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| VTEX | "gateway": "vtex" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Waffo | "gateway": "waffo" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Wallee | "gateway": "wallee" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Walletdoc | "gateway": "walletdoc" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Walletto | "gateway": "walletto" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| WayForPay | "gateway": "wayforpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| WEAT | "gateway": "weatpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| WhenThen | "gateway": "whenthen" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Whitegate | "gateway": "Whitegate" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| WHITELARK LTD | "gateway": "whitelark" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Windcave | "gateway": "windcave" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Wirebank | "gateway" : "wirebank" "gatewayMerchantId" : " YOUR_GATEWAY_MERCHANT_ID " |
| Wirecard | "gateway" : "wirecard" "gatewayMerchantId" : " YOUR_GATEWAY_MERCHANT_ID " |
| WOOPPAY | "gateway": "wooppay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| WooshPay | "gateway": "swooshtransfer" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Worldline (GlobalCollect) | "gateway": "globalcollect" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Worldline - Ingenico (WL Online Checkout) | "gateway": "worldlineingenicoogone" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Worldline Nordics (Worldline Online Checkout) | "gateway": "worldlineonlinecheckout" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Worldline Sips | "gateway": "wlsips" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Worldnet | "gateway": "worldnet" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Worldpay | "gateway": "worldpay" "gatewayMerchantId": " YOUR_WORLDPAY_MERCHANT_ID " |
| Wpay | "gateway": "wpayaus" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| WSPay | "gateway": "wspay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Xendit | "gateway": "xendit" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| xMoney | "gateway": "xmoneypay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| XPATE | "gateway": "xpate" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| xpay | "gateway": "xpaycomua" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| XPay by PostEx | "gateway": "xpaybypostex" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| YabandPay B.V. | "gateway": "yabandpay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Yapstone | "gateway": "yapstone" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| YIĞIM Payment System | "gateway": "yigim" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " No developer docs available |
| ЮKassa (YooKassa) | "gateway": "yoomoney" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Yuno | "gateway": "yuno" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Z-credit | "gateway": "zcredit" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Zalopay | "gateway": "zalopay" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| ZEN.com | "gateway": "zen" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Zest | "gateway": "zestpayment" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
| Zuora | "gateway": "zuora" "gatewayMerchantId": " YOUR_GATEWAY_MERCHANT_ID " |
The PAYMENT_GATEWAY
tokenization type is the most common merchant implementation
of the card payment method in the Google Pay API. If your payment provider isn't supported, you
might be able to accept Google Pay by a DIRECT
integration. For more information, see the Direct tokenization
documentation
.
Define supported payment card networks
Define the card networks that your application accepts.
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" ); }
The Google Pay API might return cards on file from your account ( PAN_ONLY
) or a device
token on an Android-powered device authenticated with a 3-D Secure cryptogram
( CRYPTOGRAM_3DS
). You can configure the API to return the methods that your
application supports.
Before you set allowedCardAuthMethods
, confirm with your payment processor and
acquirer on whether device tokens ( CRYPTOGRAM_3DS
) are supported in your region.
Kotlin
private val allowedCardAuthMethods = JSONArray ( listOf ( "PAN_ONLY" , "CRYPTOGRAM_3DS" ))
Java
private static JSONArray getAllowedCardAuthMethods () { return new JSONArray () . put ( "PAN_ONLY" ) . put ( "CRYPTOGRAM_3DS" ); }
For more information, see the reference documentation for the CardParameters
object
. For Android device tokens support, check with your
gateway or processor for the card networks supported.
Describe your allowed payment methods
In order to describe your application's support for the CARD
payment method, combine
your supported authentication methods and card networks.
Kotlin
private fun baseCardPaymentMethod (): JSONObject = JSONObject () . put ( "type" , "CARD" ) . put ( "parameters" , JSONObject () . put ( "allowedAuthMethods" , allowedCardAuthMethods ) . put ( "allowedCardNetworks" , allowedCardNetworks ) . put ( "billingAddressRequired" , true ) . put ( "billingAddressParameters" , JSONObject () . put ( "format" , "FULL" ) ) )
Java
private static JSONObject getBaseCardPaymentMethod () throws JSONException { return new JSONObject () . put ( "type" , "CARD" ) . put ( "parameters" , new JSONObject () . put ( "allowedAuthMethods" , getAllowedCardAuthMethods ()) . put ( "allowedCardNetworks" , getAllowedCardNetworks ()) . put ( "billingAddressRequired" , true ) . put ( "billingAddressParameters" , new JSONObject () . put ( "format" , "FULL" ) ) ); }
Extend your configuration with information about how to tokenize the payment method.
Kotlin
private val cardPaymentMethod : JSONObject = baseCardPaymentMethod () . put ( "tokenizationSpecification" , gatewayTokenizationSpecification )
Java
private static JSONObject getCardPaymentMethod () throws JSONException { return getBaseCardPaymentMethod () . put ( "tokenizationSpecification" , getGatewayTokenizationSpecification ()); }
For more information, see the reference documentation for the CardParameters
object
.
Step 2: Create a PaymentsClient instance
Create a PaymentsClient
instance to interact with the Google Pay API.
Kotlin
fun createPaymentsClient ( context : Context ): PaymentsClient { val walletOptions = Wallet . WalletOptions . Builder () . setEnvironment ( Constants . PAYMENTS_ENVIRONMENT ) . build () return Wallet . getPaymentsClient ( context , walletOptions ) }
Java
public static PaymentsClient createPaymentsClient ( Context context ) { Wallet . WalletOptions walletOptions = new Wallet . WalletOptions . Builder (). setEnvironment ( Constants . PAYMENTS_ENVIRONMENT ). build (); return Wallet . getPaymentsClient ( context , walletOptions ); }
Step 3: Determine readiness to pay with the Google Pay API
Add your allowed payment methods to your base request object with the following code snippet:
Kotlin
fun isReadyToPayRequest (): JSONObject? = try { baseRequest . put ( "allowedPaymentMethods" , JSONArray (). put ( baseCardPaymentMethod ())) } catch ( e : JSONException ) { null }
Java
public static JSONObject getIsReadyToPayRequest () { try { return getBaseRequest () . put ( "allowedPaymentMethods" , new JSONArray (). put ( getBaseCardPaymentMethod ())); } catch ( JSONException e ) { return null ; } }
Before you display the Google Pay button, call the isReadyToPay
API to determine if the user can
make payments with the Google Pay API. For a full list of configuration properties, see the IsReadyToPayRequest
JSON object documentation
.
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 ) } } }
Kotlin
(coroutines)
private suspend fun fetchCanUseGooglePay (): Boolean { val request = IsReadyToPayRequest . fromJson ( PaymentsUtil . isReadyToPayRequest (). toString ()) return paymentsClient . isReadyToPay ( request ). await () }
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 ()); } } }); }
Step 4: Add a Google Pay payment button
Add a Google Pay payment button to your app to encourage shoppers to check out with payment methods that are supported by the Google Pay API and your app.
For more information about available button types, colors, and display requirements, see the ButtonOptions reference.
Add the PayButton
layout to your application's checkout layout:
Kotlin
(Compose)
PayButton ( modifier = Modifier . testTag ( "payButton" ) . fillMaxWidth (), onClick = onGooglePayButtonClick , allowedPaymentMethods = PaymentsUtil . allowedPaymentMethods . toString ()
XML
< com . google . android . gms . wallet . button . PayButton android : id = "@+id/googlePayButton" android : layout_width = "match_parent" android : layout_height = "wrap_content" android : layout_marginBottom = "20dp" / >
If you are adding the Google Pay button using XML...
Go to the Android activity and initialize the Google Pay button alongside other UI elements:
Kotlin
override fun onCreate ( savedInstanceState : Bundle?) { super . onCreate ( savedInstanceState ) // Use view binding to access the UI elements layout = ActivityCheckoutBinding . inflate ( layoutInflater ) setContentView ( layout . root ) // Setup buttons googlePayButton = layout . googlePayButton googlePayButton . initialize ( ButtonOptions . newBuilder () . setAllowedPaymentMethods ( PaymentsUtil . allowedPaymentMethods . toString ()). build () ) googlePayButton . setOnClickListener { requestPayment () } // Check Google Pay availability model . canUseGooglePay . observe ( this , Observer ( :: setGooglePayAvailable )) }
Java
private void initializeUi () { // Use view binding to access the UI elements ActivityCheckoutBinding layoutBinding = ActivityCheckoutBinding . inflate ( getLayoutInflater ()); setContentView ( layoutBinding . getRoot ()); // The Google Pay button is a layout file – take the root view googlePayButton = layoutBinding . googlePayButton ; try { googlePayButton . initialize ( ButtonOptions . newBuilder () . setAllowedPaymentMethods ( PaymentsUtil . getAllowedPaymentMethods (). toString ()). build () ); googlePayButton . setOnClickListener ( this :: requestPayment ); } catch ( JSONException e ) { // Keep Google Pay button hidden (consider logging this to your app analytics service) } }
Step 5: Create a PaymentDataRequest object
A PaymentDataRequest
JSON object
describes the information that you request from a payer in a Google Pay payment sheet. This includes
information about the transaction price and the status of the provided price. For more
information, see TransactionInfo
JSON object documentation
.
The following blocks add information about the merchant and the transaction to
the PaymentDataRequest
object needed to start the payment process with Google Pay.
Kotlin
private fun getTransactionInfo ( price : String ): JSONObject = JSONObject () . 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 { return new JSONObject () . put ( "totalPrice" , price ) . put ( "totalPriceStatus" , "FINAL" ) . put ( "countryCode" , Constants . COUNTRY_CODE ) . put ( "currencyCode" , Constants . CURRENCY_CODE ) . put ( "checkoutOption" , "COMPLETE_IMMEDIATE_PURCHASE" ); }
Kotlin
private val merchantInfo : JSONObject = JSONObject (). put ( "merchantName" , "Example Merchant" )
Java
private static JSONObject getMerchantInfo () throws JSONException { return new JSONObject (). put ( "merchantName" , "Example Merchant" ); }
Assign your base request object to a new PaymentDataRequest
JSON object.
Then, add the payment methods supported by your application, such as any configuration of additional data
expected in the response. Finally, add information about the transaction and the merchant who makes the request:
Kotlin
fun getPaymentDataRequest ( priceLabel : String ): JSONObject = baseRequest . put ( "allowedPaymentMethods" , allowedPaymentMethods ) . put ( "transactionInfo" , getTransactionInfo ( priceLabel )) . put ( "merchantInfo" , merchantInfo ) . put ( "shippingAddressRequired" , true ) . put ( "shippingAddressParameters" , JSONObject () . put ( "phoneNumberRequired" , false ) . put ( "allowedCountryCodes" , JSONArray ( listOf ( "US" , "GB" ))) )
Java
public static JSONObject getPaymentDataRequest ( String priceLabel ) { try { return PaymentsUtil . getBaseRequest () . put ( "allowedPaymentMethods" , getAllowedPaymentMethods ()) . put ( "transactionInfo" , getTransactionInfo ( priceLabel )) . put ( "merchantInfo" , getMerchantInfo ()) . put ( "shippingAddressRequired" , true ) . put ( "shippingAddressParameters" , new JSONObject () . put ( "phoneNumberRequired" , false ) . put ( "allowedCountryCodes" , new JSONArray ( Constants . SHIPPING_SUPPORTED_COUNTRIES )) ); } catch ( JSONException e ) { return null ; } }
The PaymentDataRequest
object is a Parcelable
that represents a payment data request. The PaymentDataRequest
provides information
that's necessary in order to support a payment.
For more information, see the PaymentDataRequest
JSON object documentation
.
Step 6: Initiate the payment process with Google Pay
To start the payment process, call the loadPaymentData
request using the PaymentsClient
object. This call returns a Task
object with the result of the operation.
First, create the loadPaymentData
task, using the request created in the previous step:
Kotlin
fun getLoadPaymentDataTask ( priceLabel : String ): Task<PaymentData> { val paymentDataRequestJson = PaymentsUtil . getPaymentDataRequest ( priceLabel ) val request = PaymentDataRequest . fromJson ( paymentDataRequestJson . toString ()) return paymentsClient . loadPaymentData ( request ) }
Java
public Task<PaymentData> getLoadPaymentDataTask ( String priceLabel ) { JSONObject paymentDataRequestJson = PaymentsUtil . getPaymentDataRequest ( priceLabel ); if ( paymentDataRequestJson == null ) { return null ; } PaymentDataRequest request = PaymentDataRequest . fromJson ( paymentDataRequestJson . toString ()); return paymentsClient . loadPaymentData ( request ); }
To process the result, use one of the activity result contracts
in the API. This example uses GetPaymentDataResult
which yields an object with information about the operation in addition to the result itself:
Kotlin
private val paymentDataLauncher = registerForActivityResult ( GetPaymentDataResult ()) { taskResult - > when ( taskResult . status . statusCode ) { CommonStatusCodes . SUCCESS - > { taskResult . result !! . let { Log . i ( "Google Pay result:" , it . toJson ()) model . setPaymentData ( it ) } } //CommonStatusCodes.CANCELED -> The user canceled //CommonStatusCodes.DEVELOPER_ERROR -> The API returned an error (it.status: Status) //else -> Handle internal and other unexpected errors } }
Java
private final ActivityResultLauncher<Task<PaymentData> > paymentDataLauncher = registerForActivityResult ( new GetPaymentDataResult (), result - > { int statusCode = result . getStatus (). getStatusCode (); switch ( statusCode ) { case CommonStatusCodes . SUCCESS : handlePaymentSuccess ( result . getResult ()); break ; //case CommonStatusCodes.CANCELED: The user canceled case CommonStatusCodes . DEVELOPER_ERROR : handleError ( statusCode , result . getStatus (). getStatusMessage ()); break ; default : handleError ( statusCode , "Unexpected non API" + " exception when trying to deliver the task result to an activity!" ); break ; } });
Before presenting the user with a confirmation of their purchase, extract the payment token
from the PaymentData
result object, and use this token to create the payment transaction
with your gateway.
For more information about the result object, see the PaymentData
JSON object reference
.
Now, use the activity result launcher and the task to show the Google Pay payment selector:
Kotlin
private fun requestPayment () { val task = model . getLoadPaymentDataTask ( priceLabel = "50.2" ) task . addOnCompleteListener ( paymentDataLauncher :: launch ) }
Kotlin
(coroutines)
private fun requestPayment () { lifecycleScope . launch { val task = model . getLoadPaymentDataTask ( priceLabel = "50.2" ) paymentDataLauncher . launch ( task . awaitTask ()) } }
Java
public void requestPayment ( View view ) { // The price provided to the API should include taxes and shipping. final Task<PaymentData> task = model . getLoadPaymentDataTask ( "50.2" ); task . addOnCompleteListener ( paymentDataLauncher :: launch ); }
Step 7: Enable Callbacks using Dynamic Price Updates
First, update your PaymentDataRequest
object to enable callbacks.
Kotlin
fun getPaymentDataRequest ( price : String ): JSONObject { return getBaseRequest () . put ( "allowedPaymentMethods" , getAllowedPaymentMethods ()) . put ( "transactionInfo" , getTransactionInfo ( price )) . put ( "merchantInfo" , JSONObject (). put ( "merchantName" , Constants . MERCHANT_NAME )) . put ( "shippingAddressRequired" , true ) . put ( "shippingOptionRequired" , true ) . put ( "shippingOptionParameters" , getShippingOptionParameters ()) . put ( "shippingAddressParameters" , JSONObject () . put ( "phoneNumberRequired" , false ) . put ( "allowedCountryCodes" , JSONArray ( Constants . SHIPPING_SUPPORTED_COUNTRIES )) ) . put ( "callbackIntents" , JSONArray () . put ( "PAYMENT_AUTHORIZATION" ) . put ( "SHIPPING_ADDRESS" ) . put ( "SHIPPING_OPTION" ) ) }
Java
public static JSONObject getPaymentDataRequest ( String priceLabel ) throws JSONException { return getBaseRequest () . put ( "allowedPaymentMethods" , getAllowedPaymentMethods ()) . put ( "transactionInfo" , getTransactionInfo ( priceLabel )) . put ( "merchantInfo" , new JSONObject (). put ( "merchantName" , Constants . MERCHANT_NAME )) . put ( "shippingAddressRequired" , true ) . put ( "shippingOptionRequired" , true ) . put ( "shippingOptionParameters" , getShippingOptionParameters ()) . put ( "shippingAddressParameters" , new JSONObject () . put ( "phoneNumberRequired" , false ) . put ( "allowedCountryCodes" , new JSONArray ( Constants . SHIPPING_SUPPORTED_COUNTRIES ))) . put ( "callbackIntents" , new JSONArray () . put ( "PAYMENT_AUTHORIZATION" ) . put ( "SHIPPING_ADDRESS" ) . put ( "SHIPPING_OPTION" )); }
Next, implement MerchantPaymentDataCallbacks
and MerchantPaymentDataCallbacksService
logic by extending BasePaymentDataCallbacks
and BasePaymentDataCallbacksService
, respectively, to handle callback events.
MerchantPaymentDataCallbacks
Kotlin
/* * Copyright 2024 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.pay.activity import android.os.Bundle import android.util.Log import com.google.android.gms.samples.pay.Constants import com.google.android.gms.samples.pay.util.PaymentsUtil import com.google.android.gms.wallet.PaymentData import com.google.android.gms.wallet.callback.BasePaymentDataCallbacks import com.google.android.gms.wallet.callback.IntermediatePaymentData import com.google.android.gms.wallet.callback.OnCompleteListener import com.google.android.gms.wallet.callback.PaymentAuthorizationResult import com.google.android.gms.wallet.callback.PaymentDataRequestUpdate import org.json.JSONException import org.json.JSONObject /** * Implementation of [BasePaymentDataCallbacks] that handles callbacks from the Google Pay * payment sheet. */ class MerchantPaymentDataCallbacks : BasePaymentDataCallbacks () { /** * onPaymentDataChanged callback - Handles payment data changes in the payment sheet such as * shipping address and shipping options. */ override fun onPaymentDataChanged ( request : IntermediatePaymentData?, onCompleteListener : OnCompleteListener<PaymentDataRequestUpdate> , ) { val newSavedState = Bundle () try { val intermediatePaymentDataJson = JSONObject ( request ?. toJson () ?: "{}" ) val paymentDataRequestUpdateJson = PaymentsUtil . getPaymentDataRequestUpdate ( intermediatePaymentDataJson , Constants . BASE_PRICE , ) newSavedState . putString ( "paymentDataRequestUpdate" , paymentDataRequestUpdateJson . toString ()) // return the generated data to the client onCompleteListener . complete ( PaymentDataRequestUpdate . fromJson ( paymentDataRequestUpdateJson . toString ()) . withUpdatedSavedState ( newSavedState ), ) } catch ( e : Exception ) { Log . e ( "MerchantPaymentDataCallbacks" , "onPaymentDataChanged failed" , e ) } } /** * onPaymentAuthorized callback - Called when a payment is authorized in the payment sheet. */ override fun onPaymentAuthorized ( request : PaymentData?, onCompleteListener : OnCompleteListener<PaymentAuthorizationResult> , ) { Log . i ( "Invocation" , "onPaymentAuthorized invoked" ) val savedState = Bundle () val paymentAuthorizationResultJson = JSONObject () try { val paymentDataJson = JSONObject ( request ?. toJson () ?: "{}" ) val info = paymentDataJson . getJSONObject ( "paymentMethodData" ). getJSONObject ( "info" ) // example of how to check for a card network val cardNetwork = info . getString ( "cardNetwork" ) if ( cardNetwork == "VISA" ) { paymentAuthorizationResultJson . put ( "transactionState" , "SUCCESS" ) } else { paymentAuthorizationResultJson . put ( "transactionState" , "ERROR" ) val error = JSONObject (). apply { put ( "reason" , "PAYMENT_DATA_INVALID" ) put ( "message" , "Only Visa is accepted!" ) put ( "intent" , "PAYMENT_AUTHORIZATION" ) } paymentAuthorizationResultJson . put ( "error" , error ) } onCompleteListener . complete ( PaymentAuthorizationResult . fromJson ( paymentAuthorizationResultJson . toString ()) . withUpdatedSavedState ( savedState ), ) } catch ( e : Exception ) { Log . e ( "MerchantPaymentDataCallbacks" , "onPaymentAuthorized failed" , e ) } } }
Java
/* * 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.pay.activity ; import android.os.Bundle ; import android.util.Log ; import androidx.annotation.NonNull ; import com.google.android.gms.samples.pay.Constants ; import com.google.android.gms.samples.pay.util.PaymentsUtil ; import com.google.android.gms.wallet.PaymentData ; import com.google.android.gms.wallet.callback.BasePaymentDataCallbacks ; import com.google.android.gms.wallet.callback.IntermediatePaymentData ; import com.google.android.gms.wallet.callback.OnCompleteListener ; import com.google.android.gms.wallet.callback.PaymentAuthorizationResult ; import com.google.android.gms.wallet.callback.PaymentDataRequestUpdate ; import java.util.Objects ; import org.json.JSONException ; import org.json.JSONObject ; /** * Implementation of {@link BasePaymentDataCallbacks} that handles callbacks from the Google Pay * payment sheet. */ public class MerchantPaymentDataCallbacks extends BasePaymentDataCallbacks { /** * Handles payment data changes in the payment sheet such as shipping address and shipping * options. Values passed back to it will update the payment sheet. * * @param request The updated payment data from the payment sheet. * @param onCompleteListener The listener to call when the update is complete. */ @Override public void onPaymentDataChanged ( IntermediatePaymentData request , @NonNull OnCompleteListener<PaymentDataRequestUpdate> onCompleteListener ) { // define prices and variables JSONObject paymentDataRequestUpdate ; Bundle newSavedState = new Bundle (); try { assert request != null ; JSONObject intermediatePaymentData = new JSONObject ( request . toJson ()); // define transaction info paymentDataRequestUpdate = PaymentsUtil . getPaymentDataRequestUpdate ( intermediatePaymentData , Constants . BASE_PRICE ); newSavedState . putString ( "paymentDataRequestUpdate" , paymentDataRequestUpdate . toString ()); // return the generated data to the client onCompleteListener . complete ( PaymentDataRequestUpdate . fromJson ( paymentDataRequestUpdate . toString ()) . withUpdatedSavedState ( newSavedState )); } catch ( JSONException e ) { Log . e ( "SampleMerchantPaymentDataCallbacksService" , e . getMessage (), e ); throw new RuntimeException ( e ); } } /** * Called when a payment is authorized in the payment sheet. Use this callback to perform any * final validation on the payment data. Throwing an error will allow the user to make * corrections to the payment sheet. * * @param request The payment data from the payment sheet. * @param onCompleteListener The listener to call when the authorization is complete. */ @Override public void onPaymentAuthorized ( PaymentData request , @NonNull OnCompleteListener<PaymentAuthorizationResult> onCompleteListener ) { Log . i ( "Invocation" , "onPaymentAuthorized invoked" ); Bundle savedState = new Bundle (); JSONObject paymentAuthorizationResultJson = new JSONObject (); try { assert request != null ; JSONObject paymentDataJson = new JSONObject ( request . toJson ()); JSONObject info = paymentDataJson . getJSONObject ( "paymentMethodData" ). getJSONObject ( "info" ); // example of how to check for a card network String cardNetwork = info . getString ( "cardNetwork" ); if ( cardNetwork . equals ( "VISA" )) { paymentAuthorizationResultJson . put ( "transactionState" , "SUCCESS" ); } else { paymentAuthorizationResultJson . put ( "transactionState" , "ERROR" ); JSONObject error = new JSONObject () . put ( "reason" , "PAYMENT_DATA_INVALID" ) . put ( "message" , "Only Visa is accepted!" ) . put ( "intent" , "PAYMENT_AUTHORIZATION" ); paymentAuthorizationResultJson . put ( "error" , error ); } onCompleteListener . complete ( PaymentAuthorizationResult . fromJson ( paymentAuthorizationResultJson . toString ()) . withUpdatedSavedState ( savedState )); } catch ( JSONException e ) { Log . e ( "SampleMerchantPaymentDataCallbacksService" , Objects . requireNonNull ( e . getMessage ())); throw new RuntimeException ( e ); } } }
MerchantPaymentDataCallbacksService
Kotlin
package com.google.android.gms.samples.pay.service import com.google.android.gms.wallet.callback.BasePaymentDataCallbacks import com.google.android.gms.samples.pay.activity.MerchantPaymentDataCallbacks import com.google.android.gms.wallet.callback.BasePaymentDataCallbacksService /** * Service class which hosts the payment data callbacks initiated by Google Play services * within a {@link PaymentsClient#loadPaymentData(PaymentDataRequest)}. * * <p>The callbacks are implemented through MerchantPaymentDataCallbacks returned from {@link #createPaymentDataCallbacks()}. */ class MerchantPaymentDataCallbacksService : BasePaymentDataCallbacksService () { override fun createPaymentDataCallbacks (): BasePaymentDataCallbacks { return MerchantPaymentDataCallbacks () } }
Java
/* * Copyright 2024 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.pay.service ; import androidx.annotation.NonNull ; import com.google.android.gms.samples.pay.activity.MerchantPaymentDataCallbacks ; import com.google.android.gms.wallet.callback.BasePaymentDataCallbacks ; import com.google.android.gms.wallet.callback.BasePaymentDataCallbacksService ; /** * Service class which hosts the payment data callbacks initiated by Google Play services within a * {@link * com.google.android.gms.wallet.PaymentsClient#loadPaymentData(com.google.android.gms.wallet.PaymentDataRequest)}. * * <p>The callbacks are implemented through MerchantPaymentDataCallbacks returned from {@link * #createPaymentDataCallbacks()}. */ public class MerchantPaymentDataCallbacksService extends BasePaymentDataCallbacksService { @NonNull @Override protected BasePaymentDataCallbacks createPaymentDataCallbacks () { return new MerchantPaymentDataCallbacks (); } }
Finally, update your AndroidManifest.xml file to specify com.google.android.gms.permission.BIND_PAYMENTS_CALLBACK_SERVICE
as its permission and include an intent filter with the action name com.google.android.gms.wallet.callback.PAYMENT_DATA_CALLBACKS
.
Kotlin
< service android : name = "com.google.android.gms.samples.pay.service.MerchantPaymentDataCallbacksService" android : permission = "com.google.android.gms.permission.BIND_PAYMENTS_CALLBACK_SERVICE" android : enabled = "true" android : exported = "true" > < intent - filter > < action android : name = "com.google.android.gms.wallet.callback.PAYMENT_DATA_CALLBACKS" / > < / intent - filter > < / service> . xml
Java
< service android : name = "com.google.android.gms.samples.pay.service.MerchantPaymentDataCallbacksService" android : enabled = "true" android : exported = "true" android : permission = "com.google.android.gms.permission.BIND_PAYMENTS_CALLBACK_SERVICE" > < intent - filter > < action android : name = "com.google.android.gms.wallet.callback.PAYMENT_DATA_CALLBACKS" / > < / intent - filter > < / service> . xml

