Google Pay™

Google Pay is a digital wallet platform that empowers customers to make online purchases securely without the need to enter their card details for each payment. This payment method is available across all devices (mobile and desktop), irrespective of the operating system and web browser.

When the cardholder selects to pay by Google Pay in-app or on the web, Google Pay displays a payment sheet where they can select which card they want to use and confirm the purchase. For more information, check out this video on how Google Pay works.

How it works

  1. You request the encrypted payload from your app or browser
  2. Google Pay returns a token value that contains an encrypted payload
  3. You send the token to your server and Base64 encode it
  4. You submit a request into Acquired’s Card API containing the token value
  5. Acquired processes the payment and returns a payment response
  6. You inform the customer of the transactions outcome

Setup

Before you get started you will need:

  1. A direct integration into the Acquired.com API
  2. A Google Developer account - see here
  3. Acquired to enable Google Pay on your account - contact support@acquired.com
  4. To contact Google via the Business Console so that they can add your app to their system for production use - see here

Integrate with Google Pay

See the Google Pay API documentation for a detailed resource of how to integrate Google Pay into your application.

Google Pay > Web

Support Google Pay on your website - checkout the links below to get started:

Get Started

Android Google Pay > in-App

Support Google Pay on your Android app - check out the links below to get started:

Get Started

Defining your payment gateway

When providing your payment tokenization method, set the tokenizationSpecification.type value as “PAYMENT_GATEWAY”.

In addition provide acquired as your “gateway” and specify the Acquired company ID that will subsequently be used when submitting your request into the Card API as the “gatewayMerchantId” value.

"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "acquired",
    "gatewayMerchantId": "YOUR_ACQUIRED_COMPANY_ID"
  }
}

Set the allowedCardNetworks property

For supported payment type, select ‘CARD’.

Acquired supports Google Pay payments from Visa, MasterCard & Amex cards, you can define these accepted card networks in the ‘allowedCardNetworks’ property when initiating your request to the Google Pay API.

const allowedCardNetworks = ["VISA", "MASTERCARD", "AMEX"];

Set the allowedCardAuthMethods

If you are not decrypting the Google Pay payload then you will not have visibility of the underlying credential, including whether the authentication method equals PAN_ONLY or CRYPTOGRAM_3DS.

const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];
  • PAN_ONLY: associated with payment cards stored on file that may require 3-D Secure to comply with SCA requirements.
  • CRYPTOGRAM_3DS: associated with cards stored as Android device tokens - this method is SCA compliant and does not require 3-D Secure to be processed.

It is therefore required that you also send additional 3-D Secure parameters when submitting your request into Acquired so that transactions can be routed via 3D Secure if required. See our 3-D Secure documentation for details of the additional fields required.

If the authenticationMethod of the decrypted payload equals “PAN_ONLY” and the card is enrolled for EMV 3DS (V2) then we will validate your request before proceeding with 3D Secure authentication. If your request is invalid then we will respond with “response_code”: “550”, “response_message”: “SCA Field (field name)”.

Please ensure you are also capable of handling the 3DS challenge flow and displaying this information to your customer, we will respond with “response_code”: “503”, “response_message”: “SCA: Challenge Required” if challenge flow is required.

Note: If you limit your accepted credentials to CRYPTOGRAM_3DS in your Google Pay API Integration then you will not be required to provide these additional 3-D Secure parameters.

Integrate with Acquired.com

Once you’ve successfully integrated with your web application with Google Pay and are able to send the returned payload to your server then you’re capable of submitting Google Pay transactions to Acquired via our API.

Making a Payment

Step 1: at the end of the Google Pay process an encrypted payload will be returned to your application, an example of this can be found below:

