เทมเพลตความภักดี

บัตรสะสมคะแนนรองรับการแสดงเทมเพลต หากไม่มีเทมเพลต ระบบจะใช้เทมเพลตเริ่มต้น

คําจํากัดความของเทมเพลต

ระบบจะกําหนดเทมเพลตบัตรในระดับชั้นเรียนและใช้เพื่อแสดงออบเจ็กต์ที่เชื่อมโยงกับชั้นเรียน เทมเพลตจะกําหนดช่องที่จะแสดงในส่วนต่างๆ ของบัตรผ่าน

เทมเพลตแบ่งออกเป็นส่วนต่างๆ ดังต่อไปนี้

Android

ภาพรวมของเทมเพลต

เว็บ

ภาพรวมของเทมเพลต

ชื่อการ์ด

Android

องค์ประกอบชื่อการ์ด
  1. class.programLogo
  2. class.localizedIssuerName
    หรือ class.issuerName
  3. class.localizedProgramName
    หรือ class.programName
  4. class.hexBackgroundColor

เว็บ

องค์ประกอบชื่อการ์ด
  1. class.programLogo
  2. class.localizedIssuerName
    หรือ class.issuerName
  3. class.localizedProgramName
    หรือ class.programName
  4. class.hexBackgroundColor

ส่วนชื่อการ์ดจะแสดงโลโก้ ชื่อผู้ออกบัตร และชื่อโปรแกรม ทั้งค่าของช่องที่อ้างอิงที่ใช้ในการเติมข้อมูลและตําแหน่งไม่ได้

เทมเพลตการ์ด

Android

ภาพรวมของเทมเพลต

เว็บ

ภาพรวมของเทมเพลต

ส่วนเทมเพลตการ์ดใช้สําหรับแสดงแถวเพิ่มเติม แถวเหล่านี้มีช่องข้อมูลที่มีโครงสร้างแบบข้อความหรือช่องโมดูลข้อความได้

คุณระบุจํานวนแถวที่ระบุจํานวนออบเจ็กต์ได้ในรายการ class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] รายการนี้ต้องมีองค์ประกอบอย่างน้อย 1 องค์ประกอบ และเราแนะนําให้ใช้องค์ประกอบไม่เกิน 2 รายการ แต่ละองค์ประกอบต้องอยู่ในประเภทใดประเภทหนึ่งต่อไปนี้

  • oneItem ที่ยอมรับ 1 รายการมีดังนี้
    • item
  • twoItems ที่รองรับ 2 รายการ ได้แก่
    • startItem
    • endItem
  • threeItems ที่รองรับสินค้า 3 รายการ ได้แก่
    • startItem
    • middleItem
    • endItem

แต่ละรายการกําหนดเป็นตัวเลือกช่องเดียว (.firstValue), ตัวเลือกช่อง 2 ช่อง (.firstValue และ .secondValue) หรือรายการที่กําหนดไว้ล่วงหน้า (.predefinedItem) ได้ ทั้งค่าของช่องที่เลือกและป้ายกํากับที่เกี่ยวข้องจะแสดง เมื่อคุณกําหนดตัวเลือกช่องข้อมูล 2 ช่อง ค่าของช่องที่เลือกจะแสดงด้วยตัวคั่น "/" ช่องของป้ายกํากับที่เลือกก็จะเหมือนกัน รายการที่กําหนดไว้ล่วงหน้าจะใช้เพื่อกําหนดการแสดงผลที่ซับซ้อนมากขึ้น

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบล้างส่วนแถวของเทมเพลตการ์ดเพื่อระบุแถว 2 แถว แต่ละแถวจะมีรายการ 3 รายการที่แต่ละรายการอ้างอิงช่องที่กําหนดเองของ textModuleData ระดับชั้นเรียน 6 ช่องและส่วนหัวเป็นป้ายกํากับ ดังนี้

