Tổng quan
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.
API Thẻ và vé trong Google Wallet giúp đối tác tiết kiệm chi phí
Xoay
Mã vạch vào Google Wallet. Những mã vạch này chỉ hợp lệ trong một khoảng thời gian ngắn,
tăng cường bảo mật để giảm nguy cơ chụp ảnh màn hình mã vạch. Chiến lược phát hành đĩa đơn
Mã vạch được tạo trên thiết bị theo
RFC 6238, cùng với đối tác cung cấp
khoá bí mật. Tuy nhiên, nếu đối tác muốn tự tạo mã vạch, Google sẽ cung cấp
API để có thể tải hàng loạt mã vạch lên Google. Sau đó, những mã vạch này sẽ
được truyền đến bộ nhớ đệm của người dùng điện thoại di động, nơi chúng sẽ hoạt động giống như Xoay mã vạch,
hiển thị trong một khoảng thời gian ngắn. Chúng tôi gọi giải pháp này là do đối tác tạo
Xoay mã vạch.
API mã vạch xoay do đối tác tạo
Mã vạch xoay do đối tác tạo được tạo bằng cùng một mã vạch xoay
. Chỉ cần loại dữ liệu, mặc dù chúng tôi cũng khuyên bạn nên tạo một điều kiện khởi động nhỏ
bộ mã vạch trị giá (~10 phút) và gửi mã
initialRotatingBarcodeValues
. Đối tác chịu trách nhiệm đảm bảo rằng có
luôn có mã vạch hợp lệ cho người dùng và initialRotatingBarcodeValues
cho phép
lệnh gọi tải lên hàng loạt tiếp theo thành không đồng bộ.
rotatingBarcode {
initialRotatingBarcodeValues: object (RotatingBarcodeValues),
type: enum (BarcodeType),
}
Trường |
Mô tả |
initialRotatingBarcodeValues |
object (RotatingBarcodeValues)
Các giá trị cần mã hoá trong mã vạch. Bạn phải nhập ít nhất một giá trị. Tên viết tắt này
mã vạch giúp thu hẹp khoảng cách giữa thời điểm người dùng nhận thẻ và vé lần đầu tiên
khi lệnh gọi tải lên hàng loạt tiếp theo được thực hiện.
|
type |
enum (BarcodeType)
Bắt buộc. Loại mã vạch này.
Các giá trị được chấp nhận là:
|
RotatingBarcodeValues
Trường |
Mô tả |
startDateTime |
string
Ngày/giờ mã vạch đầu tiên có hiệu lực. Mã vạch sẽ được xoay qua
đang sử dụng periodMillis .
Đây là ngày/giờ ở định dạng mở rộng ISO 8601, có giá trị bù trừ.
|
values[] |
string
Các giá trị cần mã hoá trong mã vạch. Bạn phải nhập ít nhất một giá trị.
Không có số lượng giá trị tối đa, nhưng hãy lưu ý rằng kích thước của phần nội dung yêu cầu
không được vượt quá 5MB.
|
periodMillis |
number
Khoảng thời gian có hiệu lực của mỗi mã vạch.
|
Cập nhật hàng loạt giá trị mã vạch
Sau khi tạo đối tượng Xoay mã vạch, chúng tôi khuyên bạn nên tải
mã vạch mỗi ngày cho đến khi thẻ/vé của người dùng hết hạn. Bạn có thể thực hiện việc này bằng
theo điểm cuối của API REST.
Phương thức: Transitobject.uploadrotatingbarcodevalues
Tải các giá trị mã vạch xoay vòng lên đối tượng chuyển tuyến được tham chiếu theo mã đối tượng đã cho.
Yêu cầu HTTP
POST
https://walletobjects.googleapis.com/upload/walletobjects/v1/transitObject/{resourc
eId}/uploadRotatingBarcodeValues
Tham số đường dẫn
Thông số |
Mô tả |
resourceId |
string
Giá trị nhận dạng duy nhất của một đối tượng.
|
Nội dung yêu cầu
Nội dung yêu cầu (không được vượt quá 5MB) chứa một bản sao của
RotatingBarcodeValues.
Phương thức: Transitobject.downloadrotatingbarcodevalues
Tải các giá trị mã vạch xoay vòng xuống cho đối tượng phương tiện công cộng được tham chiếu theo đối tượng đã cho
Mã nhận dạng. Cách này sẽ hữu ích nếu đối tác muốn xác minh lô mới nhất.
Yêu cầu HTTP
GET
https://walletobjects.googleapis.com/walletobjects/v1/transitObject/{resourceId}/do
wnloadRotatingBarcodeValues?alt=media
Tham số đường dẫn
Thông số |
Mô tả |
resourceId |
string
Giá trị nhận dạng duy nhất của một đối tượng.
|
Cơ chế dự phòng
Lưu ý rằng nếu Mã vạch xoay hợp lệ khác không có mã vạch hợp lệ để hiển thị (mã vạch này
chưa được tải lên hoặc tất cả mã vạch hiện tại đã được sử dụng), lỗi
thông báo sẽ được hiển thị cho người dùng.
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-07-25 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-25 UTC."],[[["\u003cp\u003eGoogle Wallet now supports Partner-Generated Rotating Barcodes for enhanced security, allowing partners to generate and upload time-limited barcodes directly.\u003c/p\u003e\n"],["\u003cp\u003ePartners can integrate Rotating Barcodes using the \u003ccode\u003erotatingBarcode\u003c/code\u003e object within the Google Wallet Passes API, specifying the barcode type and initial values.\u003c/p\u003e\n"],["\u003cp\u003eThe API provides methods for batch uploading (\u003ccode\u003etransitobject.uploadrotatingbarcodevalues\u003c/code\u003e) and downloading (\u003ccode\u003etransitobject.downloadrotatingbarcodevalues\u003c/code\u003e) barcode values for ongoing updates.\u003c/p\u003e\n"],["\u003cp\u003eTo ensure continuous barcode availability, it is recommended to upload a day's worth of barcodes daily until a user's pass expires, utilizing the \u003ccode\u003einitialRotatingBarcodeValues\u003c/code\u003e for a smooth initial experience.\u003c/p\u003e\n"],["\u003cp\u003eIf a Rotating Barcode lacks valid values, an error message will be displayed to the user, highlighting the importance of timely barcode updates.\u003c/p\u003e\n"]]],["The Google Wallet Passes API enables partners to use Partner-Generated Rotating Barcodes, enhancing security by having barcodes valid for a short time. Partners can define a `RotatingBarcode` object specifying the barcode `type` and `initialRotatingBarcodeValues`. They then batch upload barcode values using the `transitobject.uploadrotatingbarcodevalues` API endpoint and should upload a day's worth of barcodes each day. Barcode values can be downloaded via `transitobject.downloadrotatingbarcodevalues` for verification. If no valid barcodes are available, an error message is shown.\n"],null,["# Overview\n\nThe Google Wallet Passes API provides the ability for partners to save\n[Rotating\nBarcodes](/wallet/tickets/transit-passes/qr-code/resources/rotating-barcodes) to the Google Wallet. These barcodes are only valid for a short period of time,\nproviding additional security to reduce the risk of barcode screenshotting. The\nbarcodes are generated on device in accordance with\n[RFC 6238](https://www.rfc-editor.org/rfc/rfc6238), with the partner providing the\nsecret key. However, if a partner would rather generate the barcodes themselves, Google provides\nan API such that barcodes can be batch uploaded to Google. These barcodes will then\nbe passed through to users' phones, where they will act just like Rotating Barcodes,\ndisplaying for a short period of time. We refer to this solution as Partner-Generated\nRotating Barcodes.\n\nPartner-Generated Rotating Barcode API\n--------------------------------------\n\nPartner-Generated Rotating Barcodes are created using the same RotatingBarcode\nobject. Only the type is required, although we also recommend creating a small, starter\nset of barcodes (\\~10 minutes worth), and sending them in\n`initialRotatingBarcodeValues`. The partner is responsible for ensuring that there is\nalways a valid barcode ready for the user, and `initialRotatingBarcodeValues` allows\nthe subsequent batch upload call to be asynchronous. \n\n```gdscript\n rotatingBarcode {\n initialRotatingBarcodeValues: object (RotatingBarcodeValues),\n type: enum (BarcodeType),\n }\n```\n\n| Field | Description |\n|--------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `initialRotatingBarcodeValues` | `object (`[RotatingBarcodeValues](#RotatingBarcodeValues)`)` The values to encode in the barcode. At least one value is required. These initial barcodes are meant to bridge the gap between when the user first acquires their pass, and when the subsequent batch upload call is made. |\n| `type` | `enum (`[BarcodeType](/wallet/tickets/transit-passes/qr-code/rest/v1/BarcodeType)`)` Required. The type of this barcode. Acceptable values are: - `QR_CODE` - `PDF_417` \u003cbr /\u003e |\n\nRotatingBarcodeValues\n\n| Field | Description |\n|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `startDateTime` | `string` The date/time the first barcode is valid from. Barcodes will be rotated through using `periodMillis`. This is an ISO 8601 extended format date/time, with an offset. |\n| `values[]` | `string` The values to encode in the barcode. At least one value is required. There is no maximum number of values, but note that the size of the request body cannot exceed 5MB. |\n| `periodMillis` | `number` The amount of time each barcode is valid for. |\n\nBatch updating barcode values\n-----------------------------\n\nAfter the RotatingBarcode object has been created, we recommend uploading a day's\nworth of barcodes, every day, until the user's pass expires. This can be done with the\nfollowing REST API endpoint.\n\n### Method: transitobject.uploadrotatingbarcodevalues\n\nUploads rotating barcode values to the transit object referenced by the given object ID.\n\n#### HTTP request\n\n`POST\nhttps://walletobjects.googleapis.com/upload/walletobjects/v1/transitObject/{resourc\neId}/uploadRotatingBarcodeValues`\n\n#### Path parameters\n\n| Parameter | Description |\n|--------------|-----------------------------------------------|\n| `resourceId` | `string` The unique identifier for an object. |\n\n#### Request body\n\nThe request body (which cannot exceed 5MB) contains an instance of\n[RotatingBarcodeValues](#RotatingBarcodeValues).\n\n### Method: transitobject.downloadrotatingbarcodevalues\n\nDownloads rotating barcode values for the transit object referenced by the given object\nID. This is useful if partners want to verify the latest batch.\n\n#### HTTP request\n\n`GET\nhttps://walletobjects.googleapis.com/walletobjects/v1/transitObject/{resourceId}/do\nwnloadRotatingBarcodeValues?alt=media`\n\n#### Path parameters\n\n| Parameter | Description |\n|--------------|-----------------------------------------------|\n| `resourceId` | `string` The unique identifier for an object. |\n\nFallback mechanisms\n-------------------\n\nNote that if an otherwise-valid RotatingBarcode has no valid barcodes to display (they haven't been uploaded yet, or all the current barcodes have been used), an error message will be shown to the user."]]