- KnowSystem
- Google Pay
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
- Merchants who wish to accept Google Pay must request their acquiring bank to enable Google Pay as a payment method.
- As part of Google Pay enablement, merchants can opt for 3D secure without
- The acceptance of payment networks will be based on the acquiring bank and merchant agreement.
- Upon enablement, merchants must login to their Backoffice portal account, and Google Pays Terms by clicking “I have seen this notification”
- By using Google Pay merchant agree to Google Pay API Terms of Service

Getting Started
The implementation of Google Pay by merchants using Enterprise uses JavaScript and HTML, JSON to initialize and process payments securely.
Initialization and triggering of Google Pay
Add Google Pay and iVeri GooglePay scripts In the <head> tag
<script async src=https://pay.google.com/gp/p/js/pay.js
Loads the IVeriGooglePay integration script from the enterprise portal endpoint.
Create an instance & instantiates the Google Pay handler
Instantiates the Google Pay handler and define merchant specific parameters
ApplicationID: Unique identifier for merchant application.
Amount: Transaction amount in cents (1000 = ZAR 10.00).
Currency: ISO currency code (ZAR for South African Rand).
document.addEventListener('DOMContentLoaded', () => {
const gpay = new GooglePayHandler();
const gpayParams = {
applicationId: "b028ce83-106c-44cf-b86d-2475ac808f8b",
merchantReference: "202509081400",
amount: 1000,
currency: "ZAR"
}
Initialize GooglePay 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 in JSON will be returned to the merchant. The payment data will be in one of 2 forms
Merchants not enabled for 3D Secure will receive the following parameter/values in JSON
- CardNumber: Sanitized PAN/Card number, first 4 & last 4
- Card Expiry: the expiry date of the card
- TransactionIndex: Unique identifier that can be used to make tokenized payments and link a series of related transactions
{
"CardNumber"
"Expiry"
"TransactionIndex"
}
Merchant enabled for 3D Secure authentication services will receive the following parameter/values in JSON
- CardNumber: Sanitized PAN/Card number, first 4 & last 4
- Card Expiry: the expiry date of the card
- TransactionIndex: Unique identifier that can be used to make tokenized payments and link a series of related transactions
- ThreeeDSecureData: 3Reference list on https://www.iveri.com/docs/enterprise-developer-guide-58#3d-secure-1404-0
{
"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 where ThreeDSecureData is not set
Payment instruction (Command) can either be a debit or a authorisation
{
"Version": "2.0",
"CertificateID": "{“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",
“ElectronicCommerceIndicator": "SecureChannel”
}
Payment processing with tokenized payment data and 3D secure parameter/values
Payment instruction (Command) can either be a debit or a authorisation
{
"Version": "2.0",
"CertificateID": "{DE3022CE-15A2-4702-A46B-CC9710463135}",//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"
}
}