Python

 {
   ... //Rest of class
   "textModulesData": [
        {
            "header": "Label 1",
            "body": "Some info 1",
            "id": "myfield1"
        },
        {
            "header": "Label 2",
            "body": "Some info 2",
            "id": "myfield2"
        },
        {
            "header": "Label 3",
            "body": "Some info 3",
            "id": "myfield3"
        },
        {
            "header": "Label 4",
            "body": "Some info 4",
            "id": "myfield4"
        },
        {
            "header": "Label 5",
            "body": "Some info 5",
            "id": "myfield5"
        },
        {
            "header": "Label 6",
            "body": "Some info 6",
            "id": "myfield6"
        }
    ],
   "classTemplateInfo": {
        "cardTemplateOverride": {
            "cardRowTemplateInfos": [{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield1']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield2']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield3']"
                            }]
                        }
                    },
                }
            },{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield4']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield5']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield6']"
                            }]
                        }
                    },
                }
            }]
        }
    }
}
    

Java

// Rest of class
  .setTextModulesData((new ArrayList<TextModuleData>() {
    {
      add((new TextModuleData()).setHeader("Label 1")
        .setBody("Some info 1")
        .setId("myfield1"));
      add((new TextModuleData()).setHeader("Label 2")
        .setBody("Some info 1")
        .setId("myfield2"));
      add((new TextModuleData()).setHeader("Label 3")
        .setBody("Some info 3")
        .setId("myfield3"));
      add((new TextModuleData()).setHeader("Label 4")
        .setBody("Some info 4")
        .setId("myfield4"));
      add((new TextModuleData()).setHeader("Label 5")
        .setBody("Some info 5")
        .setId("myfield5"));
      add((new TextModuleData()).setHeader("Label 6")
        .setBody("Some info 5")
        .setId("myfield6"));
    }
  }))
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setCardTemplateOverride((new CardTemplateOverride())
      .setCardRowTemplateInfos(new ArrayList<CardRowTemplateInfo>() {
        {
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield1']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield2']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield3']"));
              }
            })))
          ));
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield4']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield5']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield6']"));
              }
            })))
          ));
          }
  })))
    

PHP

// Rest of class
    $textModulesData1 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData1->setBody("Some info 1");
    $textModulesData1->setHeader("Label 1");
    $textModulesData1->setId("myfield1");

    $textModulesData2 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData2->setBody("Some info 2");
    $textModulesData2->setHeader("Label 2");
    $textModulesData2->setId("myfield2");

    $textModulesData3 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData3->setBody("Some info 3");
    $textModulesData3->setHeader("Label 3");
    $textModulesData3->setId("myfield3");

    $textModulesData4 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData4->setBody("Some info 4");
    $textModulesData4->setHeader("Label 4");
    $textModulesData4->setId("myfield4");

    $textModulesData5 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData5->setBody("Some info 5");
    $textModulesData5->setHeader("Label 5");
    $textModulesData5->setId("myfield5");

    $textModulesData6 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData6->setBody("Some info 6");
    $textModulesData6->setHeader("Label 6");
    $textModulesData6->setId("myfield6");

    $textModulesDatas = array($textModulesData1, $textModulesData2, $textModulesData3,
                  $textModulesData4, $textModulesData5, $textModulesData6);

    $startItemField = new Google_Service_Walletobjects_FieldReference();
    $startItemField->setFieldPath("class.textModulesData['myfield1']");

    $startItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue->setFields(array($startItemField));

    $startItem = new Google_Service_Walletobjects_TemplateItem();
    $startItem->setFirstValue($startItemFirstValue);

    $middleItemField = new Google_Service_Walletobjects_FieldReference();
    $middleItemField->setFieldPath("class.textModulesData['myfield2']");

    $middleItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue->setFields(array($middleItemField));

    $middleItem = new Google_Service_Walletobjects_TemplateItem();
    $middleItem->setFirstValue($middleItemFirstValue);

    $endItemField = new Google_Service_Walletobjects_FieldReference();
    $endItemField->setFieldPath("class.textModulesData['myfield3']");

    $endItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue->setFields(array($endItemField));

    $endItem = new Google_Service_Walletobjects_TemplateItem();
    $endItem->setFirstValue($endItemFirstValue);

    $cardRowTemplate = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate->setStartItem($startItem);
    $cardRowTemplate->setMiddleItem($middleItem);
    $cardRowTemplate->setEndItem($endItem);

    $cardRowTemplateInfo1 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo1->setThreeItems($cardRowTemplate);

    $startItemField2 = new Google_Service_Walletobjects_FieldReference();
    $startItemField2->setFieldPath("class.textModulesData['myfield4']");

    $startItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue2->setFields(array($startItemField2));

    $startItem2 = new Google_Service_Walletobjects_TemplateItem();
    $startItem2->setFirstValue($startItemFirstValue2);

    $middleItemField2 = new Google_Service_Walletobjects_FieldReference();
    $middleItemField2->setFieldPath("class.textModulesData['myfield5']");

    $middleItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue2->setFields(array($middleItemField2));

    $middleItem2 = new Google_Service_Walletobjects_TemplateItem();
    $middleItem2->setFirstValue($middleItemFirstValue2);

    $endItemField2 = new Google_Service_Walletobjects_FieldReference();
    $endItemField2->setFieldPath("class.textModulesData['myfield6']");

    $endItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue2->setFields(array($endItemField2));

    $endItem2 = new Google_Service_Walletobjects_TemplateItem();
    $endItem2->setFirstValue($endItemFirstValue2);

    $cardRowTemplate2 = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate2->setStartItem($startItem2);
    $cardRowTemplate2->setMiddleItem($middleItem2);
    $cardRowTemplate2->setEndItem($endItem2);

    $cardRowTemplateInfo2 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo2->setThreeItems($cardRowTemplate2);

    $cardTemplateOverride = new Google_Service_Walletobjects_CardTemplateOverride();
    $cardTemplateOverride->setCardRowTemplateInfos(array($cardRowTemplateInfo1,
                  $cardRowTemplateInfo2));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardTemplateOverride($cardTemplateOverride);

    $payload->setTextModulesData($textModulesDatas);
    $payload->setClassTemplateInfo($classTemplateInfo);
    

