Skip to main content

Get Started


This page shows you how to format encrypted payment data for use with Google Pay.

Set up REST Compliant Communications

Set up your payment processing system to be REST compliant. If you have not set up secure communications between your client and server using either JSON Web Token (JWT) or HTTP signature messaging, see Getting Started with REST.

Configure Google Pay

You must provide your merchant ID to Google to ensure proper encryption of the Google Pay payload and authenticity of the request.

For a Google Pay tutorial, see Google Pay for Payments.

Set the gateway and gatewayMerchantId to the appropriate indicators. These code examples show how to configure the PaymentMethodTokenizationParameters object using as the gateway.

.setPaymentMethodTokenizationType(WalletConstants.PAYMENT_METHOD_TOKENIZATION_TYPE_PAYMENT_GATEWAY)     .addParameter("gateway", "")     .addParameter("gatewayMerchantId", "[yourCybersourceMID]")
tokenizationType: 'PAYMENT_GATEWAY',     parameters: {     gateway: '[cybs-gateway]',          gatewayMerchantId: '[yourCybersourceMID]'

Format the Encrypted Payment Data

To prepare the Google Pay payload for submission to , you must extract the token data element from the Google Pay payload and encode the token data element using Base64.

These samples can be used to Base64-encode payment responses:

let token = paymentData.paymentMethodData.tokenizationData.token;console.log(token);var enc=window.btoa(token);
// This sample uses the Android Studio Base64 utility.public static <outputString> encodeToString (byte[] <inputToken>, int DEFAULT)
// This sample requires the Foundation utility.extension String {     func base64Encoded() -> <outputString>          if let data = self.dat(using:.utf8) {               return data.base64EncodedString()          }          return nil}

These examples show a decrypted Google Pay response and the corresponding Base64-encoded response:

{"signature":"MEUCIQDhTxhHqwY8pXB9hpYxaSK5jFgsqpG2E1rX77QXssK8tAIgUBvYYAI/bnBS8T/Tfxnm2AF981Mv5y0pHyGexM5dMJk=","protocolVersion":"ECv1","signedMessage":"{\"encryptedMessage\":\"odyUGGA7B+blletYcJbS43AQUFQJpWEFCN4UuUExQ5LX0\/XcLwKElXcB95nMnmPO9lM2KGp13FYsL768ccCzAjBGLYF+fugcJTcvkrUhcNSyXr7hwf12BEsrweqJM6I7Vs5lfrPAukRJeLDQG4FxmTLW49QyP8vIZC+tz2c+Z3zozzI5oB9jE8fA2dolFa13Cu6gXqdKH\/IHRh7UniLUuTy+0G5FQV2pwST2uBSNNkZhb8WYJDHbxBjz0UebVP+ObmT5cc8AKU5dgHRdfr4GKpEZ4EBzB90 BPxLqYHpopriJ6lbFgFVsQQ6\/8HBqQ7ImIMH5y7G8p8qAFkWnB78ZcL0Fh5BjXojkxGoFp2gjAsrhhttHAFbe3WQBuPkwJu09\/6\/MyJpCSrpMHFouF\/dj0SYjQ+xI097lCHZec7jQrAhISLWZ9DZkuMvGKPWpu0CKn2XqTXQ=\",\"ephemeralPublicKey\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnn4yjy0N6xlXO8\/8j7\/4jvmLJCYAqgXLwP1FhjuTgIM9oCtPijZfI9so2QEOs2ZnVp3D0dl3JYIDVe+396KkAQ==\",\"tag\":\"DRp cc+YQ33RNgsTcxztnJbMJnirbU5DW3dStjfhFiwc=\"}"}
eyJzaWduYXR1cmUiOiJNRVVDSVFEaFR4aEhxd1k4cFhCOWhwWXhhU0s1akZnc3FwRzJFMXJYNzdRWHNzSzh0QUlnVUJ2WVlBSS9ibkJTOFQvVGZ4bm0yQUY5ODFNdjV5MHBIeUdleE01ZE1Ka1x1MDAzZCIsInByb3RvY29sVmVyc2lvbiI6IkVDdjEiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwib2R5VUdHQTdCK2JsbGV0WWNKYlM0M0FRVUZRSnBXRUZDTjRVdVVFeFE1TFgwXC9YY0x3S0VsWGNCOTVuTW5tUE85bE0yS0dwMTNGWXNMNzY4Y2NDekFqQkdMWUYrZnVnY0pUY3ZrclVoY05TeVhyN2h3ZjEyQkVzcndlcUpNNkk3VnM1bGZyUEF1a1JKZUxEUUc0RnhtVExXNDlReVA4dklaQyt0ejJjK1ozem96ekk1b0I5akU4ZkEyZG9sRmExM0N1NmdYcWRLSFwvSUhSaDdVbmlMVXVUeSswRzVGUVYycHdTVDJ1QlNOTmtaaGI4V1lKREhieEJqejBVZWJWUCtPYm1UNWNjOEFLVTVkZ0hSZGZyNEdLcEVaNEVCekI5MEJQeExxWUhwb3ByaUo2bGJGZ0ZWc1FRNlwvOEhCcVE3SW1JTUg1eTdHOHA4cUFGa1duQjc4WmNMMEZoNUJqWG9qa3hHb0ZwMmdqQXNyaGh0dEhBRmJlM1dRQnVQa3dKdTA5XC82XC9NeUpwQ1NycE1IRm91RlwvZGowU1lqUSt4STA5N2xDSFplYzdqUXJBaElTTFdaOURaa3VNdkdLUFdwdTBDS24yWHFUWFE9XCIsXCJlcGhlbWVyYWxQdWJsaWNLZXlcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5uNHlqeTBONnhsWE84XC84ajdcLzRqdm1MSkNZQXFnWEx3UDFGaGp1VGdJTTlvQ3RQaWpaZkk5c28yUUVPczJablZwM0QwZGwzSllJRFZlKzM5NktrQVE9PVwiLFwidGFnXCI6XCJEUnBjYytZUTMzUk5nc1RjeHp0bkpiTUpuaXJiVTVEVzNkU3RqZmhGaXdjPVwifSJ9

Next Steps

Last published: September 29, 2026