Google Pay

By integrating Google Pay into your website or Android application, your customers can securely make one-touch payments using any credit or debit card connected to their Google account.

To start processing Google Pay™ payments, you must first register with Google. Once the integration is complete, you can add the 'Google Pay™' button to your checkout page and start requesting your customers' encrypted payment information.

For information on integrating with Google Pay, first, refer to the Google Pay API guide, Google Pay Web integration checklist, Google Pay Web Brand Guidelines, Google Pay Android integration checklist and Google Pay Android brand guidelines.
 

When you submit a payment data request to the Google API, be sure to include the following parameters:

'gateway': 'solid'
'gatewayMerchantId': '<replace with key from SOLID>'

To receive key you must send a request to your account manager.

Request Parameters for Google Pay

Example of web request

{
	apiVersion: 2,
	apiVersionMinor: 0,
	allowedPaymentMethods: [{
		type: 'CARD',
		parameters: {
			allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
			allowedCardNetworks: ['AMEX', 'DISCOVER', 'MASTERCARD', 'VISA']
		},
		tokenizationSpecification: {
			type: 'PAYMENT_GATEWAY',
			parameters: {
				'gateway': 'solid',
				'gatewayMerchantId': ''
			}
		}
	}]
}

Endpoint: 

https://pay.solidgate.com/api/v1/google-pay

Google 3DS going through a few steps :

1) Google request
2) Redirect to URL 3DS verification

verify_url gets by request - STATUS or from NOTIFICATION

 

ParameterMandatoryTypeDescriptionExample
order_idyesstring(100)Order ID specified in the merchant system.1526915864
amountyesintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.2000
currencyyesstring(3)Order currency. 3 letter currency code under ISO-4217.USD
order_descriptionyesstring(255)Order description in UTF-8 code.Example description
customer_emailyesstring(100)Customer email.example.test@test.com
ip_addressyesstring(50)Customer IP (only public ones).8.8.8.8
platformyesstring(6)Customer platform at the moment of payment. Available values: WEB- desktop, MOB - mobile version, APP - application.WEB
geo_countrynostring(3)Customer country subject to ISO 3166-1 alpha-3.GBR
order_datenostring(50)Date of order creation in format YYYY-MM-DD-HH-MM-SS.2015-12-21 11:21:30
order_itemsnostring(255)Order description in UTF-8 code.item 1, item 2
customer_account_idnostring(100)Сustomer ID specified in the merchant system.4dad42f808
customer_first_namenostring(100)Customer first name.John
customer_last_namenostring(100)Customer last name.Snow
customer_phonenostring(50)Customer phone number.380111111111
customer_date_of_birthnostring(50)Birthdate in YYYY-MM-DD format.2000-11-21
geo_citynostring(100)Customer City.New Castle
languagenostring(2)Customer language settings. Available values: RU - Russian, EN - English.en
fraudulentnobooleanCustomer is detected by the merchant system to be suspicious one. The payment will be effected via 3DS.true
callback_urlnostring(255)URL of merchant page, where response with payment result will be sent via a host-to-host connection.http://merchant.example/callback
chargeback_notification_urlnostring(255)URL of merchant page, where the notification of chargeback will be sent.http://merchant.example/chargeback
verifiednobooleanThe user was verified on the shop side.true
retry_attemptnointegerA number of retry payment.1
traffic_sourcenostring(255)Source of traffic.facebook
transaction_sourcenostring(255)Source of transactions on site.main_menu
user_agentnostringUser-agent of the customer.Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
order_numbernointegerA number of payments by the user.1
signedMessageyesstringA serialized JSON string containing the encryptedMessage, ephemeralPublicKey, and tag. To simplify the signature verification process, this value is serialized. 
protocolVersionyesstringIdentifies which encryption/signing scheme this message has been created. In this way, the protocol can evolve over time if needed. If it is not set, assume ECv0. 
signatureyesstringVerifies the message came from Google. The signature is created using ECDSA. 
deviceNostringDevice of the customer.iPhone 8 iOS 12.0
status_urlNostringStatus URL on which user will be redirected after confirming payment. 

"