โค้ดจะสร้างบัตรผ่านโดยใช้รูปแบบส่วนเทมเพลตโค้ดต่อไปนี้

ตัวอย่างการลบล้างป้ายกํากับ

หากรายการใดว่างเปล่า ระบบจะไม่แสดงรายการนั้น ดูรายละเอียดเพิ่มเติมได้ที่ข้อมูลอ้างอิงของช่อง หากทุกรายการในแถวว่างเปล่า แถวนั้นจะไม่ปรากฏ หากมีบางรายการไม่ครบทั้งหมดในแถวว่างเปล่า รายการที่ไม่ว่างจะจัดเรียงใหม่และแสดงเป็นแถวที่มีรายการน้อยกว่า

หากคุณไม่ลบล้างเทมเพลตการ์ด ระบบจะใช้จํานวนแถวเริ่มต้น จํานวนรายการเริ่มต้น และการอ้างอิงช่องเริ่มต้น ดูรายละเอียดเพิ่มเติมได้ในเทมเพลตเริ่มต้น

หลังจากที่กําหนดรูปภาพหลักแล้ว ข้อมูลดังกล่าวจะปรากฏหลังแถวแรก หากมีหลายแถวในรายการ cardRowTemplateInfos หรือเหนือแถว หากมีเพียงแถวเดียว

บาร์โค้ดบัตร

Android

องค์ประกอบบาร์โค้ดบัตร
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type และ object.barcode.value
    หรือ object.accountId
  4. object.barcode.alternateText
    หรือ object.accountId
    หรือ object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail
  6. object.heroImage
    หรือ class.heroImage

เว็บ

องค์ประกอบบาร์โค้ดบัตร
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type และ object.barcode.value
    หรือ object.accountId
  4. object.barcode.alternateText
    หรือ object.accountId
    หรือ object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

ส่วนบาร์โค้ดบัตรใช้สําหรับแสดงข้อความหรือรูปภาพเพิ่มเติมที่ด้านบนและด้านล่างของบาร์โค้ด คุณไม่จําเป็นต้องป้อนข้อมูลในฟิลด์ใดๆ ในส่วนนี้

ตัวเลือกช่องมี 3 แบบที่ใช้กําหนดช่องที่อยู่ข้างกัน 2 ช่อง และช่องด้านล่างบาร์โค้ด 1 ช่อง ข้อมูลเหล่านี้จะแสดงโดยไม่มีป้ายกํากับและอาจเป็นช่องข้อมูลที่มีโครงสร้างแบบข้อความ ช่องโมดูลข้อความ หรือช่องโมดูลรูปภาพ หากคุณใช้รูปภาพ รูปภาพเหล่านี้ต้องเป็นไปตามหลักเกณฑ์การใช้แบรนด์

