ภาพรวมคลาสและออบเจ็กต์ของบัตร

บัตรเกือบทั้งหมดที่คุณออกให้ผู้ใช้ปลายทางเพื่อบันทึกไว้ใน Google Wallet ได้กำหนดโดยองค์ประกอบ 2 อย่าง ได้แก่ คลาส Passes และออบเจ็กต์ Passes ทุกครั้งที่ออกบัตรให้ผู้ใช้ คุณจะต้องมีอินสแตนซ์ของทั้งคลาส Passes และออบเจ็กต์ Passes ซึ่งจะแจ้งให้ Google Wallet API ทราบว่าควรสร้างบัตรประเภทใด รวมถึงรายละเอียดที่จะแสดงบนบัตร เช่น มูลค่าบัตรของขวัญหรือชื่อผู้ถือตั๋ว

Google Wallet API มีชุดคลาสและออบเจ็กต์บัตรที่กำหนดไว้ล่วงหน้าซึ่งคุณสร้างอินสแตนซ์ แล้วใช้เพื่อสร้างบัตรที่ออกให้กับผู้ใช้ เช่น GiftCardClass, GiftCardObject, GenericClass และ GenericObject และอื่นๆ

อินสแตนซ์ Passes Class และ Passes Object แต่ละรายการจะได้รับการกำหนดเป็นออบเจ็กต์ JSON ซึ่งมีชุดพร็อพเพอร์ตี้ที่จำเป็นและไม่บังคับที่สอดคล้องกับ Use Case ที่เฉพาะเจาะจงสำหรับประเภทบัตรนั้นๆ

คลาสบัตร

ให้คิดว่าชั้นเรียนบัตรเป็นเทมเพลตที่แชร์ไว้และใช้เพื่อสร้างบัตรอย่างน้อย 1 ใบ ที่คุณจะออกให้กับผู้ใช้ คลาสบัตรกำหนดชุดพร็อพเพอร์ตี้ทั่วไปที่จะรวมอยู่ด้วย ในทุกๆ ใบที่ใช้อ้างอิง

ตัวอย่างเช่น อินสแตนซ์ต่อไปนี้ของ 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 ระบุชุดพร็อพเพอร์ตี้ที่ใช้ร่วมกันที่จะใช้ในอย่างน้อย 1 รายการ ออบเจ็กต์ 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 Class และ Passes Object หมายความว่าคุณจะตั้งค่าและอัปเดตพร็อพเพอร์ตี้ที่เหมือนกันกับบัตรที่ออกทั้งหมดผ่านอินสแตนซ์คลาส Passes ได้ และพร็อพเพอร์ตี้เฉพาะสำหรับบัตรแต่ละรายการในอินสแตนซ์ออบเจ็กต์ Passes

เช่น แผนภาพต่อไปนี้ของบัตรตั๋วเข้างานธรรมดาๆ จะแสดงการกำหนดช่องต่างๆ ใน EventTicketClass ที่ใช้ร่วมกัน และช่องสำหรับตั๋วที่เฉพาะเจาะจงซึ่งระบุไว้ใน EventTicketObject รวมกันเพื่อสร้างบัตรสุดท้ายที่ออก โปรดสังเกตวิธีอ้างอิงรหัสของคลาส Passes ในพร็อพเพอร์ตี้ classId ของออบเจ็กต์ Passes

การเปลี่ยนแปลงที่ทำกับอินสแตนซ์อินสแตนซ์คลาส Passes จะเผยแพร่ทันทีในอินสแตนซ์ออบเจ็กต์ Passes ทั้งหมด ที่อ้างอิงถึงข้อมูลนั้น ผู้ใช้จะเห็นการเปลี่ยนแปลงที่คุณทำกับอินสแตนซ์ Passes Class แสดงขึ้น ในแอป Google Wallet ในครั้งถัดไปที่ซิงค์

การเพิ่มบัตรลงใน Google Wallet ของผู้ใช้

หากต้องการเพิ่มบัตรลงใน Google Wallet ของผู้ใช้ คุณจะต้องสร้าง JSON Web Token (JWT) ที่มีการอ้างสิทธิ์ คุณ (ผู้ออกบัตร) กำลังดำเนินการเกี่ยวกับอินสแตนซ์ Passes Object ที่จะบันทึกไว้ใน Google Wallet ของผู้ใช้ ที่สำคัญที่สุดคือรหัสออบเจ็กต์ของอินสแตนซ์ออบเจ็กต์ Passes ที่คุณส่งให้กับผู้ใช้ JWT แล้วนำส่งให้ผู้ใช้ผ่านปุ่มเพิ่มลงใน Google Wallet หรือเพิ่มลงใน Google Wallet ลิงก์

หลังจากผู้ใช้คลิกปุ่มหรือลิงก์เพื่อเพิ่มบัตรที่ออกลงใน Google Wallet ลิงก์ อินสแตนซ์ Passes Object ที่เข้ารหัสใน JWT จะลิงก์กับบัญชี Google ของผู้ใช้ดังกล่าว ซึ่งหมายความว่า เมื่อผู้ใช้คลิกปุ่มอีกครั้ง แสดงว่ามีลิงก์ไปยังออบเจ็กต์ Passes นั้นอยู่แล้ว ดังนั้นจึงทำซ้ำ จะไม่มีการเพิ่มสำเนาไปยังกระเป๋าเงินของผู้ใช้

หากผู้ใช้นำบัตรออกจากแอป Google Wallet อินสแตนซ์ Passes Object ที่ตรงกันจะเป็น ยกเลิกการลิงก์จากผู้ใช้โดยอัตโนมัติ แต่ระบบจะไม่ลบลิงก์ดังกล่าว ซึ่งหมายความว่าผู้ใช้สามารถคลิก ปุ่มหรือลิงก์เพิ่มลงใน Google Wallet อีกครั้งเพื่อบันทึกบัตรโดยไม่ต้องใช้ จะสร้างอินสแตนซ์ Passes Object หรือ JWT ใหม่