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