Google Pay™

Google Pay™ allows customers to use any payment method saved in their Google account. When selected, Google provides a secure payment token that replaces card details, giving customers a safe and convenient way to pay.

 

Prerequisites


Merchant On Boarding 


  • Merchants who wish to accept Google Pay™ must request their acquiring bank to enable Google Pay™ as a payment method. For assistance with this merchants can also contact our support team on assist@iveri.com
  • Upon enablement, merchants must login to their Backoffice portal account, and accept "Google Pay™ Terms  by clicking “I have seen this notification”
  • By using Google Pay™  merchants adhere to Google policies as outlined on Google Pay and Wallet API’s Acceptable Use Policy  and accepts  Google Pay API Terms of Service 


Supported cards brands and countries

Card Networks

Our integration with Google Pay™ allows for the acceptance of Visa, MC, Diners, and Amex payment networks. However, the enablement of each of these brand networks lies with the acquiring bank, and the merchant agreement.

Google Pay™ Acceptance by Country

Our integration with Google Pay™ is available through our acquiring partners in South Africa, Kenya Mauritius etc. For a complete list refer to our country mapping listed on https://www.iveri.com

Getting Started


Our integration with Google leverages the Google Pay™ hosted checkout solution. Merchants using this integration must comply with the Google Pay™ and Wallet API Acceptable Use Policy.

iVeri has implemented the Google Pay™ Cryptogram_3DS option, which uses tokenized card data for secure transactions. Google Pay™ manages both 3D Secure authentication and payment processing, ensuring a streamlined and secure experience.

With this implementation, merchants connecting to the iVeri Gateway will utilize JavaScript, HTML, and JSON to initialize Google Pay™ and process payments using tokenized card data.

To implement Google Pay™ with iVeri Enterprise, merchants must adhere to the following Content Security Policy (CPS) 

No Inline Script

  • Where: In your HTML files.
  • Purpose: CSP can block inline <script> tags and onclick attributes because they are common XSS vectors. Instead, use external JavaScript files or event listeners added via JS.

No Inline Styles

  • Where: In your HTML files.
  • Purpose: Like scripts, inline styles (style="...") can be blocked by CSP. Use external CSS files or class-based styling.

No JavaScript eval

  • Where: In your JavaScript code.
  • Purpose: eval () and similar functions (Function (), setTimeout with string arguments) are dangerous because they execute arbitrary code. CSP can disallow them via unsafe-eval directive.

Unique Nonce Generated for Each Request

  • Where: In the CSP header.
  • Purpose: A nonce is a random value added to the CSP header and to specific <script> tags. This allows


Initialization and triggering of Google Pay™

Add Google Pay™ and iVeri GooglePay scripts In the <head> tag  

 Loads the IVeriGooglePay integration script from the enterprise portal endpoint. Refer to list of portal endpoint by acquirer.

<script src=https://[portal]/js/iveri-button-googlePay.js

Create an instance & instantiates the Google Pay™ handler

Instantiates the Google Pay™ handler and define merchant specific parameters

  • ApplicationID: Unique identifier for merchant applicationID. The iVeri Gateway uses the applicationID retrieve the configured merchant name, Merchant ID and assigns it to the Google Pay™ gatewayMerchantID parameter, along with setting “iVeri” as the gateway
  • Amount: Transaction amount in cents (1000 = ZAR 10.00).
  • Currency: ISO currency code (ZAR for South African Rand). The currency used will depend on the merchant’s account configuration and the acquiring partner that manages the merchant agreement
  • MerchantReference: Unique merchant specific transaction reference 

    document.addEventListener('DOMContentLoaded', () => {

            const gpay = new GooglePayHandler();

      const gpayParams = { 

                applicationId: "b028ce83-106c-44cf-b86d-2475ac808f8b",

                merchantReference: "202509081400",

        amount: 1000,

        currency: "ZAR"

      }

Initialize Google Pay™ Handler

Portal Domain: Backend endpoint for configuration and processing.

Callback:  A merchant specific function that handles a JSON response from the Gateway

Render Google Pay™ Button

In the <body> tag place <div id="google-pay-container">

The container <div> is where the Google Pay™ button will be rendered by the script

iVeri Gateway response Handling

Tokenized payment data will be retuned to the merchant along with 3D Secure Data in JSON.

{

​"CardNumber": 

   ​  "CardExpiry": 

​    "TransactionIndex": 

    ​​threeDSecureData: {

        "electronicCommerceIndicator":                    

        "cardHolderAuthenticationData":    

    }

}

Post Payment for Processing

Submit transactions using the tokenized payment data on [portal domain]/api/transactions

Payment processing with tokenized payment data and 3D secure data
  • Payment instruction (Command) can either be a debit or a authorisation 

{

               "Version": "2.0",

               "CertificateID": "{replace with merchant certID }",

               "ProductType": "Enterprise",

               "ProductVersion": "WebAPI",

               "Direction": "Request",

               "Transaction": {

                              "ApplicationID": "{merchant applicatioID}",

                              "Command": "Authorisation

                              "Mode": "Test",

                              "MerchantReference": "202507_031",

                              "MerchantTrace":"2025.711",

                              "Currency": "ZAR",

                              "Amount": "10000",

                              "ExpiryDate": "0929",

                              "PAN": "4895........9709",  //tokenised data

                             "CardHolderPresence": "CIT,COF",

                              "TransactionIndex": "{A622EDC3-743E-4E57-8354-86DAB1848AE1}",

                               "PANFormat":"TransactionIndex",

                              "CardHolderAuthenticationID": "+9z/hOi4392ov0GJd2AEYIPQP8g=",

                             "CardHolderAuthenticationData": "AAEBApN3IgAAAAPocQNYdISCkYQ=",

                               "ElectronicCommerceIndicator": "ThreeDSecure",

                             "ThreeDSecure_DSTransID": "3ee1816c-80b5-4cf3-933a-e5a258019d60",

                              "ThreeDSecure_AuthenticationType":  "01",

                               "ThreeDSecure_ProtocolVersion": "2.1.0"

 

               }

}

Test and GO LIVE

During integration testing stage merchants must use:

To Go LIVE merchants

  • Replace Test ApplicationID with a LIVE applicationID
  • Change environment MODE: TEST to LIVE