مرور کلی کلاس ها و اشیاء را پاس می کند

تقریباً تمام مجوزهایی که می‌توانید برای ذخیره در کیف پول گوگل (Google Wallet) به کاربر نهایی بدهید، توسط دو جزء تعریف می‌شوند: یک کلاس Passes و یک شیء Passes. هر زمان که برای یک کاربر مجوزی صادر می‌کنید، به نمونه‌ای از هر دو کلاس Passes و یک شیء Passes نیاز خواهید داشت که به API کیف پول گوگل می‌گوید چه نوع مجوزی را بسازد و همچنین جزئیاتی را که باید روی مجوز نمایش داده شود، مانند ارزش کارت هدیه یا نام دارنده بلیط، را مشخص می‌کند.

رابط برنامه‌نویسی کاربردی (API) کیف پول گوگل مجموعه‌ای از کلاس‌های Passes و اشیاء Passes از پیش تعریف‌شده را ارائه می‌دهد که شما نمونه‌هایی از آنها ایجاد می‌کنید و سپس از آنها برای ایجاد مجوزی که برای کاربر صادر می‌شود، مانند GiftCardClass و GiftCardObject ، GenericClass و GenericObject و موارد دیگر استفاده می‌کنید.

هر نمونه از Passes Class و Passes Object به عنوان یک شیء JSON تعریف می‌شود که مجموعه‌ای از ویژگی‌های الزامی و اختیاری دارد که با مورد استفاده خاص در نظر گرفته شده برای آن نوع Pass مطابقت دارند.

کلاس‌ها را می‌گذراند

کلاس Passes را به عنوان یک الگوی مشترک در نظر بگیرید که برای ایجاد یک یا چند Pass که برای کاربران خود صادر خواهید کرد، استفاده می‌شود. یک کلاس Passes مجموعه‌ای مشترک از ویژگی‌ها را تعریف می‌کند که در تمام Passهایی که به آن ارجاع می‌دهند، گنجانده خواهد شد.

برای مثال، نمونه‌ی زیر از کلاس EventTicketClass فیلدهایی را تعریف می‌کند که برای همه بلیط‌های صادر شده برای یک رویداد آینده مشترک هستند (محل برگزاری، نام رویداد، صادرکننده، تاریخ/زمان).

{
  "id": "ISSUER_ID.EVENT_CLASS_ID",
  "issuerName": "[TEST ONLY] Heraldic Event",
  "localizedIssuerName": {
    "defaultValue": {
      "language": "en-US",
      "value": "[TEST ONLY] Heraldic Event"
    }
  },
  "eventName": {
    "defaultValue": {
      "language": "en-US",
      "value": "Google Live"
    }
  },
  "venue": {
    "name": {
      "defaultValue": {
        "language": "en-US",
        "value": "Shoreline Amphitheater"
      }
    },
    "address": {
      "defaultValue": {
        "language": "en-US",
        "value": "ADDRESS_OF_THE_VENUE"
      }
    }
  },
  "dateTime": {
    "start": "2023-04-12T11:30"
  },
  "reviewStatus": "UNDER_REVIEW"
}
  

هر نمونه از کلاس Passes به یک ویژگی id نیاز دارد که شما آن را مشخص می‌کنید. این شناسه کلاس به عنوان یک شناسه منحصر به فرد عمل می‌کند که هر زمان که از آن برای ایجاد یک نمونه جدید از شیء Passes استفاده می‌کنید، به آن ارجاع خواهید داد.

اشیاء را عبور می‌دهد

در حالی که یک نمونه از کلاس Passes مجموعه‌ای از ویژگی‌های مشترک را برای استفاده در یک یا چند گذر مشخص می‌کند، یک شیء Passes جزئیات منحصر به فرد یک گذر خاص را که برای یک کاربر خاص صادر می‌شود، مشخص می‌کند.

برای مثال، وقتی یک Event Ticket Pass با استفاده از Google Wallet API ایجاد می‌شود، یک نمونه EventTicketObject شامل ویژگی‌هایی برای صندلی اختصاص داده شده به آن بلیط است، زیرا این مقادیر برای هر بلیط صادر شده منحصر به فرد خواهند بود.

