Simpler Google Wallet integration for Android developers

MAY 11, 2022

Posted by Petra Cross, Engineer, Google Wallet and Jose Ugia, Google Developer Relations Engineer

Today more than ever, consumers expect to be able to digitize their physical wallet, from payments and loyalty to tickets and IDs. At Google I/O we announced Google Wallet, which allows users to do exactly that. Consumers can securely store and manage their payment and loyalty cards, board a flight, access a gym and much more, all with just their Android phone.

For Android developers, who manage their own digital passes, Google Wallet offers a fast and secure entry point, especially when quick access is needed. Google Wallet will be quickly accessible from the device lock screen on Pixel devices and from the pulldown shade. Your users will be able to quickly access their passes when they need them - all in one place.

Integrating with Google Wallet became even easier and more flexible. We’ve summarized the news of what you can expect as an Android developer.

New Android SDK

The existing Android SDK supports saving three types of passes: offers, loyalty cards, and gift cards. You asked us to add support for other pass types, and we’ve heard you. Today, we are announcing a new, more extensible API and Android SDK, that in addition to tickets, boarding passes, and transit tickets, and additional pass types, includes support for the new generic pass, which lets your users store any pass or card to Google Wallet. The Android SDK lets you create passes using JSON or JSON Web Token as a payload without a backend integration.

Using the Android SDK is straightforward. First, you create a payload with information about the pass. You can either build it directly in your Android app, or retrieve it from your backend stack. Then, you call the savePasses or savePassesJwt method in the "PayClient" to add the pass to Google Wallet.

Here is how you define and save a sample generic pass object:

{

  "id""ISSUER_ID.OBJECT_ID",

  "classId""CLASS_ID",

  "genericType""GENERIC_TYPE_UNSPECIFIED",

  "cardTitle": {

    "defaultValue": {

      "language""en",

      "value""Your Program Name"

    }

  },

  "header": {

    "defaultValue": {

      "language""en",

      "value""Alex McJacobs"

    }

  }

}


private val addToGoogleWalletRequestCode = 1000

private val walletClientPayClient = Pay.getClient(application)

private val jwtString = "" // Fetch a previously created JWT with pass data

walletClient.savePassesJwt(jwtString, thisaddToGoogleWalletRequestCode)

Once your app calls savePassesJwt, the process guides your users through the flow of adding a pass to Google Wallet, and allows them to preview the pass before confirming the save operation.

Developer documentation, samples and codelabs

You can find the new Wallet API documentation on developers.google.com/wallet. We customized our developer guides for each pass type to make all the information easily accessible for your specific needs. You will also find plenty of code samples demonstrating how to check for availability of the Google Wallet API on the Android device, how to handle errors, and how to add the “Add to Google Wallet” button to your app.

Don’t forget to play with our interactive passes visual demo, which lets you fill in the fields and create your own custom pass prototype without writing a single line of code. The tool also generates code samples that you can use to build this pass’ data structures which we call “classes” and “objects”.

We’re really excited to build a great digital wallet experience with you, and can’t wait to see how you use the Google Wallet API to enrich your customer experience. Take a look at our hands-on workshop "Digitize any wallet object with the Google Wallet API" to see a full integration tutorial on Android.

Learn more