Google Pay

How do I support Google Pay as a merchant?

(1) Register as a Google Pay merchant.

(2) Generate Payment Method Tokens. The gatewayMerchantId you use to generate GooglePay tokens must be "G" with your numerical clientID appended (ask your TabaPay contact if you're unsure what this value is).
For example:

  • A merchant with a numerical clientID 123456, who wants to generate Google Pay tokens, will have a gatewayMerchantId G123456

(3) Use "tabapay" (case-sensitive) as your gatewayId.


What authMethod should I use for Google Pay?

The merchant can choose to support PAN_ONLY and/or CRYPTOGRAM_3DS. While the merchant can choose their authMethod, TabaPay strongly encourages the sole use of authMethod CRYPTOGRAM_3DS to mitigate fraud.

🚧

TabaPay has temporarily disabled the PAN_ONLY authMethod

Reach out to your TabaPay contact if you would like to use this authMethod.

946946

https://developers.google.com/pay/api/web/guides/tutorial#supported-card-networks


Can I decrypt my own Google Pay PaymentMethodToken?

📘

GooglePay Tokens and PCI-scope

If the merchant's PCI-compliance does not allow card-handling then the merchant will rely entirely on TabaPay to decrypt the PaymentMethodToken.

If a merchant's PCI-compliance allows them to handle real card numbers, the merchant may decrypt the PaymentMethodToken that is produced from a Google Pay transaction.

If the authMethod is CRYPTOGRAM_3DS, then the PaymentMethodToken will be mapped to TabaPay's card.mobilePay fields. See the mapping below:

Google Pay PaymentMethodToken TabaPay card.mobilePay
pan accountnumber
expirationMonth
expirationYear
expirationDate
YYYYMM
cryptogram cryptogram
eciIndicator (optional) eciIndicator (optional)

The network of the card used (Visa, MasterCard, etc.) is mapped to the network in the card.mobilePay. The type of card (debit, credit, prepaid, etc.) is mapped to the type in card.mobilePay.

If the authMethod is PAN_ONLY, then the Google Pay PaymentMethodToken will be mapped to TabaPay's card.accountNumber and card.expirationDate fields.
Google Pay PaymentMethodToken TabaPay card
pan accountnumber
expirationMonth
expirationYear
expirationDate
YYYYMM

How do I use a Google Pay PaymentMethodToken for Create Transaction?

(1) Use the card.device object
(2) In the card.device

card.device field Value Notes
id "GooglePay|GgatewayMerchantID" GooglePay is a static value
gatewayMerchantID is the gatewayMerchantId you used to generate a GooglePay Token
blob unaltered, URL-safe base64 encoded, fully encrypted Google Pay PaymentMethodToken No padding or spaces in your blob, remove any trailing = before sending the request

(3) Fill in the remaining required information for Create Transaction.


How do I test Google Pay for Create Transaction?

You can test in our Sandbox today if you are enabled by our support and operations teams. Ensure any PaymentMethodTokens you send are produced in the ENVIRONMENT_TEST.

If you are enabled to test Google Pay in Sandbox, but are not a registered (and approved) Google Pay merchant, use GooglePayVisa or GooglePayMasterCard piped with (|) the gatewayMerchantId you will use to generate tokens as the id in the card.device object. See examples below:

GooglePayVisa|GgatewayMerchantId
GooglePayMasterCard|GgatwayMerchantId


What does a TabaPay response contain when using Google Pay in Create Transaction?

The responses from Google Pay will stay consistent with the current Create Transaction responses.


How do I create the card.device.blob?

(1) Take the UNALTERED, encrypted PaymentMethodToken:

{"signature":"MEUCIHDD0DQ9XYJrerxeI0LpCQyFmqFqpJgHeeLqJDhF0z8TAiEA20LF0JUwEmE1dz2BFUgii3NFHzXDDmgsvBTHcdLVZ30\u003d","intermediateSigningKey":{"signedKey":"{"keyValue":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr6dAac0eKNSjPE4er6DsMA4oTaoUXMERhL+7OOISIKhvo8K5OVrIuWfvKHYE2DNAmZkHSwitRs49gMHs5Q7aeA\u003d\u003d","keyExpiration":"1606934885430"}","signatures":["MEYCIQC/uS8hLRz8eZ2aQ4gi50HFW4IxEZcZ8Jj1hJwjaMCCHQIhAI0ry1VEAzGBu0hHrtGfvT11ZqnqFSjEupYS59+lG7NB"]},"protocolVersion":"ECv2","signedMessage":"{"encryptedMessage":"aew8n0SadRGeorqyYSQCcufpnUU1d0+9D0TaCA+WIvSmY8IKtsVzXIJ0Wzsy2dIFHABzlaO5QpB+afyBZpqxET1v5t5bdjPhIREBDL3alkL2Hpteaz5xev+MD2e+JjCpwxhsKk0c8K/7uUDMUeu5Qt4sF+GvrPw4MheAWimNUb2JF+sqEGWmlmNxkOkz0D12xFH43avRkjlctcnNDWLGYhxiROBxePd1Hc5n6O5Nfc+nfx5HhjfNwm3R2Ey2WfVTwzd9pJ7xxXS/nd71C+cCSuIdMRDqgZxzjvSIMvkA8BBDSPTIAaurXo04uQRbqt+XW1JKOGSJkv7YccEUvnYnyDhP9YFCV6K8B7iCIMsvoKy1uaCVXNosjUKb3GuS3XvB8O8pylvuOWy0WMWK7zP3hGW8k5ruKTLadr2cytaBVt+5/oe7xkH8epjoVnuaNGgzZFl0blKwVtidLxKZ5S518oaZ6wu/+KkIDXR/2gCRk+oTPO2J9w8HoFJXuGWN1wLpdJ2nWdg4U3p83w/MEx7pUHGjcMDAdKvjnYrIMJwhRJBdqSyvCPdb574Uqbp1VUstDaBmHUR5xWVV8tBEj4lPq9C93nJdK3vsK078tAPmUwCyRkX2YwCbPrF7g8kVMuVwG7bgw4pn6BtgLaqkUD2xajWweRk\u003d","ephemeralPublicKey":"BOhQaWVgF2TAnFeypb/wxVGGSaSGlPfprP/ajMOI59VP6P/coWpWmMHrzi3IXI2AhaIHHrwM7xhsBheb6sxh8lQ\u003d","tag":"BGdAtaVKKP5vv6kTw9uJCZASdy8M0BAIUdTl/y/0vgU\u003d"}"}

(2) URL-safe base64 encode to produce the card.device.blob

eyJzaWduYXR1cmUiOiJNRVVDSUhERDBEUTlYWUpyZXJ4ZUkwTHBDUXlGbXFGcXBKZ0hlZUxxSkRoRjB6OFRBaUVBMjBMRjBKVXdFbUUxZHoyQkZVZ2lpM05GSHpYRERtZ3N2QlRIY2RMVlozMFx1MDAzZCIsImludGVybWVkaWF0ZVNpZ25pbmdLZXkiOnsic2lnbmVkS2V5Ijoie1wia2V5VmFsdWVcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXI2ZEFhYzBlS05TalBFNGVyNkRzTUE0b1Rhb1VYTUVSaEwrN09PSVNJS2h2bzhLNU9Wckl1V2Z2S0hZRTJETkFtWmtIU3dpdFJzNDlnTUhzNVE3YWVBXFx1MDAzZFxcdTAwM2RcIixcImtleUV4cGlyYXRpb25cIjpcIjE2MDY5MzQ4ODU0MzBcIn0iLCJzaWduYXR1cmVzIjpbIk1FWUNJUUMvdVM4aExSejhlWjJhUTRnaTUwSEZXNEl4RVpjWjhKajFoSndqYU1DQ0hRSWhBSTByeTFWRUF6R0J1MGhIcnRHZnZUMTFacW5xRlNqRXVwWVM1OStsRzdOQiJdfSwicHJvdG9jb2xWZXJzaW9uIjoiRUN2MiIsInNpZ25lZE1lc3NhZ2UiOiJ7XCJlbmNyeXB0ZWRNZXNzYWdlXCI6XCJhZXc4bjBTYWRSR2VvcnF5WVNRQ2N1ZnBuVVUxZDArOUQwVGFDQStXSXZTbVk4SUt0c1Z6WElKMFd6c3kyZElGSEFCemxhTzVRcEIrYWZ5QlpwcXhFVDF2NXQ1YmRqUGhJUkVCREwzYWxrTDJIcHRlYXo1eGV2K01EMmUrSmpDcHd4aHNLazBjOEsvN3VVRE1VZXU1UXQ0c0YrR3ZyUHc0TWhlQVdpbU5VYjJKRitzcUVHV21sbU54a09rejBEMTJ4Rkg0M2F2UmtqbGN0Y25ORFdMR1loeGlST0J4ZVBkMUhjNW42TzVOZmMrbmZ4NUhoamZOd20zUjJFeTJXZlZUd3pkOXBKN3h4WFMvbmQ3MUMrY0NTdUlkTVJEcWdaeHpqdlNJTXZrQThCQkRTUFRJQWF1clhvMDR1UVJicXQrWFcxSktPR1NKa3Y3WWNjRVV2bllueURoUDlZRkNWNks4QjdpQ0lNc3ZvS3kxdWFDVlhOb3NqVUtiM0d1UzNYdkI4TzhweWx2dU9XeTBXTVdLN3pQM2hHVzhrNXJ1S1RMYWRyMmN5dGFCVnQrNS9vZTd4a0g4ZXBqb1ZudWFOR2d6WkZsMGJsS3dWdGlkTHhLWjVTNTE4b2FaNnd1LytLa0lEWFIvMmdDUmsrb1RQTzJKOXc4SG9GSlh1R1dOMXdMcGRKMm5XZGc0VTNwODN3L01FeDdwVUhHamNNREFkS3ZqbllySU1Kd2hSSkJkcVN5dkNQZGI1NzRVcWJwMVZVc3REYUJtSFVSNXhXVlY4dEJFajRsUHE5QzkzbkpkSzN2c0swNzh0QVBtVXdDeVJrWDJZd0NiUHJGN2c4a1ZNdVZ3RzdiZ3c0cG42QnRnTGFxa1VEMnhhald3ZVJrXFx1MDAzZFwiLFwiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJCT2hRYVdWZ0YyVEFuRmV5cGIvd3hWR0dTYVNHbFBmcHJQL2FqTU9JNTlWUDZQL2NvV3BXbU1IcnppM0lYSTJBaGFJSEhyd003eGhzQmhlYjZzeGg4bFFcXHUwMDNkXCIsXCJ0YWdcIjpcIkJHZEF0YVZLS1A1dnY2a1R3OXVKQ1pBU2R5OE0wQkFJVWRUbC95LzB2Z1VcXHUwMDNkXCJ9In0

Still have questions?