مصادقة الطلبات في Google Wallet API

يجب المصادقة على طلبات Google Wallet API لتتمكن واجهة Wallet API من تحديد أن تطبيقك يُقدَّم الطلب.

قبل البدء، تأكَّد من إنشاء بيانات الاعتماد الخاصة بك وتسجيلها بشكل صحيح لكل من Google Wallet REST API وحزمة تطوير البرامج (SDK) لنظام التشغيل Android في "محفظة Google".

طلبات واجهة برمجة التطبيقات REST في "محفظة Google"

تتم مصادقة طلب واجهة برمجة التطبيقات REST في Google Wallet باستخدام مفتاح حساب خدمة Google Cloud بعنوان Google Wallet REST API للحصول على رمز دخول.

تتعامل مكتبات برامج Google 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، يمكنك الرجوع إلى نماذج التعليمات البرمجية الكاملة على 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

لبدء عملية الدمج في 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، يمكنك الرجوع إلى نماذج التعليمات البرمجية الكاملة على GitHub نماذج الرموز على 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"

تتم تلقائيًا مصادقة الطلبات التي تستخدم حزمة تطوير البرامج (SDK) لنظام التشغيل Android في "محفظة Google" باستخدام شهادة توقيع التطبيق. ستعمل حزمة تطوير البرامج (SDK) لنظام التشغيل Android تلقائيًا على إنشاء الملف المرجعي لشهادة SHA-1 لشهادة التوقيع وتضمينه مع الطلبات إلى Google Wallet API.

لمزيد من المعلومات حول إنشاء بصمة SHA-1 لشهادة توقيع التطبيق وتسجيلها، يُرجى الاطّلاع على مصادقة تطبيقك لحزمة تطوير البرامج (SDK) لنظام التشغيل Android في "محفظة Google".