Google Pay™ (BETA)


What is Google Pay™

Google Pay is the payment system by Google. Google Pay will securely store the credit card data in the Google Pay account. Paying using the mobile phone (via NFC) or on a website will be matters of seconds, from the moment a user clicks on “pay with Google Pay” to the reception of the payment.

More info on building Google Pay on you app and web sites can be found on Google Developers.

Google Pay is currently available only for Gestpay Professional version.

How to enable on Gestpay

Ask Gestpay customer care to enable Google Pay with your Gestpay account.

Setup the javascript code on your website

Follow the guide Tutorial on Google Pay | Google Developers to generate the code that allows to pay via Google Pay.

At step 2, you must define the tokenSpecification obect as follows:

"tokenizationSpecification": {
    "type": "PAYMENT_GATEWAY",
    "parameters": {
        "gateway": "gestpay",
        "gatewayMerchantId": "GESPAYXXXXX"
    }
}

Change GESPAYXXXXX with your gestpay shop login.

At step 3 define the supported payment card networks. For Gestpay, use:

const allowedCardNetworks = ["MASTERCARD", "VISA"];
const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];

At step 5, you can set the Google Pay environment. By setting it to test, no real money is involved:

const paymentsClient =
    new google.payments.api.PaymentsClient({environment: 'TEST'});
// other possible value: {environment: 'PRODUCTION'}

If you use the TEST environment, remember to set the gatewayMerchantId to your test shop login.

Send the result to Gestpay

At step 9, you register for the user click and perform the payment by calling loadPaymentData():

function onGooglePaymentButtonClicked() {
    ...
    paymentsClient.loadPaymentData(paymentDataRequest)
      .then(function(paymentData) {
        // send to Gestpay 
        processPayment(paymentData);
      })
    ...
}

You must take the paymentData response object and submit to Gestpay, using your favourite method.

Send to Gestpay via SOAP

You can send to Gestpay the result of the payment via callPagamS2S

<callPagamS2S>
  <!-- mandatory data -->
  <shopLogin>9000002</shopLogin>
  <uicCode>242</uicCode><!-- code for euro -->
  <amount>24.21</amount>
  <shopTransactionId>MYSHOP-0001</shopTransactionId>
  <!-- attach here the paymentData JSON -->
  <googlePay>
    <tokenizationData>
      <token>{"signature":"MEQCIAqZ1FIJMQmYxxtkUD3bU+qb/TT+GtQcYXhGZbmrYNQJAiB34P05djwyRT++tU8A6HfJy2bxlY6hmjDP+2Dms131jQ\u003d\u003d","protocolVersion":"ECv1","signedMessage":"{\"encryptedMessage\":\"GyRhs5im1clEgsjLYyUErcyA3GV68/Qab5ZsttyU/OrKo+oZjO2M0pyMOvsNX57nZCIPcCD0h1bL7sDZW7Igf6yiieqSbUvHxZHz3vYTitqbHKv9FVK+GhZq9kVk+r7vI/YG5/pi78b85f+hsYCz+JZMxDzIM8lntF8G+d3+8yl3ZW0H2wvRGpJlIP+dMTURv9ilZDlf1IoD7mhWcJcvpPOVS3cr2dyooDfGASA6FQOJu27aNgYDgtbKDcWkUEAUiR2+gg4irHpDYZCzlwmqV7uC8ZUUdyOpRNHOXLVuYou8aGuUp4jG2SlrWcSHaqcJV4o22pi24HUvwqMTRxojcMVpXorpIHS29F7HkQ3YMSjrtWNvmFZa3nYqyMbfh7E49zf+si4Kqd/yXyJDWJzXJoGBrr+8BEHGIcQ5ZFbfpASS1eRLWxJICOsmIMtapT/nZYAdvQTqqynscBu/hRZYP6471w\\u003d\\u003d\",\"ephemeralPublicKey\":\"BFqAUi7Sp0yqHF34Mm51mOlufyl80D/MAbcwXBqRxUmVrsLjrrOft+pa4GRFL9nyx02S1LjnpjNmX2WvMtdqIn0\\u003d\",\"tag\":\"XBpz+yRiJ5VQfdx+qxKTN4haZXGMZYORJsWT2P6jlq0\\u003d\"}"}
      </token>
    </tokenizationData>
  </googlePay>
  <!-- fill the remaining fields with usual data --> 
  ...
</callPagamS2S>

If the callPagamS2S response has success, the payment is completed.

Send to Gestpay via REST

To pay using the REST APIs, you should add this to POST payment/submit:

{  
  "shopLogin":"GESPAY12345",
  "paymentType":"googlepay",
  ...
  "paymentTypeDetails": {  
    "googlePay": {  
      "tokenizationData": {
        // attach here the paymentData JSON 
        "token": {
          "signature":"MEQCIAqZ1FIJMQmYxxtkUD3bU+qb/TT+GtQcYXhGZbmrYNQJAiB34P05djwyRT++tU8A6HfJy2bxlY6hmjDP+2Dms131jQ\u003d\u003d","protocolVersion":"ECv1","signedMessage":"{\"encryptedMessage\":\"GyRhs5im1clEgsjLYyUErcyA3GV68/Qab5ZsttyU/OrKo+oZjO2M0pyMOvsNX57nZCIPcCD0h1bL7sDZW7Igf6yiieqSbUvHxZHz3vYTitqbHKv9FVK+GhZq9kVk+r7vI/YG5/pi78b85f+hsYCz+JZMxDzIM8lntF8G+d3+8yl3ZW0H2wvRGpJlIP+dMTURv9ilZDlf1IoD7mhWcJcvpPOVS3cr2dyooDfGASA6FQOJu27aNgYDgtbKDcWkUEAUiR2+gg4irHpDYZCzlwmqV7uC8ZUUdyOpRNHOXLVuYou8aGuUp4jG2SlrWcSHaqcJV4o22pi24HUvwqMTRxojcMVpXorpIHS29F7HkQ3YMSjrtWNvmFZa3nYqyMbfh7E49zf+si4Kqd/yXyJDWJzXJoGBrr+8BEHGIcQ5ZFbfpASS1eRLWxJICOsmIMtapT/nZYAdvQTqqynscBu/hRZYP6471w\\u003d\\u003d\",\"ephemeralPublicKey\":\"BFqAUi7Sp0yqHF34Mm51mOlufyl80D/MAbcwXBqRxUmVrsLjrrOft+pa4GRFL9nyx02S1LjnpjNmX2WvMtdqIn0\\u003d\",\"tag\":\"XBpz+yRiJ5VQfdx+qxKTN4haZXGMZYORJsWT2P6jlq0\\u003d\"}"
          }
       }
    }
  },
  "responseURLs":{  
    ...
  }
}

If payment/submit returns status code 200, the payment is completed.