{
  "id": "ISSUER_ID.OBJECT_ID",
  "classId": "ISSUER_ID.EVENT_CLASS_ID",
  "state": "ACTIVE",
  "seatInfo": {
    "seat": {
      "defaultValue": {
        "language": "en-us",
        "value": "9"
      }
    },
    "row": {
      "defaultValue": {
        "language": "en-us",
        "value": "L"
      }
    },
    "section": {
      "defaultValue": {
        "language": "en-us",
        "value": "45"
      }
    },
    "gate": {
      "defaultValue": {
        "language": "en-us",
        "value": "7C"
      }
    }
  },
  "barcode": {
    "type": "BARCODE_TYPE_UNSPECIFIED",
    "value": "BARCODE_VALUE",
    "alternateText": ""
  }
}
  

هر نمونه از شیء Passes به یک ویژگی id نیاز دارد که شما آن را مشخص می‌کنید. این شناسه شیء به عنوان یک شناسه منحصر به فرد عمل می‌کند که هنگام صدور مجوز برای یک کاربر، به آن ارجاع خواهید داد.

نحوه کار کلاس‌های Passes با اشیاء Passes

اشیاء Passes باید یک نمونه از کلاس Passes را یا با ارجاع به شناسه کلاس آن یا با گنجاندن تعریف کامل کلاس Passes، بسط دهند. این رابطه بین یک کلاس Passes و نمونه Passes Object به این معنی است که می‌توانید ویژگی‌هایی را که برای همه Passes های صادر شده از طریق نمونه Passes Class مشترک هستند، و ویژگی‌های منحصر به فرد برای یک Pass خاص را در نمونه Passes Object تنظیم و به‌روزرسانی کنید.

برای مثال، نمودار زیر از یک گذرگاه بلیط رویداد ساده نشان می‌دهد که چگونه فیلدهایی که در EventTicketClass مشترک تعریف شده‌اند و فیلدهای مربوط به یک بلیط خاص که در EventTicketObject تعریف شده‌اند، برای ساخت گذرگاه نهایی صادر شده ترکیب می‌شوند. توجه داشته باشید که چگونه شناسه کلاس Passes در ویژگی classId شیء Passes ارجاع داده شده است.

تغییرات اعمال شده در یک نمونه کلاس Passes بلافاصله در تمام نمونه‌های Passes Object که به آن ارجاع می‌دهند، اعمال می‌شود. کاربران دفعه بعد که همگام‌سازی می‌کنند، هرگونه تغییری را که در یک نمونه کلاس Passes ایجاد می‌کنید، در برنامه Google Wallet خود مشاهده خواهند کرد.

افزودن رمز عبور به کیف پول گوگل کاربر

برای افزودن یک مجوز به کیف پول گوگل کاربر، شما یک JSON Web Token (JWT) ایجاد می‌کنید که شامل ادعاهایی است که شما (صادرکننده) در مورد نمونه Passes Object که در Google Wallet کاربر ذخیره خواهد شد، مطرح می‌کنید - مهمتر از همه، شناسه شیء نمونه Passes Object که برای کاربر صادر می‌کنید. سپس JWT از طریق دکمه Add to Google Wallet یا لینک Add to Google Wallet به کاربر تحویل داده می‌شود.

پس از اینکه کاربر روی دکمه یا لینکی برای افزودن یک مجوز صادر شده به کیف پول گوگل خود کلیک می‌کند، لینکی از نمونه شیء Passes که در JWT کدگذاری شده است به حساب گوگل آن کاربر متصل می‌شود. این بدان معناست که وقتی کاربر دوباره روی دکمه کلیک می‌کند، لینکی از قبل به آن شیء Passes وجود دارد، بنابراین نسخه‌های تکراری به کیف پول کاربر اضافه نمی‌شوند.

اگر کاربری یک مجوز را از برنامه Google Wallet حذف کند، نمونه Passes Object مربوطه به طور خودکار از کاربر جدا می‌شود، اما حذف نمی‌شود. این بدان معناست که کاربر می‌تواند روی دکمه Add to Google Wallet یا پیوند دوباره کلیک کند تا مجوز را بدون نیاز به ایجاد یک نمونه Passes Object جدید یا JWT ذخیره کند.