{"apiVersionMinor":0,"apiVersion":2,"paymentMethodData":{"description":"Visa%u2006%u2022%u2022%u2022%u2022%u20061111","tokenizationData":{"type":"PAYMENT_GATEWAY","token":"{\"signature\":\"MEQCIEzQUUkhKfSNmtQn7yw3VmnZNNF8xYkKvhUS1O1aGRbPAiBQ6uDUh9rFGv92RX1+zbOAzY1QcAkzaGliIuc+vmQG1g\\u003d\\u003d\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn1O+Iev10IvDndJ6naCWcGc/XCacYXL3ZTrDar9OS9taA2/ZAzJa+WUkqSZUcFDMdHTK4lbmebn3MeyYdoFQJw\\\\u003d\\\\u003d\\\",\\\"keyExpiration\\\":\\\"1621529256367\\\"}\",\"signatures\":[\"MEYCIQCnrV3uzf90iWDvMYIrzVk7FliPcj+P57mUKDZ9D3Zc1AIhAJD5P7QBl8LOtSVkjjjq+3SY4o3AcpbkDqXJQuXfs1tg\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"k/zi37h/ZPZ49kKuaod7hcP6AQFb5edMYln9leNtQdRkmUZoIoOIEYMqoc0VmMxkCdhs21GzuZ0UYvZaelPFcjNzpYyBPGqHZhD52WX8nO107VQ27tXtc6+7bAD7XzgMl/1U8cPw2l+LbNzuVKwGcY7cfrxMRx32KXnjsz/S5igNkPaE6kuYjPp/zsMFHJte8t5W4hhZrrY1OM3Rt1JExqQrBQCPJPfZNh9EuAyA4s+7edka5YCQx8gBZr5iIWcCz8HkBiF/c+MwjwuAoBmuYbTVK2k+JX523Owa1L/44Zhz7PBB/iS4ptc/j9A0Qc1Gh7GDb5psTCNq1AUi56TyL/Ckh/KAn3SJ2W9D7aqDpXYKTX2DQil2p/kT2536TtSQI2tbqAk1gWOb20R4A1Gy6o1Q49eIq9QUQhylTIXoXt7fHEq5zGerrRrCXYbhzaD1LFaywJrYqDi82LnpEiQG10Iln8iIaTRXSGJicLIPZfVtK81cI9nIh/+HgBu3hItuU44lMRtmw5a+0hxOCq0bDiMQhQlX4zCKgZEPGzc7aSg+s3fNatR66U54TWW6WvkcDhA\\\\u003d\\\",\\\"ephemeralPublicKey\\\":\\\"BP4lqDq/9e24uPcRG3qleyaY//Fr4StEuoBf8wDE7/9MFtsAXTqut8jT61DqYS3HFN49lrp4f9GHdEoRAyio81E\\\\u003d\\\",\\\"tag\\\":\\\"SWZfba8mk1qGBmvpHylgQxzBWhBgw5xGTt7vZnvVWqg\\\\u003d\\\"}\"}"},"type":"CARD","info":{"cardNetwork":"VISA","cardDetails":"1111"}}}

To simplify the integration process, base64 this entire JSON string which you can then pass through to us in the API in the payment.token field to be decrypted by us.

Step 2: using the Acquired API in the same way as a card payment, submit the base64 encoded string value through to us in the payment.token field of your request.

{
  "timestamp": "20210512203331",
  "company_id": "113",
  "company_pass": "secret",
  "request_hash": "f0a18260b08a0bfacb.....",
  "transaction": {
    "merchant_order_id": "2021051208333182906",
    "transaction_type": "auth_capture",
    "amount": "20.00",
    "currency_code_iso3": "GBP"
  },
  "payment": {
    "method": "google_pay",
    "token": "eyJhcGlWZXJzaW9uTWlub3IiOjAsImFwaVZlcnNpb24iOjIsInBhe....",
    "display_name": "Mastercard •••• 6703",
    "network": "MASTERCARD"
  }
}
Note: if you want to process your card authorisation request including AVS data, you will need to request BillingAddressParameters in your Google Pay request. The MIN option will return enough data for a postcode check only, to also validate the address you will need to send the FULL details - see here.

Step 3: we will respond in the normal way so if you have an existing card payments integration, nothing will change just handle the response_code value and display a response to your customer.

Testing Google Pay

In simulate different responses from our API to test Google Pay, you will need to update the "amount" value in your request as detailed below:

For a successful response - you can submit any other value..
Amount Response Code Response Message
11.02 101 Declined
11.03 301 Declined: Insufficent Funds
11.04 402 Declined: Lost or Stolen Card