Ứng dụng Java Booking API
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.
Bạn có thể tải ứng dụng API cập nhật theo thời gian thực của Java xuống để bắt đầu triển khai tính năng cập nhật theo thời gian thực.
Điều kiện tiên quyết:
Tạo tài khoản dịch vụ, tải khoá riêng tư xuống.
Bắt đầu:
- Tải thư viện ứng dụng Java xuống, giải nén tệp để lấy gói "mapsbooking".
-
Tạo một dự án Java trong IDE, tải các mã mẫu InventoryUpdate.java và BookingNotification.java từ kho lưu trữ này:
git clone https://maps-booking.googlesource.com/java-maps-booking-api-example
rồi nhập các tệp đó vào dự án java trong thư mục src.
- Sao chép khoá riêng tư (tệp JSON) vào thư mục src.
- Thêm Thư viện ứng dụng Java vào phần phụ thuộc của dự án (bao gồm cả các tệp jar trong thư mục mapsbooking và libs-sources).
- Trong cả hai tệp java, hãy làm theo TODO để hoàn tất quá trình triển khai
Bạn có thể xem thêm thông tin chi tiết về API REST tại đây.
Gỡ rối:
-
Khi cố gắng tạo một người bán/dịch vụ mới bằng merchantId hoặc serviceId hiện có, bạn sẽ nhận được thông báo lỗi sau:
409 Conflict
{
“code” : 409,
“errors” :
[{
“domain” : “global”,
“message” : “Requested entity already exists”,
“reason” : “alreadyExists”,
“debugInfo” : “detail: "[ORIGINAL ERROR] generic::already_exists: ...”\n"
}],
“message” : “Requested entity already exists”,
“status” : “ALREADY_EXISTS”
}
- Khi thực hiện lệnh gọi thay thế trạng thái còn hàng bằng merchantId hoặc serviceId không hợp lệ, lệnh gọi sẽ không gửi thông báo lỗi. Lý do là các thay đổi đối với khung giờ có sẵn thông qua RTU hỗ trợ việc thực thi không theo thứ tự và do đó không được liên kết với merchantId hoặc serviceId. Tuy nhiên, các khung giờ trong yêu cầu sẽ không được phân phát trong phiên bản chính thức do mã người bán hoặc mã dịch vụ không hợp lệ. Để có thể phân phát các khung giờ, vui lòng thêm người bán hoặc dịch vụ bị thiếu thông qua RTU hoặc nguồn cấp dữ liệu.
- Trong tất cả các hàm cập nhật, tham số "updateMask" phải ở định dạng FieldMask để chỉ định các trường cần cập nhật. API chỉ được phép thay đổi giá trị của các trường như đã chỉ định trong mặt nạ và để nguyên các trường khác. Nếu bạn truyền sai chuỗi updateMask, thì bản cập nhật sẽ không có hiệu lực. Nếu không có mặt nạ trường nào trong quá trình cập nhật, thao tác này sẽ áp dụng cho tất cả các trường (như thể đã chỉ định mặt nạ trường của tất cả các trường). Vì vậy, nếu bạn muốn cập nhật tất cả các trường, chỉ cần đặt updateMask thành trống.
- Bất kỳ trường nào có giá trị bằng 0 đều không xuất hiện trong phản hồi.
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-26 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-26 UTC."],[[["\u003cp\u003eDownload the Java real-time update API client and sample code to get started with implementing real-time updates for your booking services.\u003c/p\u003e\n"],["\u003cp\u003eYou will need a service account with a downloaded private key to use the client.\u003c/p\u003e\n"],["\u003cp\u003eThe client library allows you to manage inventory and booking notifications, and more details on the REST API are available in the documentation.\u003c/p\u003e\n"],["\u003cp\u003eTroubleshooting information is provided for common issues such as entity conflicts, invalid IDs, and update mask usage.\u003c/p\u003e\n"],["\u003cp\u003eRemember that zero-valued fields are not displayed in responses from the API.\u003c/p\u003e\n"]]],["Download the Java real-time update API client and library. Create a Java project, import the sample code files, `InventoryUpdate.java` and `BookingNotification.java`, and copy your private key to the `src` directory. Add the Java Client Library to your project dependencies. Follow the TODOs in the Java files to complete implementation. Be aware of 409 errors with existing IDs. Replace availability calls won't throw errors with invalid IDs. Ensure the 'updateMask' parameter is in FieldMask format in update functions.\n"],null,["# Java Booking API client\n\nYou can download our\n[Java real time update API client](https://maps-booking.googlesource.com/java-maps-booking-api-example/) to help get started implementing\nthe real time updates.\n\nPrerequisite:\n-------------\n\nHave your service account created, download your private key.\n\nGet started:\n------------\n\n1. Download the [Java client library](https://dl.google.com/mapsbooking/apiclients/v1alpha/mapsbooking_java_public.zip) unzip the file to get the 'mapsbooking' package.\n2. Create a java project in your IDE, download the sample codes\n [InventoryUpdate.java](https://maps-booking.googlesource.com/java-maps-booking-api-example/+/master/InventoryUpdate.java) and\n [BookingNotification.java](https://maps-booking.googlesource.com/java-maps-booking-api-example/+/master/BookingNotification.java) from this repo:\n\n ```java\n git clone https://maps-booking.googlesource.com/java-maps-booking-api-example\n ```\n\n and import them into your java project under src directory.\n3. Make a copy of your private key (JSON file) to the src directory.\n4. Add the Java Client Library to the dependencies of your project (include jar files under mapsbooking and libs-sources directory).\n5. In both java files, follow the TODOs to complete your implementations\n\nMore detail about the REST API can be\n[found here](/maps-booking/reference/maps-booking-api/rest).\n\nTroubleshooting:\n----------------\n\n1. When trying to create a new merchant/service with an existing merchantId or\n serviceId, you will get the following error message:\n\n ```java\n 409 Conflict\n {\n \"code\" : 409,\n \"errors\" :\n [{\n \"domain\" : \"global\",\n \"message\" : \"Requested entity already exists\",\n \"reason\" : \"alreadyExists\",\n \"debugInfo\" : \"detail: \"[ORIGINAL ERROR] generic::already_exists: ...\"\\n\"\n }],\n \"message\" : \"Requested entity already exists\",\n \"status\" : \"ALREADY_EXISTS\"\n }\n ```\n2. When making a replace availaiblity call with an invalid merchantId or serviceId, the call will **not** throw an error message. This is because changes to availability slots via RTUs support out-of-order execution and thus is not associated with a merchantId or serviceId. However, the slots in the request will not be served in the production due to the invalid merchantId or serviceId. To make the slots servable, please add the missing merchant or service via RTUs or feeds.\n3. In all update functions, the parameter 'updateMask' must be in [FieldMask](/protocol-buffers/docs/reference/google.protobuf#fieldmask) format to specify the fields to update. The API is required to only change the values of the fields as specified in the mask and leave the others untouched. If you pass the wrong updateMask string, the update will not take effect. If a field mask is not present on update, the operation applies to all fields (as if a field mask of all fields has been specified). So if you want to update all fields, just set the updateMask empty.\n4. Any field that has a zero value is not shown in the response."]]