אימות בקשות ל-API של Google Wallet

בקשות ל-API של Google Wallet חייבות להיות מאומתות כדי שממשק ה-API של Google Wallet יוכל לזהות שהבקשה נשלחת על ידי האפליקציה שלך.

לפני שתתחילו, ודאו שיצרתם ורשמתם כראוי את פרטי הכניסה ל-API ל-REST של Google Wallet ול-Android SDK של Google Wallet.

בקשות API ל-REST של Google Wallet

בקשות לממשק API ל-REST של Google Wallet מאומתות באמצעות מפתח חשבון שירות של Google Cloud מסוג Google Wallet 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.*;

/** Demo class for creating and managing Gift cards in Google Wallet. */
public class DemoGiftCard {
  /**
   * 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 DemoGiftCard() 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\DateTime;
use Google\Service\Walletobjects\Money;
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\TranslatedString;
use Google\Service\Walletobjects\LocalizedString;
use Google\Service\Walletobjects\ImageUri;
use Google\Service\Walletobjects\Image;
use Google\Service\Walletobjects\GiftCardObject;
use Google\Service\Walletobjects\Message;
use Google\Service\Walletobjects\AddMessageRequest;
use Google\Service\Walletobjects\Uri;
use Google\Service\Walletobjects\GiftCardClass;

/** Demo class for creating and managing Gift cards in Google Wallet. */
class DemoGiftCard
{
  /**
   * 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 google.oauth2.service_account import Credentials
from google.auth import jwt, crypt


class DemoGiftCard:
    """Demo class for creating and managing Gift cards 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 Gift cards in Google Wallet.
/// </summary>
class DemoGiftCard
{
  /// <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 DemoGiftCard()
  {
    keyFilePath = Environment.GetEnvironmentVariable(
        "GOOGLE_APPLICATION_CREDENTIALS") ?? "/path/to/key.json";

    Auth();
  }

Node.js

כדי להתחיל את השילוב ב-Node, אפשר לעיין ב דוגמאות הקוד המלאות ב-GitHub.

const { google } = require('googleapis');
const jwt = require('jsonwebtoken');
const { v4: uuidv4 } = require('uuid');

/**
 * Demo class for creating and managing Gift cards in Google Wallet.
 */
class DemoGiftCard {
  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.

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"
)

בשלב הבא, משתמשים באחת מספריות ה-framework כדי לאחזר את פרטי הכניסה הנחוצים כדי לקרוא ל-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

כדי להתחיל את השילוב ב-Node, אפשר לעיין ב דוגמאות הקוד המלאות ב-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.

// Create authenticated HTTP client using a service account file.
func (d *demoGiftcard) 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))
}

בקשות SDK של Android עבור Google Wallet

בקשות שמשתמשות ב-Android SDK של Google Wallet מאומתות באופן אוטומטי באמצעות אישור חתימת האפליקציה שלך. ערכת Android SDK תיצור באופן אוטומטי את טביעת האצבע SHA-1 של אישור החתימה שלך ותכלול אותה בבקשות ל-Google Wallet API.

למידע נוסף על יצירה ורישום של טביעת אצבע SHA-1 של אישור חתימת האפליקציה שלך, ראה מתן הרשאה לאפליקציה עבור ה-SDK של Android עבור Google Wallet.