บาร์โค้ดจะกําหนดตามประเภทและค่า ดูรายการประเภทบาร์โค้ดที่รองรับได้ที่ข้อมูลอ้างอิง นอกจากนี้ ข้อความยังแสดงอยู่ใต้บาร์โค้ดได้อีกด้วย ข้อความนี้จะช่วยให้สแกนบาร์โค้ดได้ง่ายขึ้น รวมถึงการใช้งานในลักษณะอื่นๆ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบล้างส่วนบาร์โค้ดของบัตรผ่านเพื่อแสดงรูปภาพเหนือบาร์โค้ด

Python

#... rest of class
    "imageModulesData": [
        {
            "mainImage": {
                "sourceUri": {
                    "uri":  "http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg",
                    "description": "Coffee"
                }
            },
            "Id": "myimage"
        }
    ],
    "classTemplateInfo": {
        "cardBarcodeSectionDetails": {
            "firstTopDetail": {
                "fieldSelector": {
                    "fields": [
                        {
                        "fieldPath": "class.imageModulesData['myimage'].mainImage"
                        }
                    ]
                }
            }
        }
    }
}
    

Java

//... rest of class
  .setImageModulesData((new ArrayList<ImageModuleData>() {
    {
      add((new ImageModuleData())
        .setId("myimage")
        .setMainImage((new Image()).setSourceUri((new ImageUri()).setDescription("Coffee beans")
          .setUri("http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg"))));
        }
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setCardBarcodeSectionDetails((new CardBarcodeSectionDetails())
          .setFirstTopDetail((new BarcodeSectionDetail())
            .setFieldSelector((new FieldSelector())
              .setFields((new ArrayList<FieldReference>(){
                {
                  add((new FieldReference()).setFieldPath("class.imageModulesData['myimage'].mainImage"));
                }
            })))))
      }
    

PHP

//... rest of class
    $imageUri = new Google_Service_Walletobjects_ImageUri();
    $imageUri->setUri("https://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg");
    $imageUri->setDescription("Baconrista flights image");
    $image = new Google_Service_Walletobjects_Image();
    $image->setSourceUri($imageUri);
    $imageModulesData = new Google_Service_Walletobjects_ImageModuleData();
    $imageModulesData->setMainImage($image);
            $imageModulesData->setId("myimage");

    $cardBarcodeFieldReference = new Google_Service_Walletobjects_FieldReference();
    $cardBarcodeFieldReference->setFieldPath("class.imageModulesData['myimage'].mainImage");

    $cardBarcodeFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $cardBarcodeFieldSelector->setFields(array($cardBarcodeFieldReference));

    $cardBarcodeDetail = new Google_Service_Walletobjects_BarcodeSectionDetail();
    $cardBarcodeDetail->setFieldSelector($cardBarcodeFieldSelector);

    $cardBarcodeSectionDetails = new Google_Service_Walletobjects_CardBarcodeSectionDetails();
    $cardBarcodeSectionDetails->setFirstTopDetail($cardBarcodeDetail);

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardBarcodeSectionDetails($cardBarcodeSectionDetails);

    $payload->setClassTemplateInfo($classTemplateInfo);
            $payload->setImageModuleData($imageModulesData);
    

โค้ดจะสร้างบัตรผ่านที่มีรูปแบบส่วนบาร์โค้ดดังนี้

ตัวอย่างการลบล้างบาร์โค้ดของบัตร

หากคุณไม่แทนที่ส่วนบาร์โค้ด ระบบจะใช้ฟิลด์บาร์โค้ดเริ่มต้น สําหรับข้อมูลเพิ่มเติม โปรดดูที่เทมเพลตเริ่มต้น

เทมเพลตรายละเอียด

Android

ส่วนเทมเพลตรายละเอียด
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

เว็บ

ส่วนเทมเพลตรายละเอียด
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

ส่วนเทมเพลตรายละเอียดคือชุดรายการ class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[] รายการเหล่านี้จะมีช่องข้อมูลที่มีโครงสร้างทุกประเภท ช่องโมดูลข้อความ ช่องโมดูลลิงก์ ช่องโมดูลรูปภาพ หรือข้อความ

แต่ละรายการกําหนดได้ทั้งตัวเลือกช่องเดียว (.firstValue), ตัวเลือกช่อง 2 ตัวเลือก (.firstValue และ .secondValue) หรือรายการที่กําหนดไว้ล่วงหน้า (.predefinedItem) ทั้งค่าของช่องที่เลือกและป้ายกํากับที่เกี่ยวข้องจะปรากฏขึ้น เมื่อคุณกําหนดตัวเลือกช่องข้อมูล 2 ช่อง ค่าของช่องที่เลือกจะแสดงด้วยตัวคั่น "/" ป้ายกํากับของ ช่องที่เลือกจะเหมือนกัน รายการที่กําหนดไว้ล่วงหน้าจะใช้ในการแสดงผลที่ซับซ้อนมากขึ้น ช่องโมดูลรูปภาพจะแสดงผลแบบเต็มความกว้างโดยไม่มีป้ายกํากับ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบล้างส่วนรายละเอียดของบัตรเพื่อแสดงช่อง linksModuleData เดี่ยวที่มีป้ายกํากับ

Python

//... rest of class
   "linksModuleData": {
        "uris": [
            {
                "uri": "http://maps.google.com/",
                "description": "Nearby Locations",
                "id":"mylink"
            }
        ]
    },
   "classTemplateInfo": {
        "detailsTemplateOverride": {
            "detailsItemInfos": [
                {
                    "item":{
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.linksModuleData.uris['mylink']"
                            }]
                        }
                    }
                }
            ]
        }
     }
