Authenticate requests to the Google Wallet API

Requests to the Google Wallet API must be authenticated so that the Wallet API can identify that the request is being made by your application.

Before you begin, ensure you have properly generated and registered your credentials for the Google Wallet REST API and Google Wallet Android SDK .

Google Wallet REST API requests

Request to the Google Wallet REST API are authenticated using a Google Wallet REST API Google Cloud service account key to obtain an access token.

The Google API Client Libraries handle authentication and making API requests. Make sure you install the library for your preferred programming language, which the following examples use.

First, perform the necessary library imports and define some variables for the service account JSON, and IDs for the issuer, class, unique user and object that will be saved.

Java

To start your integration in Java, refer to our complete code samples on GitHub .

 import 
  
 com.auth0.jwt.JWT 
 ; 
 import 
  
 com.auth0.jwt.algorithms.Algorithm 
 ; 
 import 
  
 com.google.api.client.googleapis.batch.BatchRequest 
 ; 
 import 
  
 com.google.api.client.googleapis.batch.json.JsonBatchCallback 
 ; 
 import 
  
 com.google.api.client.googleapis.javanet.GoogleNetHttpTransport 
 ; 
 import 
  
 com.google.api.client.googleapis.json.GoogleJsonError 
 ; 
 import 
  
 com.google.api.client.googleapis.json.GoogleJsonResponseException 
 ; 
 import 
  
 com.google.api.client.http.* 
 ; 
 import 
  
 com.google.api.client.json.gson.GsonFactory 
 ; 
 import 
  
 com.google.api.services.walletobjects.* 
 ; 
 import 
  
 com.google.api.services.walletobjects.model.* 
 ; 
 import 
  
 com.google.auth.http.HttpCredentialsAdapter 
 ; 
 import 
  
 com.google.auth.oauth2.GoogleCredentials 
 ; 
 import 
  
 com.google.auth.oauth2.ServiceAccountCredentials 
 ; 
 import 
  
 java.io.* 
 ; 
 import 
  
 java.security.interfaces.RSAPrivateKey 
 ; 
 import 
  
 java.util.* 
 ; 
 /** Demo class for creating and managing Generic passes in Google Wallet. */ 
 public 
  
 class 
 DemoGeneric 
  
 { 
  
 /** 
 * Path to service account key file from Google Cloud Console. Environment variable: 
 * GOOGLE_APPLICATION_CREDENTIALS. 
 */ 
  
 public 
  
 static 
  
 String 
  
 keyFilePath 
 ; 
  
 /** Service account credentials for Google Wallet APIs. */ 
  
 public 
  
 static 
  
 GoogleCredentials 
  
 credentials 
 ; 
  
 /** Google Wallet service client. */ 
  
 public 
  
 static 
  
 Walletobjects 
  
 service 
 ; 
  
 public 
  
 DemoGeneric 
 () 
  
 throws 
  
 Exception 
  
 { 
  
 keyFilePath 
  
 = 
  
 System 
 . 
 getenv 
 (). 
 getOrDefault 
 ( 
 "GOOGLE_APPLICATION_CREDENTIALS" 
 , 
  
 "/path/to/key.json" 
 ); 
  
 auth 
 (); 
  
 } 

PHP

To start your integration in PHP, refer to our complete code samples on GitHub .

 use Firebase\JWT\JWT; 
 use Google\Auth\Credentials\ServiceAccountCredentials; 
 use Google\Client as GoogleClient; 
 use Google\Service\Walletobjects; 
 use Google\Service\Walletobjects\GenericObject; 
 use Google\Service\Walletobjects\GenericClass; 
 use Google\Service\Walletobjects\Barcode; 
 use Google\Service\Walletobjects\ImageModuleData; 
 use Google\Service\Walletobjects\LinksModuleData; 
 use Google\Service\Walletobjects\TextModuleData; 
 use Google\Service\Walletobjects\TranslatedString; 
 use Google\Service\Walletobjects\LocalizedString; 
 use Google\Service\Walletobjects\ImageUri; 
 use Google\Service\Walletobjects\Image; 
 use Google\Service\Walletobjects\Uri; 
 /** Demo class for creating and managing Generic passes in Google Wallet. */ 
 class DemoGeneric 
 { 
 /** 
 * The Google API Client 
 * https://github.com/google/google-api-php-client 
 */ 
 public GoogleClient $client; 
 /** 
 * Path to service account key file from Google Cloud Console. Environment 
 * variable: GOOGLE_APPLICATION_CREDENTIALS. 
 */ 
 public string $keyFilePath; 
 /** 
 * Service account credentials for Google Wallet APIs. 
 */ 
 public ServiceAccountCredentials $credentials; 
 /** 
 * Google Wallet service client. 
 */ 
 public Walletobjects $service; 
 public function __construct() 
 { 
 $this->keyFilePath = getenv('GOOGLE_APPLICATION_CREDENTIALS') ?: '/path/to/key.json'; 
 $this->auth(); 
 } 

Python

To start your integration in Python, refer to our complete code samples on GitHub .

 import 
  
 json 
 import 
  
 os 
 import 
  
 uuid 
 from 
  
 googleapiclient.discovery 
  
 import 
 build 
 from 
  
 googleapiclient.errors 
  
 import 
 HttpError 
 from 
  
 google.oauth2.service_account 
  
 import 
 Credentials 
 from 
  
 google.auth 
  
 import 
 jwt 
 , 
 crypt 
 class 
  
 DemoGeneric 
 : 
  
 """Demo class for creating and managing Generic passes in Google Wallet. 
 Attributes: 
 key_file_path: Path to service account key file from Google Cloud 
 Console. Environment variable: GOOGLE_APPLICATION_CREDENTIALS. 
 base_url: Base URL for Google Wallet API requests. 
 """ 
 def 
  
 __init__ 
 ( 
 self 
 ): 
 self 
 . 
 key_file_path 
 = 
 os 
 . 
 environ 
 . 
 get 
 ( 
 'GOOGLE_APPLICATION_CREDENTIALS' 
 , 
 '/path/to/key.json' 
 ) 
 # Set up authenticated client 
 self 
 . 
 auth 
 () 

C#

To start your integration in C#, refer to our complete code samples on GitHub .

 using 
  
 System.IdentityModel.Tokens.Jwt 
 ; 
 using 
  
 System.Net.Http.Headers 
 ; 
 using 
  
 System.Text.RegularExpressions 
 ; 
 using 
  
 Google.Apis.Auth.OAuth2 
 ; 
 using 
  
 Google.Apis.Services 
 ; 
 using 
  
 Google.Apis.Walletobjects.v1 
 ; 
 using 
  
 Google.Apis.Walletobjects.v1.Data 
 ; 
 using 
  
 Microsoft.IdentityModel.Tokens 
 ; 
 using 
  
 Newtonsoft.Json 
 ; 
 using 
  
 Newtonsoft.Json.Linq 
 ; 
 /// <summary> 
 /// Demo class for creating and managing Generic passes in Google Wallet. 
 /// </summary> 
 class 
  
 DemoGeneric 
 { 
  
 /// <summary> 
  
 /// Path to service account key file from Google Cloud Console. Environment 
  
 /// variable: GOOGLE_APPLICATION_CREDENTIALS. 
  
 /// </summary> 
  
 public 
  
 static 
  
 string 
  
 keyFilePath 
 ; 
  
 /// <summary> 
  
 /// Service account credentials for Google Wallet APIs 
  
 /// </summary> 
  
 public 
  
 static 
  
 ServiceAccountCredential 
  
 credentials 
 ; 
  
 /// <summary> 
  
 /// Google Wallet service client 
  
 /// </summary> 
  
 public 
  
 static 
  
 WalletobjectsService 
  
 service 
 ; 
  
 public 
  
 DemoGeneric 
 () 
  
 { 
  
 keyFilePath 
  
 = 
  
 Environment 
 . 
 GetEnvironmentVariable 
 ( 
  
 "GOOGLE_APPLICATION_CREDENTIALS" 
 ) 
  
 ?? 
  
 "/path/to/key.json" 
 ; 
  
 Auth 
 (); 
  
 } 

Node.js

To start your integration in Node, refer to our complete code samples on GitHub .

 const 
  
 { 
  
 google 
  
 } 
  
 = 
  
 require 
 ( 
 'googleapis' 
 ); 
 const 
  
 jwt 
  
 = 
  
 require 
 ( 
 'jsonwebtoken' 
 ); 
 const 
  
 { 
  
 v4 
 : 
  
 uuidv4 
  
 } 
  
 = 
  
 require 
 ( 
 'uuid' 
 ); 
 /** 
 * Demo class for creating and managing Generic passes in Google Wallet. 
 */ 
 class 
  
 DemoGeneric 
  
 { 
  
 constructor 
 () 
  
 { 
  
 /** 
 * Path to service account key file from Google Cloud Console. Environment 
 * variable: GOOGLE_APPLICATION_CREDENTIALS. 
 */ 
  
 this 
 . 
 keyFilePath 
  
 = 
  
 process 
 . 
 env 
 . 
 GOOGLE_APPLICATION_CREDENTIALS 
  
 || 
  
 '/path/to/key.json' 
 ; 
  
 this 
 . 
 auth 
 (); 
  
 } 

Go

To start your integration in Go, refer to our complete code samples on GitHub code samples on Github .

 package 
  
 main 
 import 
  
 ( 
  
 "bytes" 
  
 "context" 
  
 "encoding/json" 
  
 "fmt" 
  
 "github.com/golang-jwt/jwt" 
  
 "github.com/google/uuid" 
  
 "golang.org/x/oauth2" 
  
 "golang.org/x/oauth2/google" 
  
 oauthJwt 
  
 "golang.org/x/oauth2/jwt" 
  
 "google.golang.org/api/option" 
  
 "google.golang.org/api/walletobjects/v1" 
  
 "io" 
  
 "log" 
  
 "os" 
  
 "strings" 
 ) 

Next, use one of the framework libraries to retrieve the necessary credentials to call the Google Wallet API.

Java

To start your integration in Java, refer to our complete code samples on GitHub .

 /** 
 * Create authenticated HTTP client using a service account file. 
 * 
 */ 
 public 
  
 void 
  
 auth 
 () 
  
 throws 
  
 Exception 
  
 { 
  
 credentials 
  
 = 
  
 GoogleCredentials 
 . 
 fromStream 
 ( 
 new 
  
 FileInputStream 
 ( 
 keyFilePath 
 )) 
  
 . 
 createScoped 
 ( 
 List 
 . 
 of 
 ( 
 WalletobjectsScopes 
 . 
 WALLET_OBJECT_ISSUER 
 )); 
  
 credentials 
 . 
 refresh 
 (); 
  
 HttpTransport 
  
 httpTransport 
  
 = 
  
 GoogleNetHttpTransport 
 . 
 newTrustedTransport 
 (); 
  
 // Initialize Google Wallet API service 
  
 service 
  
 = 
  
 new 
  
 Walletobjects 
 . 
 Builder 
 ( 
  
 httpTransport 
 , 
  
 GsonFactory 
 . 
 getDefaultInstance 
 (), 
  
 new 
  
 HttpCredentialsAdapter 
 ( 
 credentials 
 )) 
  
 . 
 setApplicationName 
 ( 
 "APPLICATION_NAME" 
 ) 
  
 . 
 build 
 (); 
 } 

PHP

To start your integration in PHP, refer to our complete code samples on GitHub .

 /** 
 * Create authenticated HTTP client using a service account file. 
 */ 
 public function auth() 
 { 
 $this->credentials = new ServiceAccountCredentials( 
 Walletobjects::WALLET_OBJECT_ISSUER, 
 $this->keyFilePath 
 ); 
 // Initialize Google Wallet API service 
 $this->client = new GoogleClient(); 
 $this->client->setApplicationName('APPLICATION_NAME'); 
 $this->client->setScopes(Walletobjects::WALLET_OBJECT_ISSUER); 
 $this->client->setAuthConfig($this->keyFilePath); 
 $this->service = new Walletobjects($this->client); 
 } 

Python

To start your integration in Python, refer to our complete code samples on GitHub .

 def 
  
 auth 
 ( 
 self 
 ): 
  
 """Create authenticated HTTP client using a service account file.""" 
 self 
 . 
 credentials 
 = 
 Credentials 
 . 
 from_service_account_file 
 ( 
 self 
 . 
 key_file_path 
 , 
 scopes 
 = 
 [ 
 'https://www.googleapis.com/auth/wallet_object.issuer' 
 ]) 
 self 
 . 
 client 
 = 
 build 
 ( 
 'walletobjects' 
 , 
 'v1' 
 , 
 credentials 
 = 
 self 
 . 
 credentials 
 ) 

C#

To start your integration in C#, refer to our complete code samples on GitHub .

 /// <summary> 
 /// Create authenticated service client using a service account file. 
 /// </summary> 
 public 
  
 void 
  
 Auth 
 () 
 { 
  
 credentials 
  
 = 
  
 ( 
 ServiceAccountCredential 
 ) 
 GoogleCredential 
  
 . 
 FromFile 
 ( 
 keyFilePath 
 ) 
  
 . 
 CreateScoped 
 ( 
 new 
  
 List<string> 
  
 { 
  
 WalletobjectsService 
 . 
 ScopeConstants 
 . 
 WalletObjectIssuer 
  
 }) 
  
 . 
 UnderlyingCredential 
 ; 
  
 service 
  
 = 
  
 new 
  
 WalletobjectsService 
 ( 
  
 new 
  
 BaseClientService 
 . 
 Initializer 
 () 
  
 { 
  
 HttpClientInitializer 
  
 = 
  
 credentials 
  
 }); 
 } 

Node.js

To start your integration in Node, refer to our complete code samples on GitHub .

 /** 
 * Create authenticated HTTP client using a service account file. 
 */ 
 auth 
 () 
  
 { 
  
 const 
  
 auth 
  
 = 
  
 new 
  
 google 
 . 
 auth 
 . 
 GoogleAuth 
 ({ 
  
 keyFile 
 : 
  
 this 
 . 
 keyFilePath 
 , 
  
 scopes 
 : 
  
 [ 
 'https://www.googleapis.com/auth/wallet_object.issuer' 
 ], 
  
 }); 
  
 this 
 . 
 credentials 
  
 = 
  
 require 
 ( 
 this 
 . 
 keyFilePath 
 ); 
  
 this 
 . 
 client 
  
 = 
  
 google 
 . 
 walletobjects 
 ({ 
  
 version 
 : 
  
 'v1' 
 , 
  
 auth 
 : 
  
 auth 
 , 
  
 }); 
 } 

Go

To start your integration in Go, refer to our complete code samples on GitHub code samples on Github .

 // Create authenticated HTTP client using a service account file. 
 func 
  
 ( 
 d 
  
 * 
 demoGeneric 
 ) 
  
 auth 
 () 
  
 { 
  
 credentialsFile 
  
 := 
  
 os 
 . 
 Getenv 
 ( 
 "GOOGLE_APPLICATION_CREDENTIALS" 
 ) 
  
 b 
 , 
  
 _ 
  
 := 
  
 os 
 . 
 ReadFile 
 ( 
 credentialsFile 
 ) 
  
 credentials 
 , 
  
 err 
  
 := 
  
 google 
 . 
 JWTConfigFromJSON 
 ( 
 b 
 , 
  
 walletobjects 
 . 
 WalletObjectIssuerScope 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 fmt 
 . 
 Println 
 ( 
 err 
 ) 
  
 log 
 . 
 Fatalf 
 ( 
 "Unable to load credentials: %v" 
 , 
  
 err 
 ) 
  
 } 
  
 d 
 . 
 credentials 
  
 = 
  
 credentials 
  
 d 
 . 
 service 
 , 
  
 _ 
  
 = 
  
 walletobjects 
 . 
 NewService 
 ( 
 context 
 . 
 Background 
 (), 
  
 option 
 . 
 WithCredentialsFile 
 ( 
 credentialsFile 
 )) 
 } 

Google Wallet Android SDK requests

Requests using the Google Wallet Android SDK are automatically autheticated using you app signing certificate. The Android SDK will automatically create the SHA-1 fingerprint of your signing certificate and include it with requests to the Google Wallet API.

For more information on generating and registering the SHA-1 fingerprint of your app signing certificate, see Authorizing your app for the Google Wallet Android SDK .

Create a Mobile Website
View Site in Mobile | Classic
Share by: