পাস ক্লাস ও অবজেক্টের ওভারভিউ

ব্যবহারকারীর Google Wallet-এ সেভ করার জন্য আপনি যেসব পাস ইস্যু করতে পারেন, তার প্রায় সবকটিই দুটি কম্পোনেন্ট দ্বারা সংজ্ঞায়িত করা হয়: পাস ক্লাস ও পাস অবজেক্ট। আপনি যখনই কোনও ব্যবহারকারীকে পাস ইস্যু করবেন, তখন আপনার Passes Class এবং Passes Object, দুটিরই ইনস্ট্যান্স প্রয়োজন হবে। এটি Google Wallet API-কে জানায় যে কী ধরনের পাস তৈরি করতে হবে এবং পাসে কী কী বিবরণ দেখাতে হবে, যেমন গিফ্ট কার্ডের মূল্য বা টিকিট হোল্ডারের নাম।

Google Wallet API, Passes Classes এবং Passes Objects-এর একটি প্রি-ডিফাইন করা সেট প্রদান করে যার ইনস্ট্যান্স আপনি তৈরি করেন, তারপর ব্যবহারকারীকে ইস্যু করা পাস তৈরি করতে ব্যবহার করেন, যেমন GiftCardClass এবং GiftCardObject, GenericClass এবং GenericObject এবং অন্যান্য।

প্রতিটি Passes Class এবং Passes Object ইনস্ট্যান্সকে JSON অবজেক্ট হিসেবে সংজ্ঞায়িত করা হয়, যার মধ্যে প্রয়োজনীয় ও ঐচ্ছিক প্রপার্টির সেট থাকে যা সেই পাস টাইপের জন্য নির্দিষ্ট ব্যবহারের ক্ষেত্রে প্রযোজ্য।

পাস ক্লাস

পাস ক্লাসকে একটি শেয়ার করা টেমপ্লেট হিসেবে ভাবুন যা এক বা একাধিক পাস তৈরি করতে ব্যবহার করা হয় যা আপনি ব্যবহারকারীদের ইস্যু করবেন। Passes Class-এ প্রপার্টির একটি সাধারণ সেট থাকে যা এটিকে রেফারেন্স করা সব পাসে অন্তর্ভুক্ত করা হবে।

যেমন, 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 Class-এর প্রতিটি ইনস্ট্যান্সের জন্য একটি id প্রপার্টি প্রয়োজন, যা আপনি উল্লেখ করেন। এই Class ID একটি অনন্য শনাক্তকারী হিসেবে কাজ করে যা আপনি যখনই একটি নতুন Passes Object ইনস্ট্যান্স তৈরি করতে ব্যবহার করবেন তখনই উল্লেখ করবেন।

পাস অবজেক্ট

Passes Class-এর একটি ইনস্ট্যান্স এক বা একাধিক পাসে ব্যবহার করার জন্য শেয়ার করা প্রপার্টির একটি সেট নির্দিষ্ট করে, Passes Object কোনও নির্দিষ্ট ব্যবহারকারীকে ইস্যু করা নির্দিষ্ট পাসের অনন্য বিবরণ নির্দিষ্ট করে।

যেমন, 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 Object-এর প্রতিটি ইনস্ট্যান্সের জন্য একটি id প্রপার্টি প্রয়োজন হয়, যা আপনি উল্লেখ করেন। এই অবজেক্ট আইডি একটি অনন্য শনাক্তকারী হিসেবে কাজ করে যা আপনি কোনও ব্যবহারকারীকে পাস ইস্যু করার সময় উল্লেখ করবেন।

পাস অবজেক্টের সাথে পাস ক্লাস কীভাবে কাজ করে

