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

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

Google Wallet API مجموعه ای از پیش تعریف شده از Pass Class ها و Passes Objects را ارائه می دهد که نمونه هایی از آنها را ایجاد می کنید، سپس برای ایجاد مجوزی که برای یک کاربر صادر می شود، مانند GiftCardClass و GiftCardObject ، GenericClass و GenericObject ، و موارد دیگر استفاده می کنید.

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

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

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

به عنوان مثال، نمونه زیر از 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 نیاز دارد که شما آن را مشخص می کنید. این Class ID به عنوان یک شناسه منحصر به فرد عمل می کند که هر زمان که از آن برای ایجاد یک نمونه Passes Object جدید استفاده می کنید به آن ارجاع خواهید داد.

اشیاء را پاس می کند

در حالی که یک نمونه از یک کلاس Passes مجموعه ای از ویژگی های مشترک را برای استفاده در یک یا چند پاس مشخص می کند، یک Object 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": ""
  }
}
  

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

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

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

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

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

افزودن مجوز به Google Wallet کاربر

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

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

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