Applies to: Web Payments SDK
Learn how to take Google Pay payments in a web client with the Web Payments SDK.
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:
You can find a complete example of the Google Pay code on GitHub.
- Google Pay is supported on Google Chrome, Mozilla Firefox, Apple Safari, Microsoft Edge, Opera, and UCWeb UC browsers.
- Google Pay requires HTTPS.
- Square supports Google Pay in all regions except Japan. Google Pay incorporates the region's local currency.
- You've read and will adhere to Google Pay API Terms of Service, Google Pay API Acceptable Use Policy, and Google's brand guidelines.
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:
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>Add the following two functions to your script tag:
function buildPaymentRequest(payments) { return payments.paymentRequest({ countryCode: 'US', currencyCode: 'USD', total: { amount: '1.00', label: 'Total', }, }); } async function initializeGooglePay(payments) { const paymentRequest = buildPaymentRequest(payments) const googlePay = await payments.googlePay(paymentRequest); await googlePay.attach('#google-pay-button'); return googlePay; }In the
DOMContentLoaded eventListener
, add the following code after you initialize theGooglePay
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.
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.
Add the following code after
// Checkpoint 2
in theDOMContentLoaded 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
Navigate to http://localhost:3000/ in your browser.
Choose the Google Pay button.
Use your own personal card. This card isn't charged or stored in the Sandbox environment.
Success
You should see the Google Pay form and be able to complete a payment.
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.