Take a Google Pay Payment

Applies to: Web Payments SDK

Learn how to take Google Pay payments in a web client with the Web Payments SDK.

Link to section

Overview

You can add Google Pay to the application you built in Web Payments SDK Quickstart using the quickstart project sample. To see whether digital wallets are supported in your country, see Digital wallet payments.

The following steps add code to the quickstart project sample. If you haven't created an application using the quickstart, you need to do so before completing these steps.

The following shows the Google Pay pay sheet rendered by the Web Payments SDK:

A graphic showing the Google Pay pay sheet rendered by the Web Payments SDK.

You can find a complete example of the Google Pay code on GitHub.

Link to section

Requirements and limitations

Link to section

1. Attach Google Pay to the page

The Google Pay payment method needs information about the buyer and the payment amount before it can open the Google Pay sheet. Your application creates a PaymentRequest object to provide that information and then gets a new GooglePay object initialized with it.

The following code creates the payment request and attaches the GooglePay method to the page:

  1. Add an HTML element to the prerequisite walkthrough form with an ID of google-pay-button. The HTML for the body of index.html should look like the following:

    <form id="payment-form"> <!-- Add the google-pay-button div below --> <div id="google-pay-button"></div> <div id="card-container"></div> <button id="card-button" type="button">Pay $1.00</button> </form> <div id="payment-status-container"></div>
  2. Add the following two functions to your script tag:

  3. In the DOMContentLoaded eventListener, add the following code after you initialize the GooglePay method:

    let googlePay; try { googlePay = await initializeGooglePay(payments); } catch (e) { console.error('Initializing Google Pay failed', e); // There are a number of reasons why Google Pay might not be supported. // (e.g. Browser Support, Device Support, Account). Therefore you // should handle initialization failures, while still loading other // applicable payment methods. }

Test the application

Navigate to http://localhost:3000/ in your browser.

A graphic showing a typical payment card input and Google Pay layout for Web Payments SDK integrations.

Success

You should see the Google Pay button rendered on your page.

This step uses the standard configuration options for the Google Pay button. More options to customize the Google Pay button with the GooglePay.attach() method and the googlePayButtonOptions object are available in the Web Payments SDK technical reference.

Link to section

2. Get the payment token from the Google Pay payment method

  1. Add the following code after // Checkpoint 2 in the DOMContentLoaded eventListener function:

    if (googlePay !== undefined) { const googlePayButton = document.getElementById('google-pay-button'); googlePayButton.addEventListener('click', async function (event) { await handlePaymentMethodSubmission(event, googlePay); }); }

Test the application

  1. Navigate to http://localhost:3000/ in your browser.

  2. Choose the Google Pay button.

  3. Use your own personal card. This card isn't charged or stored in the Sandbox environment.

    An animation showing Google Pay being used to pay $1.00.

    Success

    You should see the Google Pay form and be able to complete a payment.

Link to section

Payment request details

Before your application can request a digital wallet payment, it must provide payment request details that the digital wallet page shows to the buyer. The previous examples show a payment request with a specified country, currency, and payment amount. In production use, your application might need to declare payment requests that include more detail and with added event listeners. To learn more about advanced payment requests, see Payment Requests.

Link to section

Next step

To add security to a payment method, you can add the Strong Customer Authentication (SCA) security protocol layer to the application and verify the identity of the payment card holder by using the verifyBuyer function. For more information, see Strong Customer Authentication.

Important

SCA should be called for all customer-initiated transactions, including digital wallet payments. If the seller doesn't have SCA called for digital wallet payments, the transactions might be declined due to a lack of authentication.