//... rest of class
    

Java

 //... rest of class
  .setLinksModuleData((new ArrayList<LinksModuleData>() {
    {
      add((new LinksModuleData()).setDescription("Nearby Locations")
        .setUri("http://maps.google.com/")
        .setId("mylink"));
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setDetailsTemplateOverride((new DetailsTemplateOverride())
          .setDetailsItemInfos(new ArrayList<DetailsItemInfo>(){
            {
              add((new DetailsItemInfo())
                .setItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
                  {
                    add((new FieldReference()).setFieldPath("class.linksModuleData.uris['mylink']"));
                  }
                }))));
              }
            }))
//... rest of class
    

PHP



    //... rest of class building
    $locationUri = new Google_Service_Walletobjects_Uri();
    $locationUri->setUri("http://maps.google.com/");
    $locationUri->setDescription("Nearby Locations");
    $locationUri->setId("mylink");

    $linksModuleData = new Google_Service_Walletobjects_LinksModuleData();
    $linksModuleData->setUris(array($locationUri));

    $detailItemFieldReference = new Google_Service_Walletobjects_FieldReference();
    $detailItemFieldReference->setFieldPath("class.linksModuleData.uris['mylink']");
    $detailItemFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $detailItemFieldSelector->setFields(array($detailItemFieldReference));

    $detailItem = new Google_Service_Walletobjects_TemplateItem();
    $detailItem->setFirstValue($detailItemFieldSelector);

    $detailsItemInfo = new Google_Service_Walletobjects_DetailsItemInfo();
    $detailsItemInfo->setItem($detailItem);

    $cardDetailsTemplateOverride = new Google_Service_Walletobjects_DetailsTemplateOverride();
    $cardDetailsTemplateOverride->setDetailsItemInfos(array($detailsItemInfo));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setDetailsTemplateOverride($cardDetailsTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    $payload->setLinksModuleData($linksModuleData);
    //... rest of class
    

รหัสจะสร้างบัตรผ่านที่มีรูปแบบส่วนรายละเอียดต่อไปนี้

ตัวอย่างการลบล้างรายละเอียด

หากรายการใดว่างเปล่า ระบบจะไม่แสดงรายการนั้น ดูรายละเอียดเพิ่มเติมได้ที่ข้อมูลอ้างอิงของช่อง

หากคุณไม่ลบล้างเทมเพลตรายละเอียด รายการช่องข้อมูลอ้างอิงที่เป็นค่าเริ่มต้นในคําสั่งซื้อเริ่มต้นจะปรากฏ ดูข้อมูลเพิ่มเติมได้ในเทมเพลตเริ่มต้น

เทมเพลตรายการ

แสดงรายการองค์ประกอบเทมเพลต
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.programLogo
  4. class.hexBackgroundColor

ส่วนเทมเพลตรายการใช้เพื่อเลือกช่องที่จะแสดงในมุมมอง "บัตร" ของแอป Google Wallet บัตรผ่านนี้จะแสดงเป็นรายการที่มีโลโก้ สีพื้นหลัง และแถว 3 แถว

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบล้างเทมเพลตรายการบัตรผ่านเพื่อแสดงช่องวันที่หมดอายุของออบเจ็กต์บัตรผ่านเดี่ยวในแถวแรกของเทมเพลตรายการ

Python


#... rest of class definition
   "classTemplateInfo": {
        "listTemplateOverride":{
            "firstRowOption": {
                "fieldOption":{
                    "fields": [{
                        "fieldPath": "object.validTimeInterval.end"
                    }]
                }
            }
        }
   }
}
    

