คำขอที่ส่งไปยัง Google Wallet API จะต้องผ่านการตรวจสอบสิทธิ์เพื่อให้ Wallet API ระบุได้ว่าแอปพลิเคชันนั้นเป็นผู้ส่งคำขอ
ก่อนที่จะเริ่มต้น ให้ตรวจสอบว่าคุณได้สร้างและลงทะเบียนข้อมูลรับรองสำหรับ Google Wallet REST API และ Google Wallet Android SDK อย่างถูกต้อง
คำขอ REST API ของ Google Wallet
คำขอไปยัง Google Wallet REST API ได้รับการตรวจสอบสิทธิ์โดยใช้คีย์บัญชีบริการ Google Cloud Google Wallet REST API เพื่อรับโทเค็นเพื่อการเข้าถึง
ไลบรารีของไคลเอ็นต์ Google API จัดการการตรวจสอบสิทธิ์และการสร้างคำขอ API ตรวจสอบว่าคุณติดตั้งไลบรารีสำหรับภาษาโปรแกรมที่ต้องการ ซึ่งตัวอย่างต่อไปนี้ใช้
ก่อนอื่น ให้นำเข้าไลบรารีที่จำเป็นและกำหนดตัวแปรบางอย่างสำหรับ JSON ของบัญชีบริการ และรหัสสำหรับผู้ออก คลาส ผู้ใช้ที่ไม่ซ้ำ และออบเจ็กต์ที่จะบันทึก
Java
หากต้องการเริ่มการผสานรวมของคุณใน Java โปรดดู ตัวอย่างโค้ดใน 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.*; public class DemoTransit { /** * 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 DemoTransit() throws Exception { keyFilePath = System.getenv().getOrDefault("GOOGLE_APPLICATION_CREDENTIALS", "/path/to/key.json"); auth(); }
PHP
หากต้องการเริ่มการผสานรวมใน PHP โปรดดู ตัวอย่างโค้ดใน GitHub
use Firebase\JWT\JWT; use Google\Auth\Credentials\ServiceAccountCredentials; use Google\Client as GoogleClient; use Google\Service\Walletobjects; use Google\Service\Walletobjects\TicketLeg; use Google\Service\Walletobjects\LatLongPoint; use Google\Service\Walletobjects\Barcode; use Google\Service\Walletobjects\ImageModuleData; use Google\Service\Walletobjects\LinksModuleData; use Google\Service\Walletobjects\TextModuleData; use Google\Service\Walletobjects\TransitObject; use Google\Service\Walletobjects\Message; use Google\Service\Walletobjects\AddMessageRequest; use Google\Service\Walletobjects\Uri; use Google\Service\Walletobjects\TranslatedString; use Google\Service\Walletobjects\LocalizedString; use Google\Service\Walletobjects\ImageUri; use Google\Service\Walletobjects\Image; use Google\Service\Walletobjects\TransitClass; /** Demo class for creating and managing Transit passes in Google Wallet. */ class DemoTransit { /** * 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
หากต้องการเริ่มการผสานรวมใน Python โปรดดู ตัวอย่างโค้ดใน GitHub
import json import os import uuid from googleapiclient.discovery import build from googleapiclient.errors import HttpError from googleapiclient.http import BatchHttpRequest from google.oauth2.service_account import Credentials from google.auth import jwt, crypt class DemoTransit: """Demo class for creating and managing Transit 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#
หากต้องการเริ่มการผสานรวมใน C# โปรดดู ตัวอย่างโค้ดใน 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 Transit passes in Google Wallet. /// </summary> class DemoTransit { /// <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 DemoTransit() { keyFilePath = Environment.GetEnvironmentVariable( "GOOGLE_APPLICATION_CREDENTIALS") ?? "/path/to/key.json"; Auth(); }
Node.js
หากต้องการเริ่มการผสานรวมในโหนด โปรดดู ตัวอย่างโค้ดใน GitHub
const { google } = require('googleapis'); const jwt = require('jsonwebtoken'); const { v4: uuidv4 } = require('uuid'); /** * Demo class for creating and managing Transit passes in Google Wallet. */ class DemoTransit { 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
หากต้องการเริ่มการผสานรวมใน Go ให้ดูตัวอย่างโค้ดทั้งหมดใน GitHub ตัวอย่างโค้ดใน 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" )
ถัดไป ให้ใช้ไลบรารีเฟรมเวิร์กรายการใดรายการหนึ่งเพื่อดึงข้อมูลเข้าสู่ระบบที่จำเป็นในการเรียกใช้ Google Wallet API
Java
หากต้องการเริ่มการผสานรวมของคุณใน Java โปรดดู ตัวอย่างโค้ดใน 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
หากต้องการเริ่มการผสานรวมใน PHP โปรดดู ตัวอย่างโค้ดใน 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
หากต้องการเริ่มการผสานรวมใน Python โปรดดู ตัวอย่างโค้ดใน 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#
หากต้องการเริ่มการผสานรวมใน C# โปรดดู ตัวอย่างโค้ดใน 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
หากต้องการเริ่มการผสานรวมในโหนด โปรดดู ตัวอย่างโค้ดใน 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
หากต้องการเริ่มการผสานรวมใน Go ให้ดูตัวอย่างโค้ดทั้งหมดใน GitHub ตัวอย่างโค้ดใน GitHub
// Create authenticated HTTP client using a service account file. func (d *demoTransit) 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
ระบบจะตรวจสอบสิทธิ์คำขอที่ใช้ Google Wallet Android SDK โดยอัตโนมัติโดยใช้ใบรับรอง App Signing ของคุณ Android SDK จะสร้างลายนิ้วมือ SHA-1 ของใบรับรองที่ลงนามโดยอัตโนมัติ และรวมไว้ในคำขอไปยัง Google Wallet API
ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างและการลงทะเบียนลายนิ้วมือ SHA-1 ของใบรับรอง App Signing ได้ที่การให้สิทธิ์แอปสำหรับ Google Wallet Android SDK