Request Sample

{
	"order_id": "1530101603341",
	"amount": 2000,
	"currency": "USD",
	"order_description": "Example description",
	"customer_email": "googlepaytoster@gmail.com",
	"ip_address": "8.8.8.8",
	"platform": "WEB",
	"geo_country": "CAN",
	"order_date": "2015-12-21 11:21:30",
	"order_items": "item 1, item 2",
	"customer_account_id": "4dad42f808",
	"customer_first_name": "John",
	"customer_last_name": "Snow",
	"customer_phone": "380111111111",
	"customer_date_of_birth": "2000-11-21",
	"geo_city": "New Castle",
	"language": "en",
	"fraudulent": true,
	"chargeback_notification_url": "http://merchant.example/chargebacka",
	"verified": true,
	"retry_attempt": 1,
	"traffic_source": "googlePay",
	"transaction_source": "main_menu",
	"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
	"order_number": 1,
	"signedMessage": "{S4pvoy+1bCgGkKC4j/3/n5T0CSITOPFkFdV/m0KWkytlc1SLlYs1+OVToxjSNTfdc/pyZ8/7mjqDPrGzi86uJenRYrgadPNw3hwM3rkxKDcHAZswKC2WEvRnU4BnF9LSnSxYslgq+pSzp+BsUBFKGPjMo1ZsdCQLqlavj+VbxQKg4cgknACwWQrnll+gk+dir3BN/jJB/uJwPKglCG79gAge2jeViJUob1NAyFfInEDbVEYiQovCZO3yuwDrNVaL1uAufpB/eogIQQz6LYjW07v3Xni1As9GjGWVZvkmjLUyY9aX02ecEqhCTKFTd4crMsX4Nm8vjgejzUGKvLWcU7vVS3xtVBNp87k3D5NJ6V3tuPJdIHeH0kEq43IQTgTQIku+RnBkU/8KLBWPNWW7FRNm0AGVL8ZcE1ym3f2avl6CkQEWv311NEkbC/NEVFBh/ZFqzezqLyyzaUgepGFD3RbclihwLGvx0WXwe7RPTVh3raCJpDJOofjHg2mMNNL8xSQOWtmZWrxyClp10atxNdrPdcB3YVmbEpWR1d48eOW+AgEDc3bmUg5}",
	"protocolVersion": "ECv1",
	"signature": "MEQCIHZ8oOEXz0DzZTO3uU+zdMfmihpb3OMr3pQQ0HHgVLyiAiBmWqUzv3FuTGQCLyZA20awLfydQiR0IcOUBJlj/ZlaHQ=="
}

Response Parameters for Google Pay

Parameters of the successful response
 

ParameterTypeDescriptionExample
transactionobjectAn object with information of transactions. 
transaction:idobjectTransaction identification within the order. It contains an object with detailed information about the specified transaction. Order can have several transactions.15301021459245b33818384a4e
transaction:operationstringTransaction type. Transaction types are described in respective directory.google-pay
transaction:statusstringTransaction status within the order. Transaction statuses are described in respective directory.created
transaction:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.100
transaction:currencystringTransaction currencyUSD
transactions:<transaction_id>:card:card token:tokenstringCard token551c1d70374af08b92cf6e91...087bc05
orderobjectObject with order information. 
order:order_idstringOrder ID specified in the merchant system.1530102145924
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.100
order:currencystringOrder currency (3 letter code under ISO 4217).USD
order:refunded amountintegerAmount of refund0
order:fraudulentbooleanThe customer was detected on the merchant end to be suspicious one.true
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting.100
order:marketing_currencystringThe currency of order amount for marketing analytics.USD
order:statusstringStatus of payment processed. Types of order statuses are described in the respective directory.processing
order:total_fee_amountintegerAmount of refund0

Response Example

{
	"order": {
		"order_id": "155446XXXXXX5742",
		"status": "processing",
		"amount": 100,
		"refunded_amount": 0,
		"currency": "USD",
		"marketing_amount": 100,
		"marketing_currency": "USD",
		"fraudulent": true,
		"total_fee_amount": 0
	},
	"transaction": {
		"id": "155446XXXXXX7425ca743d4db1a1",
		"operation": "google-pay",
		"status": "created",
		"amount": 100,
		"currency": "USD"
	}
}

Response to method status after method google-pay

 

ParameterTypeDescriptionExample
orderobjectAn object with information of the transaction. 
order:order_idstringOrder ID specified in the merchant system777
order:statusstringStatus of processed payment. Types of order statuses are described in respective directory.approved
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.2575
order:refunded_amountintegerThe amount which was refunded0
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting.2575
order:marketing_currencystringThe currency of the order amount for marketing analytics.USD
order:processing_currencystringThe currency of the order amount for marketing analytics.USD
order:processing_amountintegerThe amount in processing currency2575
order:descriptorstringDescriptorDESCRIPTOR
order:fraudulentbooleanThe customer is detected by the merchant system to be suspicious one.true
order:total_fee_amountintegerTotal fee by order transaction 6
order:fee_currencystringFee currencyUSD
transactionsobjectAn object with information of transactions. 
transactions:<transaction_id>stringTransaction identification within the order. It contains an object with detailed information about the specified transaction. Order can have several transactions.1495123020887591dc450088f1
transactions:<transaction_id>:idstringTransactions identification within the order.1495123020887591dc450088f1
transactions:<transaction_id>:operationstringTransaction type. Transaction types are described in respective directory.google-pay
transactions:<transaction_id>:statusstringTransaction status within the order. Transaction statuses are described in respective directory.verify
transactions:<transaction_id>:descriptorstringDescriptorDESCRIPTOR
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.2575
transactions:<transaction_id>:currencystring USD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 09:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 09:06:21
transactions:<transaction_id>:feeobjectFee for specified transaction 
transactions:<transaction_id>:fee:amountintegerFee amount for transaction - integer without fractional component (i.e cents). For instance, 120 (USD) means 1 USD and 20 cents.120
transactions:<transaction_id>:fee:currencystringCurrency of transaction fee - 3-digit letter code under ISO 4217USD
transactions:<transaction_id>:cardobjectObject with information about card. Present in payment transactions. 
transactions:<transaction_id>:card:binstringCard BIN444455
transactions:<transaction_id>:card:brandstringCard BrandVISA
transactions:<transaction_id>:card:numberstringMasked card number444455XXXXXX6666
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:card_exp_monthstringA month of card expiration (2-digit format).03
transactions:<transaction_id>:card:card_exp_yearintegerA year of card expiration (4-digit format).2025
verify_urlstringUrl for 3DS verificationhttps://acs.signedpay.com/api/v1/verify-3ds/178493802/e64235511187c0971
cfc47790fca1e3f9c36e18304...97c3d8c

Response on status after google-pay

{
	"transactions": {
		"15544648745ca740704fe76": {
			"id": "15544648745ca740704fe76",
			"operation": "google-pay",
			"status": "verify",
			"descriptor": "descriptor",
			"amount": 100,
			"currency": "USD",
			"created_at": "2019-05-17 09:06:21",
			"updated_at": "2019-05-17 09:06:32",
			"fee": {
				"amount": 0,
				"currency": "USD"
			},
			"card": {
				"bin": "537541",
				"brand": "MASTERCARD",
				"number": "537541XXXXXX9619",
				"card_holder": "cardholder name",
				"card_exp_month": "11",
				"card_exp_year": 2024
			}
		}
	},
	"verify_url": "https://acs.signedpay.com/api/v1/verify-3ds/178493802/e64235511187c0971cfc47790fca1e3f9c31989c58349d46e18304cfc39fbb5da6f2172e26b4091fcd4575a6c23ec97c3d8c",
	"order": {
		"order_id": "1554464874",
		"status": "3ds_verify",
		"amount": 100,
		"refunded_amount": 0,
		"currency": "USD",
		"marketing_amount": 100,
		"marketing_currency": "USD",
		"processing_amount": 100,
		"processing_currency": "USD",
		"descriptor": "descriptor",
		"fraudulent": true,
		"total_fee_amount": 0,
		"fee_currency": "USD"
	}
}