Java

//... rest of class
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setListTemplateOverride((new ListTemplateOverride())
      .setFirstRowOption((new FirstRowOption())
        .setFieldOption((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
          {
            add((new FieldReference()).setFieldPath("object.validTimeInterval.end"));
          }
        }))))
//... rest of class
    

PHP

    //... rest of class
    $fieldReference = new Google_Service_Walletobjects_FieldReference();
    $fieldReference->setFieldPath("object.validTimeInterval.end");

    $fieldOption = new Google_Service_Walletobjects_FieldSelector();
    $fieldOption->setFields(array($fieldReference));

    $firstRowOption = new Google_Service_Walletobjects_FirstRowOption();
    $firstRowOption->setFieldOption($fieldOption);

    $listTemplateOverride = new Google_Service_Walletobjects_ListTemplateOverride();
    $listTemplateOverride->setFirstRowOption($firstRowOption);

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setListTemplateOverride($listTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    //... rest of class
    

โค้ดจะสร้างบัตรผ่านด้วยการแก้ไขเทมเพลตรายการต่อไปนี้

ตัวอย่างการลบล้างรายการ

แถว 3 แถวจะกําหนดได้ด้วยตัวเลือกช่อง ช่องข้อมูลจะแสดงโดยไม่มีป้ายกํากับ

ป้ายกำกับ

ช่องข้อมูลที่มีโครงสร้างทั้งหมดมีป้ายกํากับจาก Google Google มีหน้าที่จัดเตรียมคําแปลสําหรับป้ายกํากับเหล่านี้ในแต่ละภาษาที่รองรับ

คุณปรับแต่งป้ายกํากับบางรายการได้โดยใช้ช่อง class.custom<name_of_the_field>Label เมื่อปรับแต่งป้ายกํากับ คุณจะมีหน้าที่สําหรับการแปลป้ายกํากับนั้นในทุกภาษาที่คุณต้องการรองรับ

การอ้างอิงช่อง

การอ้างอิงช่องจะใช้ในส่วนต่างๆ ของเทมเพลตที่มีแบบฟอร์ม class.classTemplateInfo.*.fields[] การอ้างอิงช่องมีรายการเส้นทางไปยังช่องข้อมูลที่มีโครงสร้าง ช่องโมดูลข้อความ ช่องโมดูลลิงก์ ช่องโมดูลรูปภาพ หรือข้อความ

เส้นทางบางประเภทไม่ได้รับอนุญาตให้อ้างอิงในช่องทั้งหมด ตัวอย่างเช่น การอ้างอิงช่องบางรายการอนุญาตให้มีช่องข้อมูลที่มีโครงสร้างแบบข้อความ หรือช่องโมดูลข้อความเท่านั้น ช่องที่มีโครงสร้างแบบข้อความคือช่องข้อมูลที่มีโครงสร้างของประเภทสตริง สตริงที่แปลแล้ว วันที่ หรือเงิน

รายการนี้ใช้ตรรกะได้ ซึ่งหมายความว่าหากเส้นทางแรกในรายการเปลี่ยนเป็นช่องว่าง ระบบจะประเมินเส้นทางถัดไป ตรรกะสํารองจะมีการกําหนดเป้าหมายที่ช่องข้อมูลที่มีโครงสร้างแบบข้อความหรือช่องโมดูลข้อความเป็นหลัก อย่ารวมช่องประเภทต่างๆ ไว้ในรายการเดียวกัน โปรดใช้ตรรกะสํารองอย่างระมัดระวังและจะใช้เฉพาะในกรณีที่มีช่องที่สอดคล้องกันในออบเจ็กต์บางรายการเท่านั้น ไม่ใช่รูปแบบอื่น โดยส่วนใหญ่แล้ว การสร้างชั้นเรียนแยกกันสําหรับแต่ละกรณีการใช้งานจะเป็นวิธีที่ง่ายกว่า

หากเส้นทางทั้งหมดในรายการข้อมูลอ้างอิงของช่องเปลี่ยนเป็นช่องว่าง รายการที่ใช้การอ้างอิงช่องจะไม่ปรากฏ หากต้องการให้รายการที่มีการอ้างอิงช่องปรากฏอยู่เสมอ โปรดตรวจสอบว่ามีเส้นทางอย่างน้อย 1 เส้นทางไม่ว่างเปล่า เราขอแนะนําให้คุณตั้งค่าช่องให้เป็นสัญลักษณ์พิเศษ เช่น "-" เพื่อแสดงค่า Null แม้ว่าบางช่องอนุญาตให้ใช้สตริงที่มีเพียงช่องว่าง

คุณใช้ดัชนีของช่องในรายการเพื่ออ้างอิงช่องในรายการได้ หรือในกรณีส่วนใหญ่ ก็จะใช้รหัสอ้างอิงได้ รายการที่สามารถอ้างอิงด้วยรหัสได้จะมีช่อง .id เราขอแนะนําให้คุณใช้รหัสข้อมูลอ้างอิงเหนือดัชนีของช่องในรายการ หากมี

ต่อไปนี้เป็นตัวอย่างวิธีอ้างอิงช่องที่อยู่ในรายการ

  • object.imageModulesData[0].id = my-first-id
  • object.imageModulesData[1].id = my-second-id
  • class.detailsTemplateOverride.detailsItemInfos[0].item.firstValue.fields[0].fieldPath = object.imageModulesData[‘my-second-id’]
  • class.detailsTemplateOverride.detailsItemInfos[1].item.firstValue.fields[0].fieldPath = object.imageModulesData[0]

ในกรณีนี้ รายการแรกในส่วนรายละเอียดของบัตรคือรูปภาพที่ 2 ที่ประกาศไว้ในออบเจ็กต์ แม้ว่ารายการที่สองในส่วนรายละเอียดบัตรจะเป็นรูปภาพแรกที่ประกาศไว้ในออบเจ็กต์

เทมเพลตเริ่มต้น

Android

องค์ประกอบเทมเพลตเริ่มต้น
  1. class.programLogo
  2. class.localizedIssuerName
    หรือ class.issuerName
  3. class.localizedProgramName
    หรือ class.programName
  4. POINTS
    หรือ object.loyaltyPoints.localizedLabel
    หรือ object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. รางวัล
    หรือobject.secondaryLoyaltyPoints.localizedLabel
    หรือobject.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type และ object.barcode.value
    หรือ object.accountId
  9. object.barcode.alternateText
    หรือ object.accountId
    หรือ object.barcode.value
  10. object.heroImage
    หรือ class.heroImage
  11. class.hexBackgroundColor
  12. ชื่อสมาชิก
    หรือ class.localizedAccountNameLabel
    หรือ class.accountNameLabel
  13. object.accountName
  14. หมายเลขสมาชิก
    หรือ class.localizedAccountIdLabel
    หรือ class.accountIdLabel
  15. object.accountId
  16. ให้รางวัลระดับ
    หรือ class.localizedRewardsTierLabel
    หรือ class.rewardsTierLabel
  17. class.localizedRewardsTier
    หรือ class.rewardsTier
  18. รางวัลระดับที่สอง
    หรือ class.localizedSecondaryRewardsTierLabel
    หรือ class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    หรือ class.secondaryRewardsTier
  20. class.imageModulesData[0].mainImage
  21. object.imageModulesData[0].mainImage
  22. class.messages[].header
  23. class.messages[].body
  24. object.messages[].header
  25. object.messages[].body
  26. class.textModulesData[0..9].header
  27. class.textModulesData[0..9].body
  28. object.textModulesData[0..9].header
  29. object.textModulesData[0..9].body
  30. class.linksModuleData.uris[].description
  31. object.linksModuleData.uris[].description
  32. class.homepageUri

เว็บ

องค์ประกอบเทมเพลตเริ่มต้น
  1. class.programLogo
  2. class.localizedIssuerName
    หรือ class.issuerName
  3. class.localizedProgramName
    หรือ class.programName
  4. POINTS
    หรือ object.loyaltyPoints.localizedLabel
    หรือ object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. รางวัล
    หรือobject.secondaryLoyaltyPoints.localizedLabel
    หรือobject.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type และ object.barcode.value
    หรือ object.accountId
  9. object.barcode.alternateText
    หรือ object.accountId
    หรือ object.barcode.value
  10. object.heroImage
    หรือ class.heroImage
  11. class.hexBackgroundColor
  12. ชื่อสมาชิก
    หรือ class.localizedAccountNameLabel
    หรือ class.accountNameLabel
  13. object.accountName
  14. หมายเลขสมาชิก
    หรือ class.localizedAccountIdLabel
    หรือ class.accountIdLabel
  15. object.accountId
  16. ให้รางวัลระดับ
    หรือ class.localizedRewardsTierLabel
    หรือ class.rewardsTierLabel
  17. class.localizedRewardsTier
    หรือ class.rewardsTier
  18. รางวัลระดับที่สอง
    หรือ class.localizedSecondaryRewardsTierLabel
    หรือ class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    หรือ class.secondaryRewardsTier
  20. class.imageModulesData[0].mainImage
  21. object.imageModulesData[0].mainImage
  22. class.messages[].header
  23. class.messages[].body
  24. object.messages[].header
  25. object.messages[].body
  26. class.textModulesData[0..9].header
  27. class.textModulesData[0..9].body
  28. object.textModulesData[0..9].header
  29. object.textModulesData[0..9].body
  30. class.linksModuleData.uris[].description
  31. object.linksModuleData.uris[].description
  32. class.homepageUri

สําหรับช่องโมดูลรูปภาพ เราจะแสดงช่องโมดูลรูปภาพ 1 ช่องจากคลาสเพียง 1 ช่อง และช่องโมดูลรูปภาพ 1 ช่องจากออบเจ็กต์ดังกล่าวเพียง 1 ช่องเท่านั้น หากต้องการช่องโมดูลรูปภาพมากกว่า 1 ช่องในระดับใดระดับหนึ่ง ให้ลบล้างเทมเพลตเริ่มต้น

สําหรับช่องโมดูลข้อความ เราแสดงช่องโมดูลข้อความได้สูงสุด 20 ช่องจากคลาสและช่องโมดูลข้อความไม่เกิน 20 ช่องจากออบเจ็กต์ ช่องข้อมูลจะแสดงในลําดับเดียวกันกับที่กําหนดไว้ในอาร์เรย์ หากต้องการช่องโมดูลข้อความมากกว่า 20 ช่องที่ระดับใดระดับหนึ่ง ให้ลบล้างเทมเพลตเริ่มต้น

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

สําหรับช่องโมดูลลิงก์ จะไม่มีการจํากัดจํานวน URI ที่คุณกําหนดได้ Uris จะถูกจัดกลุ่มโดยเรียงลําดับตามแต่ละระดับ (คลาสหรือออบเจ็กต์) ดังนี้

  1. พิกัดแผนที่
  2. หมายเลขโทรศัพท์
  3. อีเมล
  4. หน้าเว็บ

สําหรับแต่ละกลุ่ม URI จะแสดงในลําดับเดียวกันกับที่กําหนดไว้ในอาร์เรย์ หากคุณต้องการลําดับอื่น ให้แทนที่เทมเพลตเริ่มต้น

องค์ประกอบเทมเพลตรายการเริ่มต้น
  1. class.localizedIssuerName
    หรือ class.issuerName
  2. class.localizedProgramName
    หรือ class.programName
  3. class.programLogo
  4. class.hexBackgroundColor