
About Google Pay
Google Pay™ is a digital wallet platform which allows Google users to pay with their devices, for in-app mobile and Web applications.
By using Google Pay SDK merchant allows user to select payment credit card among the cards that he saved in the wallet.
Google Pay is secure and simple for user payment technology. As a merchant, you can use to incorporate Google Pay into your payment page.
Transaction Flow
1. Merchant`s application offers Google Pay displaying Google Pay button. The customer selects Google Pay as a payment method.
2. Merchant initiates Google Pay API request identifying its gateway merchant ID.
3. Payment sheet is displayed to the user and he confirms the payment.
4. Google creates encrypted payment data using the gateway-specific key that is supplied in the Wallet request and includes it in the Google API response. The Google Pay call back returns the encrypted payment data.
5. Merchant transmits data from the client-side to the server-side.
6. Merchant server-side prepares data and transmits it to the PSP (SH Start High) including the encrypted token.
7. PSP sends a payment request to the appropriate acquirer.
8. After receiving the payment result PSP transmits it to the merchant server result

Merchant Onboarding
Prerequisites
Please contact SH Start High PSP support to notify that you are starting Google Pay integration
process.
See more details according to the integration process in Google resources:
Adding Google Pay Button
Item
Value
apiVersion
2
merchantInfo->merchantName
The text you want to show on the Google Pay
pop up
tokenizationSpecification->type =
“PAYMENT_GATEWAY”
tokenizationSpecification->parameters-
>gateway
shstartpay
tokenizationSpecification->parameters-
>gatewayMerchantId
Your merchant account ID in SH Start High
system
allowedPaymentMethods ->parameters- >allowedCardNetworks
Possible values: AMEX, JCB, MASTERCARD, VISA
allowedPaymentMethods ->parameters- >allowedAuthMethods
Possible values: PAN_ONLY,
CRYPTOGRAM_3DS
Creating Google Pay Payment
While creating Google Pay payment merchant have to pass the token received by Google in the parameter “Digitalwallettoken”.
In case if received token contains 3DS cryptogram data, no additional user verification is required. If merchant received PAN_ONLY payload, he has to pass additional fields to the PSP for creating 3DS session.
API endpoint: https://www.sh-pay.com/pay/response/{merchantId}
Please note that API URL is unique for every merchant and will be provided by support team while integration procedure.
The list of mandatory fields for Google Pay payment:
Parameter
Type
Description
merchantAccount
string [1-64]
Merchant account ID in PSP system
transactionUniqueId
string [1-64]
Merchant transaction ID
transactionType
Enum [SALE, SALE3D]
Transaction type
amount
float
Transaction amount up to 2 decimal
currency
string [^[A-Z]{3}$]
Currency 3-letter code
Digitalwallettoken
string
Token received from Google
firstName
string [^[\d\w\-]{1,50}$]
Payer first name
lastName
string [^[\d\w\-]{1,50}$
Payer last name
country
string [^[A-Z]{3}$]
Country code in CodeAlpha3
userEmail
string
Payer`s email
userIp
string
Payer`s IP
httpUserAgent
string
Payer`s UserAgent
3DSecure-
>challengeIndicator
string
For PAN_ONLY auth method:
Challenge preference for
3DS 2. Possible values:
01 - No Preference
02 - No Challenge
Requested
03 - Challenge requested
04 - Challenge requested:
Mandate
05 - No challenge requested
(transactional risk analysis is
already performed)
06 - No challenge requested
(Data share only)
07 - No challenge requested
(strong consumer
authentication is already
performed)
08 - No challenge requested
(utilise whitelist exemption if
no challenge required
09 - Challenge requested
(whitelist prompt requested if
challenge required)
3DSecure-
>challengeWindowSize
string
For PAN_ONLY auth method:
Preferred Challenge window
size
3DSecure->cancelURL
string
For PAN_ONLY auth method: Return URL where the client is redirected to, if transaction is cancelled
3DSecure->callbackUrl
string
For PAN_ONLY auth method: Callback URL where the webhook with payment result is sent
3DSecure->successURL
string
For PAN_ONLY auth method: Return URL where the client is redirected to, if transaction is successful
3DSecure->failURL
string
For PAN_ONLY auth method: Return URL where the client is redirected to, if transaction fails
API Examples:
Request example (non-3DS payment):
{
"merchantAccount": "ShStartTest0692856",
"transactionUniqueId": "b9f7780e-4190-4305-a4cb-5e996fe7d33e",
"transactionType": "SALE",
"amount": 100.00,
"currency": "EUR",
"Digitalwallettoken":
"eyJzaWduYXR1cmUiOiJNRVlDSVFENGEvbkRpaUZvcUlEeGJIbVJzeXBHZWpZWG5ES3Btc0w2UWcyVlc1VFlTd0loQVBQMklyamQrNkQxTlFycFdMM1EyWmswMGIvOHVkUnkzVld0cEVhVVJFbi8iLCJpbnRlcm1lZGlhdGVTaWduaW5nS2V5Ijp7InNpZ25lZEtleSI6IntcImtleVZhbHVlXCI6XCJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVkMzFycFIvUEg1c2hsdTA1VGlDTW13emk5VVU5ajhjNHVsQlQraFY0V1BpRFo4T3Q3ZUozY0tLM1hPVytOMzdpS3ZLN0NzMmY1SkxESkpLOTBjb204UVxcdTAwM2RcXHUwMDNkXCIsXCJrZXlFeHBpcmF0aW9uXCI6XCIxNTk2NjE2OTkzMDAwXCJ9Iiwic2lnbmF0dXJlcyI6WyJNRVVDSUZxRlNlOWd1R01WKzExSFBuejdIVE9rRGRMQys4MmlJTXcyK0QyQkhWZjhBaUVBbVRsR2krMmdRRUZXbGZxSVg3N05KTEdOYm8xazkvM3pCOC9yQXo4YUtZd1x1MDAzZCJdfSwicHJvdG9jb2xWZXJzaW9uIjoiRUN2MiIsInNpZ25lZE1lc3NhZ2UiOiJ7XCJlbmNyeXB0ZWRNZXNzYWdlXCI6XCJ2WjJVVGR0VkpSeEU5SlBhSWFTMEplNTJVUVplWko3ODl3d3IyR2hXTmJ5R2ZGaDZ1OGp0TjdpMDNvV0YxRXpBSmZtM05TWm1MQ0NHN0JacVBtYmE3VEsvTzJaVUU1eldUdGgrZUlpV2pNZ0ZpbndxbTV3Rk9MYm5uc3NwdllaWGZNU1BzYm9majJhRGw1WldrMEkySldHU2pHOVhGa0tpbWdIbzU0bGlkdlpLc1liRFo3L01Ca2ZNTHZ1Nm0rd1NqS1BtVkVxSjhJYnNXTmpIdmFhVzdQbzRDM1hYT3VGbENSR1ZqeG1qY1BQcnJDZnpPbVZRUTZFMEhSdnhVOHd0SllRS0Y1UENwOHJKVlpzOEdvZkhzdk1iZ0tsMEFaQTdGV3RKaEhEekJQVGY3QjNnTzNpQ202SjlFN0RXMFBlam41cFpwN2plRFhubEVrNXlhVFkxR2NGbHNtaDYvQ3ZMbnFqRlVGb3R2ekVkaGtxNXlvR21PMktTNm9hWTk5NkR6ckd5Ti8vRnJBTVRhZm51dHByOVN2MkFVVnhCbW5XUVJVdUNVTWtEMXNPRkxqRHREMFlta2dDNnlyMHZzZmJEWng5QnU4elo1aHZKd1FFS1ArYlpSdmdOcjE2TUlrTDI1bXFJMmhOeWtwaXZsbjhkWitRdnZ5TktHakdNQmxlRXZPbjBPVFg5dTBLNnlwT3JrUDcvdmo5U045T0E1Y0NFYjdTVThSS0tPM1h6eldzOTNnbmZrZ1xcdTAwM2RcXHUwMDNkXCIsXCJlcGhlbWVyYWxQdWJsaWNLZXlcIjpcIkJIMFU2ZXZBZlk2U1F6VHpnb3dCVEN4cy9kRlN6ZGp3ZkVLbHJidVpFYlQrWStpLy9XZ2FiS2pISVB0eDM2YW5tbmxvWDRTVERTNGNFTDJqUjNWZmQyVVxcdTAwM2RcIixcInRhZ1wiOlwiMDBPQkdqTExJRVUwYlpYYitBdGxKVmVGU1AvTUJseThGZEVHbWJFRSs4b1xcdTAwM2RcIn0ifQ==",
"firstName": "John",
"lastName": "Doe",
"country": "ITA",
"userEmail": "test@gmail.com",
"userIp": "127.0.0.1",
"httpUserAgent": "Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko)
Chrome\/91.0.4472.114 Safari\/537.36"
}
Response example (non-3DS payment):
{
"timestamp": 1632827809,
"transactionStatus": "CHARGED",
"reference": "7c936d6612dd3b6b1d0f12b00a97d837",
"transactionUniqueId": "b9f7780e-4190-4305-a4cb-5e996fe7d33e",
"reason": "Transaction is successful",
"code": "200",
"sessionId": "36fdb76c29f991e190ac6cde64e5b359"
}
Request example (3DS payment):
{
"merchantAccount": "ShStartTest0692856",
"transactionUniqueId": "b9f7780e-4190-4305-a4cb-5e996fe7d33e",
"transactionType": "AUTH3D",
"amount": 100.00,
"currency": "EUR",
"Digitalwallettoken":
"eyJzaWduYXR1cmUiOiJNRVlDSVFENGEvbkRpaUZvcUlEeGJIbVJzeXBHZWpZWG5ES3Btc0w2UWcyVlc1VFlTd0loQVBQMklyamQrNkQxTlFycFdMM1EyWmswMGIvOHVkUnkzVld0cEVhVVJFbi8iLCJpbnRlcm1lZGlhdGVTaWduaW5nS2V5Ijp7InNpZ25lZEtleSI6IntcImtleVZhbHVlXCI6XCJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVkMzFycFIvUEg1c2hsdTA1VGlDTW13emk5VVU5ajhjNHVsQlQraFY0V1BpRFo4T3Q3ZUozY0tLM1hPVytOMzdpS3ZLN0NzMmY1SkxESkpLOTBjb204UVxcdTAwM2RcXHUwMDNkXCIsXCJrZXlFeHBpcmF0aW9uXCI6XCIxNTk2NjE2OTkzMDAwXCJ9Iiwic2lnbmF0dXJlcyI6WyJNRVVDSUZxRlNlOWd1R01WKzExSFBuejdIVE9rRGRMQys4MmlJTXcyK0QyQkhWZjhBaUVBbVRsR2krMmdRRUZXbGZxSVg3N05KTEdOYm8xazkvM3pCOC9yQXo4YUtZd1x1MDAzZCJdfSwicHJvdG9jb2xWZXJzaW9uIjoiRUN2MiIsInNpZ25lZE1lc3NhZ2UiOiJ7XCJlbmNyeXB0ZWRNZXNzYWdlXCI6XCJ2WjJVVGR0VkpSeEU5SlBhSWFTMEplNTJVUVplWko3ODl3d3IyR2hXTmJ5R2ZGaDZ1OGp0TjdpMDNvV0YxRXpBSmZtM05TWm1MQ0NHN0JacVBtYmE3VEsvTzJaVUU1eldUdGgrZUlpV2pNZ0ZpbndxbTV3Rk9MYm5uc3NwdllaWGZNU1BzYm9majJhRGw1WldrMEkySldHU2pHOVhGa0tpbWdIbzU0bGlkdlpLc1liRFo3L01Ca2ZNTHZ1Nm0rd1NqS1BtVkVxSjhJYnNXTmpIdmFhVzdQbzRDM1hYT3VGbENSR1ZqeG1qY1BQcnJDZnpPbVZRUTZFMEhSdnhVOHd0SllRS0Y1UENwOHJKVlpzOEdvZkhzdk1iZ0tsMEFaQTdGV3RKaEhEekJQVGY3QjNnTzNpQ202SjlFN0RXMFBlam41cFpwN2plRFhubEVrNXlhVFkxR2NGbHNtaDYvQ3ZMbnFqRlVGb3R2ekVkaGtxNXlvR21PMktTNm9hWTk5NkR6ckd5Ti8vRnJBTVRhZm51dHByOVN2MkFVVnhCbW5XUVJVdUNVTWtEMXNPRkxqRHREMFlta2dDNnlyMHZzZmJEWng5QnU4elo1aHZKd1FFS1ArYlpSdmdOcjE2TUlrTDI1bXFJMmhOeWtwaXZsbjhkWitRdnZ5TktHakdNQmxlRXZPbjBPVFg5dTBLNnlwT3JrUDcvdmo5U045T0E1Y0NFYjdTVThSS0tPM1h6eldzOTNnbmZrZ1xcdTAwM2RcXHUwMDNkXCIsXCJlcGhlbWVyYWxQdWJsaWNLZXlcIjpcIkJIMFU2ZXZBZlk2U1F6VHpnb3dCVEN4cy9kRlN6ZGp3ZkVLbHJidVpFYlQrWStpLy9XZ2FiS2pISVB0eDM2YW5tbmxvWDRTVERTNGNFTDJqUjNWZmQyVVxcdTAwM2RcIixcInRhZ1wiOlwiMDBPQkdqTExJRVUwYlpYYitBdGxKVmVGU1AvTUJseThGZEVHbWJFRSs4b1xcdTAwM2RcIn0ifQ==",
"firstName": "John",
"lastName": "Doe",
"country": "ITA",
"userEmail": "test@gmail.com",
"userIp": "127.0.0.1",
"httpUserAgent": "Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko)
Chrome\/91.0.4472.114 Safari\/537.36",
"3DSecure":
{
"challengeIndicator": "01",
"challengeWindowSize": "05",
"successURL": "http://www.domain.com/SuccessResponse.html",
"failURL": "http://www.domain.com/FailResponse.html",
"cancelURL": "http://www.domain.com/FailResponse.html",
"callbackUrl": "http://www.domain.com/WebhookReceive.html"
}
}
Response example (3DS payment):
{
"timestamp": 1632827809,
"transactionStatus": "AUTH_OK",
"reference": "7c936d6612dd3b6b1d0f12b00a97d837",
"transactionUniqueId": "b9f7780e-4190-4305-a4cb-5e996fe7d33e",
"reason": "Transaction Auth Ok",
"code": "200",
"sessionId": "36fdb76c29f991e190ac6cde64e5b359",
"ascUrl": "https:\/\/www.sh-pay.com\/pay\/response\/?transactionId=7c936d6612dd3b6b1d0f12b00a97d837"
}
If you have got any questions about Google Pay please contact us