How do I support Google Pay as a merchant?
(1) Register as a Google Pay merchant.
(2) Generate Payment Method Tokens. Ask you TabaPay rep for the gatewayMerchantId you will use to generate GooglePay tokens.
(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.
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.
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|gatewayMerchantID" | 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|gatewayMerchantId
GooglePayMasterCard|gatwayMerchantId
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