Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Sử dụng mã nhóm
Theo mặc định, việc thêm nhiều thẻ và vé vào một tài khoản
Đường liên kết Thêm vào Google Wallet sẽ không nhóm các thẻ và vé đó trong
ứng dụng Google Wallet của người dùng. Tuy nhiên, bạn có thể nhóm các thẻ và vé lại với nhau bằng cách tạo
đảm bảo tất cả đều có cùng một mã nhóm. Thẻ và vé được nhóm sẽ xuất hiện cùng nhau
trong ứng dụng Google Wallet. Khi bạn chọn một nhóm thẻ và vé, mỗi thẻ và vé sẽ
sẽ xuất hiện trên băng chuyền.
Để thêm thẻ và vé vào một nhóm, thuộc tính groupingInfo.groupingId của
bạn phải đặt đối tượng truyền. Tất cả đối tượng truyền có cùng
Giá trị groupingId sẽ được tự động nhóm lại với nhau, ngay cả khi
chúng được thêm riêng biệt.
Ví dụ sau đây cho thấy một thẻ khách hàng thân thiết và mặt hàng được nhóm lại với nhau để
thu hút người dùng sử dụng cả hai trong lần mua hàng tiếp theo.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-09-04 UTC."],[[["\u003cp\u003eMultiple passes can be grouped within the Google Wallet app for a better user experience by assigning them the same \u003ccode\u003egroupingId\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003ePasses can be grouped during initial creation or later using the \u003ccode\u003eupdate\u003c/code\u003e or \u003ccode\u003epatch\u003c/code\u003e methods.\u003c/p\u003e\n"],["\u003cp\u003eEvent tickets have automatic grouping logic based on shared event details, but using the \u003ccode\u003egroupingInfo\u003c/code\u003e property with a \u003ccode\u003egroupingId\u003c/code\u003e will override this behavior.\u003c/p\u003e\n"],["\u003cp\u003eWhen grouping event tickets, \u003ccode\u003eEventClass.eventId\u003c/code\u003e takes precedence, followed by a combination of \u003ccode\u003eEventClass.eventName\u003c/code\u003e, \u003ccode\u003eEventClass.dateTime.start\u003c/code\u003e, and the Issuer ID.\u003c/p\u003e\n"]]],["Passes in Google Wallet can be grouped by setting the `groupingInfo.groupingId` property to the same value for each pass. Grouping can occur during initial provisioning or via `update` or `patch` methods. Event tickets are automatically grouped based on `EventClass.eventId` and the Issuer ID, or if no eventId is set based on `EventClass.eventName`, `EventClass.dateTime.start`, and the Issuer ID. Setting the `groupingInfo` property overrides automatic grouping for event tickets.\n"],null,["# Group multiple Event tickets\n\nUse a grouping ID\n-----------------\n\n\nBy default, adding multiple passes to a single\n**Add to Google Wallet** link will not group those passes in the\nuser's Google Wallet app. However, passes can be grouped together by making\nsure they all have the same grouping ID. Grouped passes will appear together\nin the Google Wallet app. When a group of passes is selected, each pass will\nbe shown on a carousel.\n\nPasses can be grouped together:\n\n- During initial provisioning\n- By using the [`update`](/wallet/tickets/events/rest/v1/eventticketobject/update) or [`patch`](/wallet/tickets/events/rest/v1/eventticketobject/patch) methods\n\n\nTo add a pass to a group, the `groupingInfo.groupingId` property of\nthe pass object must be set. All pass objects with the same\n`groupingId` value will be automatically grouped together, even if\nthey were added separately.\n\n\nThe following example shows a loyalty card and offer being grouped together to\nentice the user to make use of both in their next purchase. \n\n```carbon\nloyaltyObject = {\n \"classId\": \"ISSUER_ID.GIFT_CARD_CLASS_SUFFIX\",\n \"id\": \"ISSUER_ID.GIFT_CARD_OBJECT_SUFFIX\",\n \"state\": \"ACTIVE\",\n \"groupingInfo\": {\n # Note the same groupingId value\n \"groupingId\": \"combinedGiftCardAndOfferId\",\n \"sortIndex\": 1\n },\n \"barcode\": {\n \"type\": \"QR_CODE\",\n \"value\": \"QR code\"\n },\n \"accountId\": \"Account id\",\n \"accountName\": \"Account name\",\n \"loyaltyPoints\": {\n \"label\": \"Points\",\n \"balance\": {\n \"int\": 800\n }\n }\n}\n\nofferObject = {\n \"classId\": \"ISSUER_ID.OFFER_CLASS_SUFFIX\",\n \"id\": \"ISSUER_ID.OFFER_OBJECT_SUFFIX\",\n \"state\": \"ACTIVE\",\n \"groupingInfo\": {\n # Note the same groupingId value\n \"groupingId\": \"combinedGiftCardAndOfferId\",\n \"sortIndex\": 2\n },\n \"barcode\": {\n \"type\": \"QR_CODE\",\n \"value\": \"QR code\",\n },\n}\n```\n\nEvent ticket automatic grouping\n-------------------------------\n\n| **Note:** The `groupingInfo` property of a pass will always take precedence over the automatic grouping logic used by Event tickets.\n\nSometimes event tickets are used in a group rather than individually. A common\nscenario for this is grouping of tickets for multiple family members.\n\nEvent tickets have additional logic that enables automatic grouping based on\nthe following properties:\n\n- `EventClass.eventId`\n- `EventClass.eventName`\n- `EventClass.dateTime.start`\n- The Issuer ID portion of `EventObject.id`\n\n| **Note:** If `EventClass.eventId` is set, it takes precedence in order to determine what objects are considered to be in a group.\n\n### Grouping with `EventClass.eventId`\n\nEvent ticket objects are automatically grouped when they have the same values\nfor the following properties:\n\n- `EventClass.eventId`\n- The Issuer ID portion of `EventObject.id`\n\nWhen event ticket objects meet this criteria, they will be grouped even when\n`EventClass.eventName` and `EventClass.dateTime.start` are different.\n\n### Grouping without `EventClass.eventId`\n\nIf `EventClass.eventId` isn't set, they will be automatically grouped if the\nfollowing properties are the same.\n\n- `EventClass.eventName`\n- `EventClass.dateTime.start`\n- The Issuer ID portion of `EventObject.id`\n\n| **Note:** `EventClass.dateTime.start` is an optional property. If it isn't set, then only `EventClass.eventName` and the Issuer ID portion of `EventObject.id` are used to determine grouping."]]