Passes অবজেক্টকে অবশ্যই Passes ক্লাসের একটি ইনস্ট্যান্সকে প্রসারিত করতে হবে, হয় তার ক্লাস আইডি উল্লেখ করে অথবা সম্পূর্ণ Passes ক্লাসের সংজ্ঞা অন্তর্ভুক্ত করে। Passes Class এবং Passes Object ইনস্ট্যান্সের মধ্যে এই সম্পর্কের অর্থ হল আপনি Passes Class ইনস্ট্যান্সের মাধ্যমে ইস্যু করা সব পাসের জন্য সাধারণ প্রপার্টি সেট ও আপডেট করতে পারবেন এবং Passes Object ইনস্ট্যান্সের মাধ্যমে কোনও নির্দিষ্ট পাসের জন্য অনন্য প্রপার্টি সেট ও আপডেট করতে পারবেন।

যেমন, একটি সাধারণ ইভেন্ট টিকিট পাসের নিম্নলিখিত ডায়াগ্রাম থেকে বোঝা যায় যে শেয়ার করা EventTicketClass-এ সংজ্ঞায়িত ফিল্ড এবং EventTicketObject-এ সংজ্ঞায়িত নির্দিষ্ট টিকিটের ফিল্ড কীভাবে একত্রিত হয়ে চূড়ান্ত ইস্যু করা পাস তৈরি করে। classId Passes Object-এর প্রপার্টিতে কীভাবে Passes Class-এর ID রেফারেন্স করা হয় তা লক্ষ্য করুন।

Passes Class ইন্সট্যান্সে করা পরিবর্তনগুলি এটিকে রেফারেন্স করে এমন সব Passes Object ইন্সট্যান্স জুড়ে অবিলম্বে ছড়িয়ে পড়বে। আপনি পাস ক্লাস ইনস্ট্যান্সে কোনও পরিবর্তন করলে, ব্যবহারকারীরা পরের বার সিঙ্ক করার সময় তাদের Google Wallet অ্যাপে পাসে সেই পরিবর্তন দেখতে পাবেন।

ব্যবহারকারীর Google Wallet-এ পাস যোগ করা

কোনও ব্যবহারকারীর Google Wallet-এ পাস যোগ করতে, আপনাকে একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে হবে যাতে দাবি থাকে ব্যবহারকারীর Google Wallet-এ সেভ করা হবে এমন পাস অবজেক্ট ইনস্ট্যান্স সম্পর্কে আপনি (ইস্যুকারী) দাবি করছেন - সবচেয়ে গুরুত্বপূর্ণ হল, ব্যবহারকারীকে ইস্যু করা পাস অবজেক্ট ইনস্ট্যান্সের অবজেক্ট আইডি। JWT তারপর Google Wallet-এ যোগ করুন বোতাম বা Google Wallet-এ যোগ করুন লিঙ্কের মাধ্যমে ব্যবহারকারীর কাছে পৌঁছে দেওয়া হয়।

কোনও ব্যবহারকারী ইস্যু করা পাস তার Google Wallet-এ যোগ করার জন্য বোতাম বা লিঙ্কে ক্লিক করার পরে, JWT-তে এনকোড করা Passes Object ইনস্ট্যান্স সেই ব্যবহারকারীর Google অ্যাকাউন্টের সাথে লিঙ্ক করা হয়। এর অর্থ হল যে ব্যবহারকারী আবার বোতামে ক্লিক করলে, সেই পাস অবজেক্টের জন্য আগে থেকেই একটি লিঙ্ক আছে, তাই ডুপ্লিকেট কপি ব্যবহারকারীর ওয়ালেটে যোগ করা হবে না।

কোনও ব্যবহারকারী Google Wallet অ্যাপ থেকে পাস সরিয়ে দিলে, সংশ্লিষ্ট Passes Object ইনস্ট্যান্সটি ব্যবহারকারীর থেকে অটোমেটিক আনলিঙ্ক হয়ে যায়, তবে এটি মুছে যায় না। এর অর্থ হল, নতুন Passes Object ইনস্ট্যান্স বা JWT তৈরি করার প্রয়োজন ছাড়াই পাস সেভ করতে, ব্যবহারকারী Google Wallet-এ যোগ করুন বোতামে ক্লিক করতে বা আবার লিঙ্ক করতে পারবেন।