Key information
| Supported card networks | VISA, MASTERCARD |
|---|---|
| Supported auth methods | PAN_ONLY, CRYPTOGRAM_3DS |
Network tokens (CRYPTOGRAM_3DS) | Accepted for VISA only. Mastercard is accepted as PAN_ONLY and taken through 3-D Secure. |
| Protocol version | ECv2 |
| Gateway ID | processingkz |
| Integration methods | Hosted Payment Page · SDK button · Direct API integration |
| 3-D Secure | Applied automatically for PAN_ONLY payloads to comply with SCA/PSD2 |
| Billing address parameter | Not used |
| Resource pack | Google Pay mark — official asset download |
Terms of Service and Acceptable Use Policy
By enabling Google Pay on your Processing.kz account — through any of the three integration paths below — you confirm that your business, products, and handling of customer payment data comply with these policies.
Three ways to accept Google Pay
Processing.kz supports three integration paths for Google Pay, depending on how much control and development effort the merchant wants:
- Hosted Payment Page — customer is redirected to the Processing.kz payment page, where Google Pay appears automatically alongside other payment methods. No extra development work required.
- Button via Processing.kz SDK — the Google Pay button is rendered directly on the merchant's own site or app using the Processing.kz SDK, without a redirect.
- Direct integration via Google Pay API — the merchant integrates with the Google Pay API themselves and sends the resulting Payment Token to Processing.kz for processing. Offers the most control, but requires completing Google's own review process.
1. Hosted Payment Page
This is the simplest option. Processing.kz enables Google Pay on your account internally — once enabled, it appears automatically as a payment method on your standard Processing.kz payment page, with no extra integration work needed beyond your existing redirect-based connection.
To request Google Pay, contact our support team — they will enable it for your account.
2. Button via SDK
For merchants who want to keep customers on their own site or app rather than redirecting to a hosted page, the ProcessingSDK JavaScript library renders an express-checkout element directly in your checkout. This element automatically shows Google Pay to the customer when their browser/device supports it — the SDK loads the Google Pay API JavaScript client library and builds the IsReadyToPayRequest/PaymentDataRequest on your behalf, so you do not write any Google Pay API code yourself.
| SDK script (TEST) | https://sdk.processing.kz/test/v1/processing.js |
|---|---|
| SDK script (PRODUCTION) | https://sdk.processing.kz/v1/processing.js |
| Public key | Obtain from Processing.kz support — pk_test_... for TEST, pk_live_... for PRODUCTION |
1. Start a transaction server-side via startTransactionV2 on MerchantWebService. On success it returns tranGUID, guid, and tranKind — pass these to the page that will render the button.
2. Include the SDK script, then initialize the element:
const processing = ProcessingSDK("pk_replace_me");
const elements = processing.elements({
tranGUID: "tranGUID",
guid: "guid",
tk: "tranKind",
appearance: {
variables: {
borderRadius: "8px",
},
},
});
const expressCheckout = elements.create("express-checkout", {
buttonHeight: 50,
});
expressCheckout.on("ready", () => {
console.log("Express checkout is ready");
});
expressCheckout.on("error", (error) => {
console.error(error.message);
});
expressCheckout.on("processing", () => {
console.log("Payment is processing");
});
expressCheckout.on("retry", () => {
console.log("Payment failed, express checkout is ready for another attempt");
});
expressCheckout.on("complete", ({ status }) => {
if (status === "succeeded") {
console.log("Payment completed");
} else {
console.log("Payment declined");
}
});
expressCheckout.mount("#express-checkout-element");
Behind this single express-checkout element, the SDK loads the Google Pay client library and defines the request properties exactly as follows:
| Google Pay JS client library | <script src="https://pay.google.com/gp/p/js/pay.js" async></script> — injected automatically by the SDK |
|---|---|
| API version | apiVersion: 2, apiVersionMinor: 0 |
| Allowed card auth methods | allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'] |
| Allowed card networks | allowedCardNetworks: ['VISA', 'MASTERCARD'] |
| Tokenization type | type: 'PAYMENT_GATEWAY' |
| gateway / gatewayMerchantId | processingkz / your Processing.kz point-of-sale identifier — resolved automatically from your tranGUID, no extra configuration needed |
| Environment | Matches the SDK script you loaded — TEST or PRODUCTION |
The SDK calls isReadyToPay() and only shows the Google Pay button when it's available on the customer's device/browser. On completion, it sends the resulting Payment Token to Processing.kz for decryption and processing — the same server-side flow described in Sending the payment token to Processing.kz below — and fires the complete event with the final status.
3. Direct integration via Google Pay API
With this integration method, the merchant integrates directly with the Google Pay API. This requires completing a number of procedures and checks before going live: an application must be submitted, and the website or app must meet a set of requirements. Your site must run over HTTPS and support TLS 1.2.
To accept payments via direct Google Pay integration on your website or app, you must:
- Web: meet the branding requirements in the Google Pay Web Brand Guidelines and confirm compliance using the Google Pay Web integration checklist
- Android: if your app will submit a mobile app build for review, follow the Google Pay Android developer documentation, meet the branding requirements in the Google Pay Android Brand Guidelines, and confirm compliance using the Google Pay Android integration checklist
- Pass a review — submit your mobile app build or a link to your website's payment page
Use the Google Pay API to obtain PaymentData. Set the following script parameters:
| Allowed card auth methods | const allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS']; |
|---|---|
| Allowed card networks | const allowedCardNetworks = ['VISA', 'MASTERCARD']; — network tokens (CRYPTOGRAM_3DS) are accepted for VISA only; Mastercard is processed as PAN_ONLY. |
| Protocol version | ECv2 |
| Tokenization type | type: 'PAYMENT_GATEWAY' |
| gateway parameter | processingkz |
| gatewayMerchantId parameter | Must be your Processing.kz point-of-sale identifier |
| Environment | TEST during integration, PRODUCTION for live traffic |
| Billing Address parameter | Not used |
Example PaymentDataRequest tokenization configuration, with gateway and gatewayMerchantId set to the values Processing.kz expects:
const tokenizationSpecification = {
type: 'PAYMENT_GATEWAY',
parameters: {
'gateway': 'processingkz',
'gatewayMerchantId': 'YOUR_PROCESSING_KZ_MERCHANT_ID'
}
};
See the full Google Pay Web developer documentation for details on integrating Google Pay with your website.
Publishing and requesting production access
Once your integration passes testing, publish it and request production access directly with Google:
- Web: Request production access for the Google Pay Web API
- Android: Request production access for the Google Pay Android API
Retrieving the payment token
After a successful Google Pay interaction, extract the Payment Token to send onward for processing:
function processPayment(paymentData) {
const paymentToken = paymentData.paymentMethodData.tokenizationData.token;
// Send paymentToken to your Processing.kz payment processing endpoint
}
\u003d escapes with =). Any change breaks signature verification and the token cannot be decrypted.
Sending the payment token to Processing.kz
Processing.kz decrypts and verifies the Google Pay payload on our servers — merchants never decrypt the token themselves. Send the encrypted paymentToken string to Processing.kz over HTTPS as part of the same server-to-server transaction request you already use to submit a standard card payment, marking it as a Google Pay payment rather than a raw PAN:
POST <your existing Processing.kz transaction endpoint>
Content-Type: application/json
{
... your standard transaction fields (merchantId, customerReference, amount, currency) ...,
"paymentMethod": "GOOGLE_PAY",
"googlePayToken": "<paymentData.paymentMethodData.tokenizationData.token, unmodified>"
}
paymentMethod/googlePayToken above are illustrative — use the exact field names defined in your Processing.kz merchant integration agreement for this transaction endpoint.
SCA and PSD2 compliance
To comply with SCA and PSD2 regulations, Processing.kz will send Google Pay transactions through the 3DS process if necessary.
The payload received after decrypting the Google Pay Payment Token can have one of two authentication method values:
- PAN_ONLY — a PAN that requires 3D Secure 2.0 authentication
- CRYPTOGRAM_3DS — an authenticated payload that can be processed without any further step-up or challenge
Since the decryption of the Google Pay payload is handled by Processing.kz, the merchant does not have visibility of the underlying credential being PAN_ONLY or CRYPTOGRAM_3DS. Therefore, the merchant must expect that their customer may need to pass 3D Secure authentication on the payment processing request, if necessary.
Network-token authentication (CRYPTOGRAM_3DS) is accepted for VISA cards only, and only such a token is processed without further step-up. Mastercard payments are always processed as PAN_ONLY and taken through 3-D Secure; Mastercard network tokens are not accepted.