Tutorial
Stay organized with collections
Save and categorize content based on your preferences.
Page Summary
-
This tutorial explains how to integrate Google Pay API into your web application for accepting payment cards.
-
It covers crucial steps like setting up the API, adding a Google Pay button, and handling payment requests.
-
Tokenization is a key element, allowing secure processing of card information via your payment provider.
-
The tutorial provides guidance and code snippets for various payment gateways and their integration.
-
It includes optional features like dynamic price updates and promo codes for enhanced functionality.
Follow the steps in this tutorial to integrate a web application with the Google Pay API, and to configure it to accept payment cards.
- Step 1: Define your Google Pay API version.
- Step 2: Choose a payment tokenization method.
- Step 3: Define supported payment card networks.
- Step 4: Describe your allowed payment methods.
- Step 5: Load the Google Pay API JavaScript library.
- Step 6: Determine readiness to pay with the Google Pay API.
- Step 7: Add a Google Pay payment button.
- Step 8: Create a PaymentDataRequest object.
- Step 9: Register an event handler for user gestures.
- Step 10 (optional): Set up Authorize Payments.
- Step 11 (optional for shipping enabled): Set up Dynamic Price Updates.
- Step 12 (optional for promo codes): Set up Promo Codes.
Step 1: Define your Google Pay API version
Declare the version of the Google Pay API that your site uses. The major and minor versions are required in the fields of each passed object, and are included in the response.
The following code sample shows declared API versions:
constbaseRequest={ apiVersion:2, apiVersionMinor:0 };
Step 2: Request a payment token for your payment provider
Google encrypts information about a payer's selected card for secure processing by a payment provider.
consttokenizationSpecification={ type:'PAYMENT_GATEWAY', parameters:{ 'gateway':'example', '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" |
| A-IT |
"gateway": "aitecomm" "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" |
| African Payment Solution (PTY) Ltd t/a LekkaPay |
"gateway": "lekkapay" "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" |
| Bancstac |
"gateway": "bancstac" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Bank 131 |
"gateway": "bank131" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Bank Muscat |
"gateway": "bankmuscat" "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" |
| Callpay |
"gateway": "callpay" "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" |
| CIBPAY MMC |
"gateway": "cibpay" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| City Bank PLC |
"gateway": "citybank" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| 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" |
| Comax (Native Data LTD) |
"gateway": "comaxpay" "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" |
| Coriunder Limited |
"gateway": "coriunder" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" No developer docs available |
| 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" |
| Dibsy |
"gateway": "dibsy" "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" |
| Doremi-Tech |
"gateway": "doremitech" "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" |
| EBizCharge |
"gateway": "ebizcharge" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| eCard |
"gateway": "ecard" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Ecart Pay |
"gateway": "ecartpay" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Ecentric Payment Systems |
"gateway": "ecentric" "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 |
| ECRYPT INC |
"gateway": "ecrypt" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| 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 |
| EuPlatesc - Europayment Services SRL |
"gateway": "euplatesc" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Euronet Merchant Services (epay) |
"gateway": "emspi" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Evertec Placetopay S.A.S |
"gateway": "placetopay" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| 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" |
| finby |
"gateway": "finby" "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" |
| Flintn |
"gateway": "flintn" "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" |
| FPAY |
"gateway": "fizzapay" "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" |
| Gatewell Payments |
"gateway": "gatewellpayments" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| GBPayments |
"gateway": "gbpayments" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| geidea |
"gateway": "geidea" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Getnet |
"gateway": "getnetpayments" "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" |
| HiPay |
"gateway": "hipay" "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" |
| Interpay Llp |
"gateway": "interpaypro" "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 |
| Juspay |
"gateway": "juspay" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| 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" |
| Kronor.io |
"gateway": "kronor" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Kyrgyzkommertsbank |
"gateway": "kkbpay" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Lapsa Payments |
"gateway": "lapsapayments" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Lemonway |
"gateway": "lemonway" "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" |
| MADFIN TECH |
"gateway": "madfingate" "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" |
| Maya |
"gateway": "mayaph" "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" |
| Mobbex |
"gateway": "mobbex" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" No developer docs available |
| 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" |
| MTB BANK, PJSC |
"gateway": "mtb" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" No developer docs available |
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" |
| Mycar Pay |
"gateway": "mycarpay" "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" |
| Neopayment |
"gateway": "neopayment" "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 |
"gateway": "siavpos" "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" |
| North |
"gateway": "north" "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 |
| Orient Commercial Joint Stock Bank (OCB) |
"gateway": "ocbcheckout" "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" |
| Pay N Seconds |
"gateway": "paynseconds" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" No developer docs available |
| 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" |
| Paycore |
"gateway": "twisto" "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" |
| Payku |
"gateway": "payku" "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" |
| PayPal Complete Payments |
"gateway": "paypalppcp" "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" |
| PayRex |
"gateway": "payrexhq" "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" |
| Paystack Payments Limited |
"gateway": "paystack" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Pay360 |
"gateway": "pay360" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| PayTabs |
"gateway": "paytabs" "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" |
| Pifagorus Ltd |
"gateway": "pifagorusgate" "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" |
| PortPos |
"gateway": "portpos" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Powerpay |
"gateway": "powerpay" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Praxis |
"gateway": "praxistech" "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" |
| Revenue Monster |
"gateway": "revenuemonster" "gatewayMerchantId": "YOUR_REVOLUT_ORDER_TOKEN" |
| Revolut |
"gateway": "revolut" "gatewayMerchantId": "YOUR_REVOLUT_ORDER_TOKEN" |
| RocketGate |
"gateway": "rocketgate" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| revPAY (Revenue Harvest) |
"gateway": "revpay" "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" |
| Tilopay |
"gateway": "tilopay" "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" |
| Transactworld CY |
"gateway": "TransactworldCY" "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" |
| TWPAYZ |
"gateway": "transactworlduk" "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" |
| Unipaas payments technologies |
"gateway": "unipaas" "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" |
| Verifone Payments BV |
"gateway": "twocheckoutpay" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Very Good Security |
"gateway": "verygoodsecurity" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Vesta |
"gateway": "vesta" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Victoriabank |
"gateway": "victoriabank" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Vindicia |
"gateway": "vindicia" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Vinr |
"gateway": "vinrpay" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| Viva Wallet |
"gateway": "vivawallet" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| VTEX |
"gateway": "vtex" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
| W-HA |
"gateway": "wha" "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" |
| Wondergate |
"gateway": "wondergate" "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" |
| Zift |
"gateway": "zift" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" No developer docs available |
| Zuora |
"gateway": "zuora" "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID" |
example is a valid gateway name in the test
environment. If you want to try out the API, you can leave the code sample above as-is. When you
use the example gateway, your site doesn't receive card data
capable of a transaction, but the user flow looks the same.
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.
Step 3: Define supported payment card networks
Define the card networks accepted by your site. See the following code sample:
constallowedCardNetworks=["AMEX","DISCOVER","INTERAC","JCB","MASTERCARD","VISA"];
The Google Pay API might return cards on file on Google.com (PAN_ONLY) or a device
token on an Android-powered device authenticated with a 3-D Secure cryptogram
(CRYPTOGRAM_3DS). You can control whether both methods or just one of them can be
returned.
Before you set allowedCardAuthMethods, confirm with your payment processor and
acquirer on whether device tokens (CRYPTOGRAM_3DS) are supported in your region.
See the following code sample:
constallowedCardAuthMethods=["PAN_ONLY","CRYPTOGRAM_3DS"];
For more information, see
CardParameters
in our Object reference documentation. Also, check with your gateway or processor for the card
networks that are supported, and for support for Android device tokens.
- Make sure that you also apply your existing risk checks and controls for payment transactions to Google Pay transactions. Google Pay validation and fraud checks aren't intended to replace your risk management processes.
- If you support
PAN_ONLY, ensure that you trigger 3D Secure (step-up authentication) for Google Pay PANPAN_ONLYtransactions in the same way that you trigger 3D Secure for normal card transactions.
Step 4: Describe your allowed payment methods
To describe your allowed payment methods, complete the following steps:
- Combine your supported authentication methods and supported card networks in order to
describe your site's support for the
CARDpayment method. See the following code sample:constbaseCardPaymentMethod={ type:'CARD', parameters:{ allowedAuthMethods:allowedCardAuthMethods, allowedCardNetworks:allowedCardNetworks } };
- Extend the base card payment method object to describe information you expect to be returned
to your application. Include a description of the tokenized payment data. See the following
code sample:
constcardPaymentMethod=Object.assign( {tokenizationSpecification:tokenizationSpecification}, baseCardPaymentMethod );
For more information about supported parameters, see
CardParameters.
Google Pay currently only supports the CARD payment method type.
Step 5: Load the Google Pay API JavaScript library
<iframe>:
- If the checkout page loading the Google Pay button is getting embedded with an
<iframe>, make sure to set theallow="payment"attribute. If nested iframes are involve, this attribute must be set for every<iframe> - Additionally, if the
<iframe>does not set thesrcattribute (the content of the iframe is created dynamically), the payment API permission attribute needs to beallow="payment *".
To load the Google Pay API JavaScript library, complete the following steps:
- Include Google's hosted JavaScript on your page. See the following code sample:
<script async src="https://pay.google.com/gp/p/js/pay.js" onload="console.log('TODO: add onload function')"> </script>Note: If your page uses a Content Security Policy (CSP) that requires nonces for script execution, include your CSPnonceattribute in the<script>tag loadingpay.js.<script async src="https://pay.google.com/gp/p/js/pay.js" nonce="your-nonce-value" onload="console.log('TODO: add onload function')"> </script> - After the Google Pay API JavaScript library loads, initialize a
PaymentsClientobject. Initial development uses aTESTenvironment, which returns dummy payment methods that are suitable to reference the structure of a payment response. In this environment, a selected payment method isn't capable of a transaction. See the following code sample.Note: We recommend that you only initializepaymentsClientonce. Use the same instance when you invoke all of the other APIs, likeCreateButton,IsReadyToPay,PrefetchPaymentData, andLoadPaymentData.constpaymentsClient= newgoogle.payments.api.PaymentsClient({environment:'TEST'});
Content Security Policy (CSP) Nonce: If your application uses a strict Content Security Policy, pass an optionalnonceproperty inPaymentOptions. Google Pay attaches this nonce attribute to all dynamically injected<style>and<script>elements, including elements created bycreateButton().constpaymentsClient= newgoogle.payments.api.PaymentsClient({ environment:'TEST', nonce:'your-csp-nonce' });
For more information about the requirements for a
PRODUCTIONenvironment that returns chargeable payment methods, see the Integration checklist.
Step 6: Determine readiness to pay with the Google Pay API
To determine readiness to pay with the Google Pay API, complete the following steps:
- Add your allowed payment methods to your base request object. See the following code
sample:
constisReadyToPayRequest=Object.assign({},baseRequest); isReadyToPayRequest.allowedPaymentMethods=[baseCardPaymentMethod];
- Call
isReadyToPay()to determine if the Google Pay API is supported by the current device and browser for your specified payment methods. See the following code sample:paymentsClient.isReadyToPay(isReadyToPayRequest) .then(function(response){ if(response.result){ // add a Google Pay payment button } }) .catch(function(err){ // show error in developer console for debugging console.error(err); });
Step 7: Add a Google Pay payment button
Add a Google Pay payment button to your page to encourage shoppers to check out with payment methods that are supported by the Google Pay API and your site. For more information about available button types, colors, and display requirements, see the Brand guidelines.
See the following payment button code sample:
constbutton= paymentsClient.createButton({onClick:()=>console.log('TODO: click handler'), allowedPaymentMethods:[]});// same payment methods as for the loadPaymentData() API call document.getElementById('container').appendChild(button);
Step 8: Create a PaymentDataRequest object
To create a PaymentDataRequest object, complete the following steps:
- Build a JavaScript object that describes your site's support for the Google Pay API. For a
full list of supported properties, see
PaymentDataRequest. See the following code sample:constpaymentDataRequest=Object.assign({},baseRequest);
- Add the payment methods supported by your app, such as any configuration of additional data
that's expected in the response. See the following code sample:
paymentDataRequest.allowedPaymentMethods=[cardPaymentMethod];
- Define a total price and currency for a shopper to authorize. See the following code
sample:
Important: Merchants that process transactions in the European Economic Area (EEA) or any other countries that are subject to Strong Customer Authentication (SCA) must include the
countryCode,totalPrice, andmerchantNameparameters to meet SCA requirements.paymentDataRequest.transactionInfo={ totalPriceStatus:'FINAL', totalPrice:'123.45', currencyCode:'USD', countryCode:'US' };
- Provide a user-visible merchant name, and use our
TESTmerchantIdvalue when inTEST. For more details, and for information on when to replace theTESTmerchantIdvalue, seeMerchantInfo. See the following code sample of a user-visible merchant name:paymentDataRequest.merchantInfo={ merchantName:'Example Merchant' merchantId:'12345678901234567890' };
Note: OurTESTmerchantIdvalue is numeric. Your specificmerchantIdvalue can be numeric or alphanumeric. Review MerchantInfo for more details on how to obtain your specificmerchantId.
Step 9: Register an event handler for user gestures
To register an event handler for user gestures, complete the following steps:
- Register a click event handler for the purchase button. The event handler calls
loadPaymentData()immediately after it interacts with the Google Pay, payment button. - After a Google user grants permission for your site to receive information about the user's selected form of payment and optional contact data, handle the response from the Google Pay API.
- Extract the payment token from the
paymentDataresponse. If you implement a gateway integration, pass this token to your gateway without any modifications.Note: In aTESTenvironment, a payment response includes summary data about the selected payment method that's suitable for display on a confirmation page. The payment response doesn't include a payment method that's capable of a transaction.paymentsClient.loadPaymentData(paymentDataRequest).then(function(paymentData){ // if using gateway tokenization, pass this token without modification paymentToken=paymentData.paymentMethodData.tokenizationData.token; }).catch(function(err){ // show error in developer console for debugging console.error(err); });
Step 10 (optional): Set up Authorize Payments
Authorize Payments is used to start the payment process and acknowledge a payment's authorization status. To set up Authorize Payments, take the following steps:
- Register an
onPaymentAuthorized()callback inPaymentOptions. - Call the
loadPaymentData()function with thePAYMENT_AUTHORIZATIONcallback intent. - Implement
onPaymentAuthorized().
Register onPaymentAuthorized callbacks
The following code sample shows how to register
onPaymentAuthorized
callbacks:
{ environment:"TEST", merchantInfo:{ merchantName:"Example Merchant", merchantId:"12345678901234567890" }, paymentDataCallbacks:{ onPaymentAuthorized:onPaymentAuthorized } }
Load payment data with callback intents
The following code sample shows how to initialize the payment sheet with Authorize Payments:
constpaymentDataRequest=Object.assign({},baseRequest); paymentDataRequest.allowedPaymentMethods=[cardPaymentMethod]; paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); paymentDataRequest.merchantInfo={ merchantName:'Example Merchant' merchantId:'12345678901234567890', }; paymentDataRequest.callbackIntents=["PAYMENT_AUTHORIZATION"];
Handle onPaymentAuthorized callbacks
The onPaymentAuthorized()
callback is invoked with a
PaymentData object by Google
after a payer approves payment through a user gesture, such as if they click Pay.
The callback returns a Promise<PaymentAuthorizationResult> value. The
PaymentAuthorizationResult
object has a SUCCESS or ERROR transaction state status. Upon success,
the payment sheet is closed successfully. If you encounter an error, the payment sheet renders the
error details returned after the payment is processed. The user can change the payment sheet’s
payment data and authorize the payment again. See the following code sample:
functiononPaymentAuthorized(paymentData){ returnnewPromise(function(resolve,reject){ // handle the response processPayment(paymentData) .then(function(){ resolve({transactionState:'SUCCESS'}); }) .catch(function(){ resolve({ transactionState:'ERROR', error:{ intent:'PAYMENT_AUTHORIZATION', message:'Insufficient funds', reason:'PAYMENT_DATA_INVALID' } }); }); }); }
Step 11 (optional for shipping-enabled): Set up Dynamic Price Updates
Dynamic Price Updates allows a merchant to dynamically update shipping options and transaction information based on a chosen shipping address. Additionally, you can dynamically update transaction information based on a chosen shipping option.
To set up Dynamic Price Updates, take the following steps:
- Register both the
onPaymentAuthorizedandonPaymentDataChangedcallbacks inPaymentOptions. - Call the
loadPaymentData()function with callback intents. For details, see the corresponding example. - Implement
onPaymentAuthorizedandonPaymentDataChanged.
Register PaymentData callback
The following code sample shows that Dynamic Price Updates requires callback functions to be
registered in the PaymentsClient
paymentOptions object.
{ environment:"TEST", merchantInfo:{ merchantName:"Example Merchant", merchantId:"12345678901234567890" }, paymentDataCallbacks:{ onPaymentAuthorized:onPaymentAuthorized, onPaymentDataChanged:onPaymentDataChanged } }
Load payment data with callback intents
The following code sample shows how a payment sheet must be initialized with a required shipping address and shipping options configuration:
constpaymentDataRequest=Object.assign({},baseRequest); paymentDataRequest.allowedPaymentMethods=[cardPaymentMethod]; paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); paymentDataRequest.merchantInfo={ merchantId:'12345678901234567890', merchantName:'Example Merchant' }; paymentDataRequest.callbackIntents=["SHIPPING_ADDRESS","SHIPPING_OPTION","PAYMENT_AUTHORIZATION"]; paymentDataRequest.shippingAddressRequired=true; paymentDataRequest.shippingAddressParameters=getGoogleShippingAddressParameters(); paymentDataRequest.shippingOptionRequired=true;
Handle onPaymentDataChanged callback
The onPaymentDataChanged
callback is invoked with an
IntermediatePaymentData
object, which includes the shipping address and shipping option selected in the payment sheet.
The callback returns a Promise<PaymentDataRequestUpdate>. The
PaymentDataRequestUpdate
object has new transaction information, shipping options,
and a payment data error. This data updates the payment sheet.
Handle any exception cases, such as an unserviceable shipping address or invalid shipping
option, directly in the payment sheet. Set up a
PaymentDataError object to
highlight the reason for the error with an error message to the user. Be sure to include the
related intent in the message. For details on how to set up the object and message, see the
following code sample:
functiononPaymentDataChanged(intermediatePaymentData){ returnnewPromise(function(resolve,reject){ letshippingAddress=intermediatePaymentData.shippingAddress; letshippingOptionData=intermediatePaymentData.shippingOptionData; letpaymentDataRequestUpdate={}; if(intermediatePaymentData.callbackTrigger=="INITIALIZE"||intermediatePaymentData.callbackTrigger=="SHIPPING_ADDRESS"){ if(shippingAddress.administrativeArea=="NJ"){ paymentDataRequestUpdate.error=getGoogleUnserviceableAddressError(); } else{ paymentDataRequestUpdate.newShippingOptionParameters=getGoogleDefaultShippingOptions(); letselectedShippingOptionId=paymentDataRequestUpdate.newShippingOptionParameters.defaultSelectedOptionId; paymentDataRequestUpdate.newTransactionInfo=calculateNewTransactionInfo(selectedShippingOptionId); } } elseif(intermediatePaymentData.callbackTrigger=="SHIPPING_OPTION"){ paymentDataRequestUpdate.newTransactionInfo=calculateNewTransactionInfo(shippingOptionData.id); } resolve(paymentDataRequestUpdate); }); }
Step 12 (optional for promo codes): Set up Promo Codes
Promo Codes allow a merchant to dynamically update shipping options and transaction information based on a provided promotional code.
To set up Promo Codes, take the following steps:
- Register the
onPaymentDataChangedcallbacks inPaymentOptions. - Call the
loadPaymentData()function with callback intents. For details, see the corresponding example. - Implement the
onPaymentDataChanged callback function.
Register Offer callback
The following code sample shows that Promo Codes require callback functions to be
registered in the PaymentsClient
paymentOptions object.
{ environment:"TEST", merchantInfo:{ merchantName:"Example Merchant", merchantId:"12345678901234567890" }, paymentDataCallbacks:{ onPaymentDataChanged:onPaymentDataChanged } }
Load payment data with callback intents
The following code sample shows how a payment sheet must be initialized with an OFFER callback intent:
constpaymentDataRequest=Object.assign({},baseRequest); paymentDataRequest.allowedPaymentMethods=[cardPaymentMethod]; paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); paymentDataRequest.merchantInfo={ merchantId:'12345678901234567890', merchantName:'Example Merchant' }; paymentDataRequest.callbackIntents=["OFFER"];
Handle onPaymentDataChanged callback
The onPaymentDataChanged
callback is invoked with an
IntermediatePaymentData
object, which includes the shipping address and shipping option selected in the payment sheet.
The callback must return a Promise<PaymentDataRequestUpdate>. The
PaymentDataRequestUpdate
object has new transaction information, shipping options, offer data,
and a payment data error. This data updates the payment sheet.
Handle any exception cases, such as an invalid promo code, directly in the payment sheet. Set up a
PaymentDataError object to
highlight the reason for the error with an error message to the user. Be sure to include the
related intent in the message. For details on how to set up the object and message, see the
following code sample, which references an object (validPromoCodes) containing the promo code values:
functiononPaymentDataChanged(intermediatePaymentData){ returnnewPromise(function(resolve,reject){ letredemptionCodes=[]; letshippingOptionData=intermediatePaymentData.shippingOptionData; letpaymentDataRequestUpdate={}; paymentDataRequestUpdate.newTransactionInfo=getGoogleTransactionInfo(); // ensure that promo codes set is unique if(typeofintermediatePaymentData.offerData!='undefined'){ // convert to set then back to array redemptionCodes=Array.from( newSet(intermediatePaymentData.offerData.redemptionCodes) ); } // OPTIONAL: ensure that the newest promo code is the only one applied // redemptionCodes = new Array(redemptionCodes[redemptionCodes.length -1]); // validate promo codes and add descriptions to payment sheet if(intermediatePaymentData.callbackTrigger==='OFFER'){ paymentDataRequestUpdate.newOfferInfo={}; paymentDataRequestUpdate.newOfferInfo.offers=[]; for(redemptionCodeofredemptionCodes){ if(validPromoCodes[redemptionCode]){ paymentDataRequestUpdate=validPromoCodes[redemptionCode].function( validPromoCodes[redemptionCode], paymentDataRequestUpdate ); }else{ paymentDataRequestUpdate.error=getGoogleOfferInvalidError(redemptionCode); } } }
Put it all together
The example code blocks in this section show a complete end-to-end example of the Google Pay API JavaScript library tutorial, Authorize Payments, Dynamic Price Updates, and Promo Codes.
Tutorial
<divid="container"></div><script>/** *DefinetheversionoftheGooglePayAPIreferencedwhencreatingyour *configuration * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest} */ constbaseRequest={ apiVersion:2, apiVersionMinor:0 }; /** *Cardnetworkssupportedbyyoursiteandyourgateway * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} *@todoconfirmcardnetworkssupportedbyyoursiteandgateway */ constallowedCardNetworks=["AMEX","DISCOVER","INTERAC","JCB","MASTERCARD","VISA"]; /** *Cardauthenticationmethodssupportedbyyoursiteandyourgateway * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} *@todoconfirmyourprocessorsupportsAndroiddevicetokensforyour *supportedcardnetworks */ constallowedCardAuthMethods=["PAN_ONLY","CRYPTOGRAM_3DS"]; /** *Identifyyourgatewayandyoursite's gateway merchant identifier * *TheGooglePayAPIresponsewillreturnanencryptedpaymentmethodcapable *ofbeingchargedbyasupportedgatewayafterpayerauthorization * *@todocheckwithyourgatewayontheparameterstopass *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification} */ consttokenizationSpecification={ type:'PAYMENT_GATEWAY', parameters:{ 'gateway':'example', 'gatewayMerchantId':'exampleGatewayMerchantId' } }; /** *Describeyoursite's support for the CARD payment method and its required *fields * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} */ constbaseCardPaymentMethod={ type:'CARD', parameters:{ allowedAuthMethods:allowedCardAuthMethods, allowedCardNetworks:allowedCardNetworks } }; /** *Describeyoursite's support for the CARD payment method including optional *fields * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} */ constcardPaymentMethod=Object.assign( {}, baseCardPaymentMethod, { tokenizationSpecification:tokenizationSpecification } ); /** *Aninitializedgoogle.payments.api.PaymentsClientobjectornullifnotyetset * *@see{@linkgetGooglePaymentsClient} */ letpaymentsClient=null; /** *Configureyoursite's support for payment methods supported by the Google Pay *API. * *EachmemberofallowedPaymentMethodsshouldcontainonlytherequiredfields, *allowingreuseofthisbaserequestwhendeterminingaviewer's ability *topayandlaterrequestingasupportedpaymentmethod * *@returns{object}GooglePayAPIversion,paymentmethodssupportedbythesite */ functiongetGoogleIsReadyToPayRequest(){ returnObject.assign( {}, baseRequest, { allowedPaymentMethods:[baseCardPaymentMethod] } ); } /** *ConfiguresupportfortheGooglePayAPI * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest} *@returns{object}PaymentDataRequestfields */ functiongetGooglePaymentDataRequest(){ constpaymentDataRequest=Object.assign({},baseRequest); paymentDataRequest.allowedPaymentMethods=[cardPaymentMethod]; paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); paymentDataRequest.merchantInfo={ //@todoamerchantIDisavailableforaproductionenvironmentafterapprovalbyGoogle //See{@linkhttps://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integrationchecklist} //merchantId:'12345678901234567890', merchantName:'Example Merchant' }; returnpaymentDataRequest; } /** *ReturnanactivePaymentsClientorinitialize * *@see{@linkhttps://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor} *@returns{google.payments.api.PaymentsClient}GooglePayAPIclient */ functiongetGooglePaymentsClient(){ if(paymentsClient===null){ paymentsClient=newgoogle.payments.api.PaymentsClient({environment:'TEST'}); } returnpaymentsClient; } /** *InitializeGooglePaymentsClientafterGoogle-hostedJavaScripthasloaded * *DisplayaGooglePaypaymentbuttonafterconfirmationoftheviewer's *abilitytopay. */ functiononGooglePayLoaded(){ constpaymentsClient=getGooglePaymentsClient(); paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest()) .then(function(response){ if(response.result){ addGooglePayButton(); //@todoprefetchpaymentdatatoimproveperformanceafterconfirmingsitefunctionality //prefetchGooglePaymentData(); } }) .catch(function(err){ //showerrorindeveloperconsolefordebugging console.error(err); }); } /** *AddaGooglePaypurchasebuttonalongsideanexistingcheckoutbutton * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options} *@see{@linkhttps://developers.google.com/pay/api/web/guides/brand-guidelines|GooglePaybrandguidelines} */ functionaddGooglePayButton(){ constpaymentsClient=getGooglePaymentsClient(); constbutton= paymentsClient.createButton({ onClick:onGooglePaymentButtonClicked, allowedPaymentMethods:[baseCardPaymentMethod] }); document.getElementById('container').appendChild(button); } /** *ProvideGooglePayAPIwithapaymentamount,currency,andamountstatus * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo} *@returns{object}transactioninfo,suitableforuseastransactionInfopropertyofPaymentDataRequest */ functiongetGoogleTransactionInfo(){ return{ countryCode:'US', currencyCode:'USD', totalPriceStatus:'FINAL', //settocarttotal totalPrice:'1.00' }; } /** *Prefetchpaymentdatatoimproveperformance * *@see{@linkhttps://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()} */ functionprefetchGooglePaymentData(){ constpaymentDataRequest=getGooglePaymentDataRequest(); //transactionInfomustbesetbutdoesnotaffectcache paymentDataRequest.transactionInfo={ totalPriceStatus:'NOT_CURRENTLY_KNOWN', currencyCode:'USD' }; constpaymentsClient=getGooglePaymentsClient(); paymentsClient.prefetchPaymentData(paymentDataRequest); } /** *ShowGooglePaypaymentsheetwhenGooglePaypaymentbuttonisclicked */ functiononGooglePaymentButtonClicked(){ constpaymentDataRequest=getGooglePaymentDataRequest(); paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); constpaymentsClient=getGooglePaymentsClient(); paymentsClient.loadPaymentData(paymentDataRequest) .then(function(paymentData){ //handletheresponse processPayment(paymentData); }) .catch(function(err){ //showerrorindeveloperconsolefordebugging console.error(err); }); } /** *ProcesspaymentdatareturnedbytheGooglePayAPI * *@param{object}paymentDataresponsefromGooglePayAPIafteruserapprovespayment *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference} */ functionprocessPayment(paymentData){ //showreturneddataindeveloperconsolefordebugging console.log(paymentData); //@todopasspaymenttokentoyourgatewaytoprocesspayment //@noteDONOTsavethepaymentcredentialsforfuturetransactions, //unlessthey're used for merchant-initiated transactions with user //consentinplace. paymentToken=paymentData.paymentMethodData.tokenizationData.token; }</script><scriptasync src="https://pay.google.com/gp/p/js/pay.js" onload="onGooglePayLoaded()"></script>
Authorize Payments
<divid="container"></div><script>/** *DefinetheversionoftheGooglePayAPIreferencedwhencreatingyour *configuration * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest} */ constbaseRequest={ apiVersion:2, apiVersionMinor:0 }; /** *Cardnetworkssupportedbyyoursiteandyourgateway * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} *@todoconfirmcardnetworkssupportedbyyoursiteandgateway */ constallowedCardNetworks=["AMEX","DISCOVER","INTERAC","JCB","MASTERCARD","VISA"]; /** *Cardauthenticationmethodssupportedbyyoursiteandyourgateway * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} *@todoconfirmyourprocessorsupportsAndroiddevicetokensforyour *supportedcardnetworks */ constallowedCardAuthMethods=["PAN_ONLY","CRYPTOGRAM_3DS"]; /** *Identifyyourgatewayandyoursite's gateway merchant identifier * *TheGooglePayAPIresponsewillreturnanencryptedpaymentmethodcapable *ofbeingchargedbyasupportedgatewayafterpayerauthorization * *@todocheckwithyourgatewayontheparameterstopass *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification} */ consttokenizationSpecification={ type:'PAYMENT_GATEWAY', parameters:{ 'gateway':'example', 'gatewayMerchantId':'exampleGatewayMerchantId' } }; /** *Describeyoursite's support for the CARD payment method and its required *fields * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} */ constbaseCardPaymentMethod={ type:'CARD', parameters:{ allowedAuthMethods:allowedCardAuthMethods, allowedCardNetworks:allowedCardNetworks } }; /** *Describeyoursite's support for the CARD payment method including optional *fields * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} */ constcardPaymentMethod=Object.assign( {}, baseCardPaymentMethod, { tokenizationSpecification:tokenizationSpecification } ); /** *Aninitializedgoogle.payments.api.PaymentsClientobjectornullifnotyetset * *@see{@linkgetGooglePaymentsClient} */ letpaymentsClient=null; /** *Configureyoursite's support for payment methods supported by the Google Pay *API. * *EachmemberofallowedPaymentMethodsshouldcontainonlytherequiredfields, *allowingreuseofthisbaserequestwhendeterminingaviewer's ability *topayandlaterrequestingasupportedpaymentmethod * *@returns{object}GooglePayAPIversion,paymentmethodssupportedbythesite */ functiongetGoogleIsReadyToPayRequest(){ returnObject.assign( {}, baseRequest, { allowedPaymentMethods:[baseCardPaymentMethod] } ); } /** *ConfiguresupportfortheGooglePayAPI * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest} *@returns{object}PaymentDataRequestfields */ functiongetGooglePaymentDataRequest(){ constpaymentDataRequest=Object.assign({},baseRequest); paymentDataRequest.allowedPaymentMethods=[cardPaymentMethod]; paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); paymentDataRequest.merchantInfo={ //@todoamerchantIDisavailableforaproductionenvironmentafterapprovalbyGoogle //See{@linkhttps://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integrationchecklist} //merchantId:'12345678901234567890', merchantName:'Example Merchant' }; paymentDataRequest.callbackIntents=["PAYMENT_AUTHORIZATION"]; returnpaymentDataRequest; } /** *ReturnanactivePaymentsClientorinitialize * *@see{@linkhttps://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor} *@returns{google.payments.api.PaymentsClient}GooglePayAPIclient */ functiongetGooglePaymentsClient(){ if(paymentsClient===null){ paymentsClient=newgoogle.payments.api.PaymentsClient({ environment:'TEST', paymentDataCallbacks:{ onPaymentAuthorized:onPaymentAuthorized } }); } returnpaymentsClient; } /** *Handlesauthorizepaymentscallbackintents. * *@param{object}paymentDataresponsefromGooglePayAPIafterapayerapprovespaymentthroughusergesture. *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentData object reference} * *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentAuthorizationResult} *@returnsPromise<{object}>PromiseofPaymentAuthorizationResultobjecttoacknowledgethepaymentauthorizationstatus. */ functiononPaymentAuthorized(paymentData){ returnnewPromise(function(resolve,reject){ //handletheresponse processPayment(paymentData) .then(function(){ resolve({transactionState:'SUCCESS'}); }) .catch(function(){ resolve({ transactionState:'ERROR', error:{ intent:'PAYMENT_AUTHORIZATION', message:'Insufficient funds', reason:'PAYMENT_DATA_INVALID' } }); }); }); } /** *InitializeGooglePaymentsClientafterGoogle-hostedJavaScripthasloaded * *DisplayaGooglePaypaymentbuttonafterconfirmationoftheviewer's *abilitytopay. */ functiononGooglePayLoaded(){ constpaymentsClient=getGooglePaymentsClient(); paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest()) .then(function(response){ if(response.result){ addGooglePayButton(); } }) .catch(function(err){ //showerrorindeveloperconsolefordebugging console.error(err); }); } /** *AddaGooglePaypurchasebuttonalongsideanexistingcheckoutbutton * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options} *@see{@linkhttps://developers.google.com/pay/api/web/guides/brand-guidelines|GooglePaybrandguidelines} */ functionaddGooglePayButton(){ constpaymentsClient=getGooglePaymentsClient(); constbutton= paymentsClient.createButton({ onClick:onGooglePaymentButtonClicked, allowedPaymentMethods:[baseCardPaymentMethod] }); document.getElementById('container').appendChild(button); } /** *ProvideGooglePayAPIwithapaymentamount,currency,andamountstatus * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo} *@returns{object}transactioninfo,suitableforuseastransactionInfopropertyofPaymentDataRequest */ functiongetGoogleTransactionInfo(){ return{ displayItems:[ { label:"Subtotal", type:"SUBTOTAL", price:"11.00", }, { label:"Tax", type:"TAX", price:"1.00", } ], countryCode:'US', currencyCode:"USD", totalPriceStatus:"FINAL", totalPrice:"12.00", totalPriceLabel:"Total" }; } /** *ShowGooglePaypaymentsheetwhenGooglePaypaymentbuttonisclicked */ functiononGooglePaymentButtonClicked(){ constpaymentDataRequest=getGooglePaymentDataRequest(); paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); constpaymentsClient=getGooglePaymentsClient(); paymentsClient.loadPaymentData(paymentDataRequest); } /** *ProcesspaymentdatareturnedbytheGooglePayAPI * *@param{object}paymentDataresponsefromGooglePayAPIafteruserapprovespayment *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference} */ functionprocessPayment(paymentData){ returnnewPromise(function(resolve,reject){ setTimeout(function(){ //@todopasspaymenttokentoyourgatewaytoprocesspayment paymentToken=paymentData.paymentMethodData.tokenizationData.token; resolve({}); },3000); }); }</script><scriptasync src="https://pay.google.com/gp/p/js/pay.js" onload="onGooglePayLoaded()"></script>
Dynamic Price Updates
<divid="container"></div><script>/** *DefinetheversionoftheGooglePayAPIreferencedwhencreatingyour *configuration * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest} */ constbaseRequest={ apiVersion:2, apiVersionMinor:0 }; /** *Cardnetworkssupportedbyyoursiteandyourgateway * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} *@todoconfirmcardnetworkssupportedbyyoursiteandgateway */ constallowedCardNetworks=["AMEX","DISCOVER","JCB","MASTERCARD","VISA"]; /** *Cardauthenticationmethodssupportedbyyoursiteandyourgateway * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} *@todoconfirmyourprocessorsupportsAndroiddevicetokensforyour *supportedcardnetworks */ constallowedCardAuthMethods=["PAN_ONLY","CRYPTOGRAM_3DS"]; /** *Identifyyourgatewayandyoursite's gateway merchant identifier * *TheGooglePayAPIresponsewillreturnanencryptedpaymentmethodcapable *ofbeingchargedbyasupportedgatewayafterpayerauthorization * *@todocheckwithyourgatewayontheparameterstopass *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification} */ consttokenizationSpecification={ type:'PAYMENT_GATEWAY', parameters:{ 'gateway':'example', 'gatewayMerchantId':'exampleGatewayMerchantId' } }; /** *Describeyoursite's support for the CARD payment method and its required *fields * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} */ constbaseCardPaymentMethod={ type:'CARD', parameters:{ allowedAuthMethods:allowedCardAuthMethods, allowedCardNetworks:allowedCardNetworks } }; /** *Describeyoursite's support for the CARD payment method including optional *fields * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} */ constcardPaymentMethod=Object.assign( {}, baseCardPaymentMethod, { tokenizationSpecification:tokenizationSpecification } ); /** *Aninitializedgoogle.payments.api.PaymentsClientobjectornullifnotyetset * *@see{@linkgetGooglePaymentsClient} */ letpaymentsClient=null; /** *Configureyoursite's support for payment methods supported by the Google Pay *API. * *EachmemberofallowedPaymentMethodsshouldcontainonlytherequiredfields, *allowingreuseofthisbaserequestwhendeterminingaviewer's ability *topayandlaterrequestingasupportedpaymentmethod * *@returns{object}GooglePayAPIversion,paymentmethodssupportedbythesite */ functiongetGoogleIsReadyToPayRequest(){ returnObject.assign( {}, baseRequest, { allowedPaymentMethods:[baseCardPaymentMethod] } ); } /** *ConfiguresupportfortheGooglePayAPI * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest} *@returns{object}PaymentDataRequestfields */ functiongetGooglePaymentDataRequest(){ constpaymentDataRequest=Object.assign({},baseRequest); paymentDataRequest.allowedPaymentMethods=[cardPaymentMethod]; paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); paymentDataRequest.merchantInfo={ //@todoamerchantIDisavailableforaproductionenvironmentafterapprovalbyGoogle //See{@linkhttps://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integrationchecklist} //merchantId:'12345678901234567890', merchantName:'Example Merchant' }; paymentDataRequest.callbackIntents=["SHIPPING_ADDRESS","SHIPPING_OPTION","PAYMENT_AUTHORIZATION"]; paymentDataRequest.shippingAddressRequired=true; paymentDataRequest.shippingAddressParameters=getGoogleShippingAddressParameters(); paymentDataRequest.shippingOptionRequired=true; returnpaymentDataRequest; } /** *ReturnanactivePaymentsClientorinitialize * *@see{@linkhttps://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor} *@returns{google.payments.api.PaymentsClient}GooglePayAPIclient */ functiongetGooglePaymentsClient(){ if(paymentsClient===null){ paymentsClient=newgoogle.payments.api.PaymentsClient({ environment:"TEST", merchantInfo:{ merchantName:"Example Merchant", merchantId:"01234567890123456789" }, paymentDataCallbacks:{ onPaymentAuthorized:onPaymentAuthorized, onPaymentDataChanged:onPaymentDataChanged } }); } returnpaymentsClient; } functiononPaymentAuthorized(paymentData){ returnnewPromise(function(resolve,reject){ //handletheresponse processPayment(paymentData) .then(function(){ resolve({transactionState:'SUCCESS'}); }) .catch(function(){ resolve({ transactionState:'ERROR', error:{ intent:'PAYMENT_AUTHORIZATION', message:'Insufficient funds', reason:'PAYMENT_DATA_INVALID' } }); }); }); } /** *Handlesdynamicbuyflowshippingaddressandshippingoptionscallbackintents. * *@param{object}itermediatePaymentDataresponsefromGooglePayAPIashippingaddressorshippingoptionisselectedinthepaymentsheet. *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#IntermediatePaymentData|IntermediatePaymentData object reference} * *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate} *@returnsPromise<{object}>PromiseofPaymentDataRequestUpdateobjecttoupdatethepaymentsheet. */ functiononPaymentDataChanged(intermediatePaymentData){ returnnewPromise(function(resolve,reject){ letshippingAddress=intermediatePaymentData.shippingAddress; letshippingOptionData=intermediatePaymentData.shippingOptionData; letpaymentDataRequestUpdate={}; if(intermediatePaymentData.callbackTrigger=="INITIALIZE"||intermediatePaymentData.callbackTrigger=="SHIPPING_ADDRESS"){ if(shippingAddress.administrativeArea=="NJ"){ paymentDataRequestUpdate.error=getGoogleUnserviceableAddressError(); } else{ paymentDataRequestUpdate.newShippingOptionParameters=getGoogleDefaultShippingOptions(); letselectedShippingOptionId=paymentDataRequestUpdate.newShippingOptionParameters.defaultSelectedOptionId; paymentDataRequestUpdate.newTransactionInfo=calculateNewTransactionInfo(selectedShippingOptionId); } } elseif(intermediatePaymentData.callbackTrigger=="SHIPPING_OPTION"){ paymentDataRequestUpdate.newTransactionInfo=calculateNewTransactionInfo(shippingOptionData.id); } resolve(paymentDataRequestUpdate); }); } /** *HelperfunctiontocreateanewTransactionInfoobject. *@paramstringshippingOptionIdrespresentingtheselectedshippingoptioninthepaymentsheet. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo} *@returns{object}transactioninfo,suitableforuseastransactionInfopropertyofPaymentDataRequest */ functioncalculateNewTransactionInfo(shippingOptionId){ letnewTransactionInfo=getGoogleTransactionInfo(); letshippingCost=getShippingCosts()[shippingOptionId]; newTransactionInfo.displayItems.push({ type:"LINE_ITEM", label:"Shipping cost", price:shippingCost, status:"FINAL" }); lettotalPrice=0.00; newTransactionInfo.displayItems.forEach(displayItem=>totalPrice+=parseFloat(displayItem.price)); newTransactionInfo.totalPrice=totalPrice.toString(); returnnewTransactionInfo; } /** *InitializeGooglePaymentsClientafterGoogle-hostedJavaScripthasloaded * *DisplayaGooglePaypaymentbuttonafterconfirmationoftheviewer's *abilitytopay. */ functiononGooglePayLoaded(){ constpaymentsClient=getGooglePaymentsClient(); paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest()) .then(function(response){ if(response.result){ addGooglePayButton(); //@todoprefetchpaymentdatatoimproveperformanceafterconfirmingsitefunctionality //prefetchGooglePaymentData(); } }) .catch(function(err){ //showerrorindeveloperconsolefordebugging console.error(err); }); } /** *AddaGooglePaypurchasebuttonalongsideanexistingcheckoutbutton * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options} *@see{@linkhttps://developers.google.com/pay/api/web/guides/brand-guidelines|GooglePaybrandguidelines} */ functionaddGooglePayButton(){ constpaymentsClient=getGooglePaymentsClient(); constbutton= paymentsClient.createButton({ onClick:onGooglePaymentButtonClicked, allowedPaymentMethods:[baseCardPaymentMethod] }); document.getElementById('container').appendChild(button); } /** *ProvideGooglePayAPIwithapaymentamount,currency,andamountstatus * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo} *@returns{object}transactioninfo,suitableforuseastransactionInfopropertyofPaymentDataRequest */ functiongetGoogleTransactionInfo(){ return{ displayItems:[ { label:"Subtotal", type:"SUBTOTAL", price:"11.00", }, { label:"Tax", type:"TAX", price:"1.00", } ], countryCode:'US', currencyCode:"USD", totalPriceStatus:"FINAL", totalPrice:"12.00", totalPriceLabel:"Total" }; } /** *Provideakeyvaluestoreforshipppingoptions. */ functiongetShippingCosts(){ return{ "shipping-001":"0.00", "shipping-002":"1.99", "shipping-003":"10.00" } } /** *ProvideGooglePayAPIwithshippingaddressparameterswhenusingdynamicbuyflow. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#ShippingAddressParameters|ShippingAddressParameters} *@returns{object}shippingaddressdetails,suitableforuseasshippingAddressParameterspropertyofPaymentDataRequest */ functiongetGoogleShippingAddressParameters(){ return{ allowedCountryCodes:['US'], phoneNumberRequired:true }; } /** *ProvideGooglePayAPIwithshippingoptionsandadefaultselectedshippingoption. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#ShippingOptionParameters|ShippingOptionParameters} *@returns{object}shippingoptionparameters,suitableforuseasshippingOptionParameterspropertyofPaymentDataRequest */ functiongetGoogleDefaultShippingOptions(){ return{ defaultSelectedOptionId:"shipping-001", shippingOptions:[ { "id":"shipping-001", "label":"Free: Standard shipping", "description":"Free Shipping delivered in 5 business days." }, { "id":"shipping-002", "label":"1ドル.99: Standard shipping", "description":"Standard shipping delivered in 3 business days." }, { "id":"shipping-003", "label":"10ドル: Express shipping", "description":"Express shipping delivered in 1 business day." }, ] }; } /** *ProvideGooglePayAPIwithapaymentdataerror. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentDataError|PaymentDataError} *@returns{object}paymentdataerror,suitableforuseaserrorpropertyofPaymentDataRequestUpdate */ functiongetGoogleUnserviceableAddressError(){ return{ reason:"SHIPPING_ADDRESS_UNSERVICEABLE", message:"Cannot ship to the selected address", intent:"SHIPPING_ADDRESS" }; } /** *Prefetchpaymentdatatoimproveperformance * *@see{@linkhttps://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()} */ functionprefetchGooglePaymentData(){ constpaymentDataRequest=getGooglePaymentDataRequest(); //transactionInfomustbesetbutdoesnotaffectcache paymentDataRequest.transactionInfo={ totalPriceStatus:'NOT_CURRENTLY_KNOWN', currencyCode:'USD' }; constpaymentsClient=getGooglePaymentsClient(); paymentsClient.prefetchPaymentData(paymentDataRequest); } /** *ShowGooglePaypaymentsheetwhenGooglePaypaymentbuttonisclicked */ functiononGooglePaymentButtonClicked(){ constpaymentDataRequest=getGooglePaymentDataRequest(); paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); constpaymentsClient=getGooglePaymentsClient(); paymentsClient.loadPaymentData(paymentDataRequest); } /** *ProcesspaymentdatareturnedbytheGooglePayAPI * *@param{object}paymentDataresponsefromGooglePayAPIafteruserapprovespayment *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference} */ functionprocessPayment(paymentData){ returnnewPromise(function(resolve,reject){ setTimeout(function(){ //showreturneddataindeveloperconsolefordebugging console.log(paymentData); //@todopasspaymenttokentoyourgatewaytoprocesspayment paymentToken=paymentData.paymentMethodData.tokenizationData.token; resolve({}); },3000); }); }</script><scriptasync src="https://pay.google.com/gp/p/js/pay.js" onload="onGooglePayLoaded()"></script>
Offers
<divid="container"></div><script>/** *Pleasenote:ThePromoCodecallbackisextremelyflexible.Thisexample *implementationisonlyoneofmanywaystointerfacewithit. * *Inproduction,yourpromocodesandpaymentlogicshouldbesecurely *processedonyourserver,notclient-sideasinthisexample.UseAJAXto *passthisinformationtothepaymentsheet. */ /** *DefinetheversionoftheGooglePayAPIreferencedwhencreatingyour *configuration * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest} */ constbaseRequest={ apiVersion:2, apiVersionMinor:0 }; /** *Definevalidpromocodestrings * *ThisobjectparadigmisnotnecessarytoimplementPromoCodes,butprovides *anexampleofhowtoimplementpromocodebehaviorinamodularway. * *Inproduction,yourpromocodesshouldbesecurelyprocessedonyourserver, *notclient-sideasinthisexample. * *code:thewaythepromocodeitselfisdisplayedinthepaymentsheet *description:thedescriptionprovidedtotheuseronthepaymentsheet *function:thefunctionusedtocalculatethepricechange *value:thevaluepassedintotheabovefunction.Thisvalueshouldbe *negativeforadiscount. */ constvalidPromoCodes={ SOMEPROMOCODE:{ code:'SOMEPROMOCODE', description:'20% off all products!', function:percentageDiscount, value:-20//valueshouldbenegativeforadiscount }, ANOTHERPROMOCODE:{ code:'ANOTHERPROMOCODE', description:'5ドル dollars off!', function:staticDiscount, value:-5.00//valueshouldbenegativeforadiscount } } /** *Cardnetworkssupportedbyyoursiteandyourgateway * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} *@todoconfirmcardnetworkssupportedbyyoursiteandgateway */ constallowedCardNetworks=['AMEX','DISCOVER','JCB','MASTERCARD','VISA']; /** *Cardauthenticationmethodssupportedbyyoursiteandyourgateway * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} *@todoconfirmyourprocessorsupportsAndroiddevicetokensforyour *supportedcardnetworks */ constallowedCardAuthMethods=['PAN_ONLY','CRYPTOGRAM_3DS']; /** *Identifyyourgatewayandyoursite's gateway merchant identifier * *TheGooglePayAPIresponsewillreturnanencryptedpaymentmethodcapable *ofbeingchargedbyasupportedgatewayafterpayerauthorization * *@todocheckwithyourgatewayontheparameterstopass *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification} */ consttokenizationSpecification={ type:'PAYMENT_GATEWAY', parameters:{ gateway:'example', gatewayMerchantId:'exampleGatewayMerchantId' } }; /** *Describeyoursite's support for the CARD payment method and its required *fields * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} */ constbaseCardPaymentMethod={ type:'CARD', parameters:{ allowedAuthMethods:allowedCardAuthMethods, allowedCardNetworks:allowedCardNetworks } }; /** *Describeyoursite's support for the CARD payment method including optional *fields * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters} */ constcardPaymentMethod=Object.assign( {}, baseCardPaymentMethod, { tokenizationSpecification:tokenizationSpecification } ); /** *Aninitializedgoogle.payments.api.PaymentsClientobjectornullifnotyetset * *@see{@linkgetGooglePaymentsClient} */ letpaymentsClient=null; /** *Configureyoursite's support for payment methods supported by the Google Pay *API. * *EachmemberofallowedPaymentMethodsshouldcontainonlytherequiredfields, *allowingreuseofthisbaserequestwhendeterminingaviewer's ability *topayandlaterrequestingasupportedpaymentmethod * *@returns{object}GooglePayAPIversion,paymentmethodssupportedbythesite */ functiongetGoogleIsReadyToPayRequest(){ returnObject.assign( {}, baseRequest, { allowedPaymentMethods:[baseCardPaymentMethod] } ); } /** *ConfiguresupportfortheGooglePayAPI * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest} *@returns{object}PaymentDataRequestfields */ functiongetGooglePaymentDataRequest(){ constpaymentDataRequest=Object.assign({},baseRequest); paymentDataRequest.allowedPaymentMethods=[cardPaymentMethod]; paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); paymentDataRequest.merchantInfo={ //@todoamerchantIDisavailableforaproductionenvironmentafterapprovalbyGoogle //See{@linkhttps://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integrationchecklist} //merchantId:'12345678901234567890', merchantName:'Example Merchant' }; paymentDataRequest.callbackIntents=['OFFER']; paymentDataRequest.shippingAddressRequired=false; paymentDataRequest.shippingAddressParameters=getGoogleShippingAddressParameters(); returnpaymentDataRequest; } /** *ReturnanactivePaymentsClientorinitialize * *@see{@linkhttps://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor} *@returns{google.payments.api.PaymentsClient}GooglePayAPIclient */ functiongetGooglePaymentsClient(){ if(paymentsClient===null){ paymentsClient=newgoogle.payments.api.PaymentsClient({ environment:'TEST', merchantInfo:{ merchantName:'Example Merchant', merchantId:'01234567890123456789' }, paymentDataCallbacks:{ onPaymentDataChanged:onPaymentDataChanged } }); } returnpaymentsClient; } /** *Thesefunctionshandleaddingvalidpromocodestothepaymentsheet *aswellasadjustingthedisplayitemstomatch. * *Toaddanewpromocode,createanewfunctionperthistemplate *anddefineitasvalidintheonPaymentDataChangedfunction. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate} *@param{string}redemptionCodestringrepresentingthepromocodetoapply *@param{string}descriptionstringrepresentingthedescriptiontoshow *@param{int}discountPercentageintrepresentingthepercentagetodiscount. *Pleasenotethediscountvalueshouldbenegative.Ex:-20=20%discount. *@param{object}PaymentDataRequestUpdateobjectrepresenting *thecurrentstateofthepaymentdatarequest. *@returns{object}PaymentDataRequestUpdateobjecttoupdatethe *paymentsheetwithnewtransactioninfoandofferdata. */ functionpercentageDiscount(promoParameters,paymentDataRequestUpdate){ //setvariables letoriginalTransactionInfo=getGoogleTransactionInfo(); /*becausethispromocodecalculatesa%oforiginalprices, *weneedtogettheoriginaltransactioninfo*/ letnewTransactionInfo=paymentDataRequestUpdate.newTransactionInfo; letdiscount=0; //updatepromocodeanddescription paymentDataRequestUpdate.newOfferInfo.offers.push({ redemptionCode:promoParameters['code'], description:promoParameters['description'] }); //calculatediscount(fromoriginaltransactionitemsonly) originalTransactionInfo.displayItems.forEach(function(displayItem){ discount+=parseFloat(displayItem.price)*promoParameters['value']*0.01; }); //adddisplayItemwithnewdiscount newTransactionInfo.displayItems.push({ label:promoParameters['code'], price:discount.toFixed(2), type:'LINE_ITEM' }); returnpaymentDataRequestUpdate; } functionstaticDiscount(promoParameters,paymentDataRequestUpdate){ //setvariables letnewTransactionInfo=paymentDataRequestUpdate.newTransactionInfo; //updatepromocodeanddescription paymentDataRequestUpdate.newOfferInfo.offers.push({ redemptionCode:promoParameters['code'], description:promoParameters['description'] }); //adddisplayItemwithnewdiscount newTransactionInfo.displayItems.push({ label:promoParameters['code'], price:promoParameters['value'].toFixed(2), type:'LINE_ITEM' }); returnpaymentDataRequestUpdate; } /** *Handlesoffercallbackintents. * *@param{object}itermediatePaymentDataresponsefromGooglePayAPIwhenapromocodeisenteredinthegooglepaypaymentsheet. *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#IntermediatePaymentData|IntermediatePaymentData object reference} * *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate} *@returnsPromise<{object}>PromiseofPaymentDataRequestUpdateobjecttoupdatethepaymentsheetwithnewtransactioninfoandofferdata. */ functiononPaymentDataChanged(intermediatePaymentData){ returnnewPromise(function(resolve,reject){ letredemptionCodes=newSet(); letshippingOptionData=intermediatePaymentData.shippingOptionData; letpaymentDataRequestUpdate={}; paymentDataRequestUpdate.newTransactionInfo=getGoogleTransactionInfo(); //ensurethatpromocodessetisunique if(typeofintermediatePaymentData.offerData!='undefined'){ redemptionCodes=newSet(intermediatePaymentData.offerData.redemptionCodes); } //validatepromocodesandadddescriptionstopaymentsheet if(intermediatePaymentData.callbackTrigger==='OFFER'){ paymentDataRequestUpdate.newOfferInfo={}; paymentDataRequestUpdate.newOfferInfo.offers=[]; for(redemptionCodeofredemptionCodes){ if(validPromoCodes[redemptionCode]){ paymentDataRequestUpdate=validPromoCodes[redemptionCode].function( validPromoCodes[redemptionCode], paymentDataRequestUpdate ); }else{ paymentDataRequestUpdate.error=getGoogleOfferInvalidError(redemptionCode); } } } /** *Updateitemcostsandtotal. * *Inproduction,thisfinalcalculationshouldalwaysbecalculated *server-sidetoensureitmatchesthepricethatthemerchantsendstothe *processor. */ paymentDataRequestUpdate.newTransactionInfo=calculateNewTransactionInfo( paymentDataRequestUpdate.newTransactionInfo ) resolve(paymentDataRequestUpdate); }); } /** *HelperfunctiontoupdatetheTransactionInfoobject. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo} *@param{object}transactionInforespresentingtheselectedshippingoptioninthepaymentsheet. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo} *@returns{object}transactioninfo,suitableforuseastransactionInfopropertyofPaymentDataRequest */ functioncalculateNewTransactionInfo(newTransactionInfo){ //calculatethenewtotalPricefromdisplayitems lettotalPrice=0.00; newTransactionInfo.displayItems.forEach( function(displayItem){ totalPrice+=parseFloat(displayItem.price); } ); //Note:newTransactionInfo.totalPricemustbeastring newTransactionInfo.totalPrice=totalPrice.toFixed(2); returnnewTransactionInfo; } /** *InitializeGooglePaymentsClientafterGoogle-hostedJavaScripthasloaded * *DisplayaGooglePaypaymentbuttonafterconfirmationoftheviewer's *abilitytopay. */ functiononGooglePayLoaded(){ constpaymentsClient=getGooglePaymentsClient(); paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest()) .then(function(response){ if(response.result){ addGooglePayButton(); //@todoprefetchpaymentdatatoimproveperformanceafterconfirmingsitefunctionality //prefetchGooglePaymentData(); } }) .catch(function(err){ //showerrorindeveloperconsolefordebugging console.error(err); }); } /** *AddaGooglePaypurchasebuttonalongsideanexistingcheckoutbutton * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options} *@see{@linkhttps://developers.google.com/pay/api/web/guides/brand-guidelines|GooglePaybrandguidelines} */ functionaddGooglePayButton(){ constpaymentsClient=getGooglePaymentsClient(); constbutton= paymentsClient.createButton({ onClick:onGooglePaymentButtonClicked, allowedPaymentMethods:[baseCardPaymentMethod] }); document.getElementById('container').appendChild(button); } /** *ProvideGooglePayAPIwithapaymentamount,currency,andamountstatus * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo} *@returns{object}transactioninfo,suitableforuseastransactionInfopropertyofPaymentDataRequest */ functiongetGoogleTransactionInfo(){ return{ displayItems:[ { label:'Subtotal', type:'SUBTOTAL', price:'11.00', status:'FINAL' }, { label:'Tax', type:'TAX', price:'1.00' } ], currencyCode:'USD', totalPriceStatus:'FINAL', totalPrice:'12.00', totalPriceLabel:'Total' }; } /** *ProvideGooglePayAPIwithshippingaddressparameters. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/request-objects#ShippingAddressParameters|ShippingAddressParameters} *@returns{object}shippingaddressdetails,suitableforuseasshippingAddressParameterspropertyofPaymentDataRequest */ functiongetGoogleShippingAddressParameters(){ return{ allowedCountryCodes:['US','UK','FR','CA','MX','GA'], phoneNumberRequired:false }; } /** *ProvideGooglePayAPIwithaninvalidoffererror. * *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentDataError|PaymentDataError} *@returns{object}paymentdataerror,suitableforuseaserrorpropertyofPaymentDataRequestUpdate */ functiongetGoogleOfferInvalidError(redemptionCode){ return{ reason:'OFFER_INVALID', message:redemptionCode+' is not a valid promo code.', intent:'OFFER' }; } /** *Prefetchpaymentdatatoimproveperformance * *@see{@linkhttps://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()} */ functionprefetchGooglePaymentData(){ constpaymentDataRequest=getGooglePaymentDataRequest(); //transactionInfomustbesetbutdoesnotaffectcache paymentDataRequest.transactionInfo={ totalPriceStatus:'NOT_CURRENTLY_KNOWN', currencyCode:'USD' }; constpaymentsClient=getGooglePaymentsClient(); paymentsClient.prefetchPaymentData(paymentDataRequest); } /** *ShowGooglePaypaymentsheetwhenGooglePaypaymentbuttonisclicked */ functiononGooglePaymentButtonClicked(){ constpaymentDataRequest=getGooglePaymentDataRequest(); paymentDataRequest.transactionInfo=getGoogleTransactionInfo(); constpaymentsClient=getGooglePaymentsClient(); paymentsClient.loadPaymentData(paymentDataRequest) .then(function(paymentData){ //handletheresponse processPayment(paymentData); }) .catch(function(err){ //showerrorindeveloperconsolefordebugging console.error(err); }); } /** *ProcesspaymentdatareturnedbytheGooglePayAPI *Inaproductionenvironment,thisfunctionshouldalwaysbeimplemented *server-side. * *@param{object}paymentDataresponsefromGooglePayAPIafteruserapprovespayment *@see{@linkhttps://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference} */ functionprocessPayment(paymentData){ //showreturneddataindeveloperconsolefordebugging console.log(paymentData); //@todopasspaymenttokentoyourgatewaytoprocesspayment paymentToken=paymentData.paymentMethodData.tokenizationData.token; }</script><scriptasync src="https://pay.google.com/gp/p/js/pay.js" onload="onGooglePayLoaded()"></script>