Lượt đặt phòng đồng bộ được xác định là những lượt đặt phòng được xác nhận hoặc từ chối trong thời gian thực.
Lượt đặt phòng không đồng bộ được xác định là lượt đặt phòng mà người bán xác nhận hoặc từ chối sau đó.
Lượt đặt phòng được chỉ định là đồng bộ hoặc không đồng bộ ở cấp độ tình trạng phòng. Điều này cũng có nghĩa là đối với một người bán và dịch vụ nhất định, có thể có cả khung giờ có sẵn đồng bộ và không đồng bộ.
Để xác định cách triển khai phù hợp, trước tiên, hãy xác định danh mục mà khoảng không quảng cáo của bạn thuộc về:
- Chỉ bật tính năng đặt phòng đồng bộ: Tất cả người bán và dịch vụ đều được xác nhận ngay lập tức.
- Bật tính năng đặt trước không đồng bộ: Một số hoặc tất cả người bán và dịch vụ yêu cầu người bán xác nhận thủ công.
Tiêu chí đặt phòng không đồng bộ
- Không hỗ trợ việc sửa đổi một lượt đặt phòng không đồng bộ trên Trung tâm hành động.
- Người bán phải có thể chấp nhận hoặc từ chối yêu cầu đặt chỗ thông qua hệ thống trực tuyến của đối tác (ví dụ: bảng điều khiển của người tổ chức cho nhà hàng). Không được phép thay mặt người dùng gọi cho người bán để xác định xem người bán chấp nhận hay từ chối yêu cầu đặt trước.
- Chúng tôi không hỗ trợ đề xuất của người bán về thời gian đặt phòng mới. Yêu cầu đặt phòng phải được chấp nhận hoặc từ chối ở trạng thái ban đầu.
Chỉ bật tính năng đặt chỗ đồng bộ
Phương thức triển khai tiêu chuẩn mặc định là đặt phòng đồng bộ. Vui lòng tham khảo tài liệu về quy trình tích hợp toàn diện Lịch hẹn để biết thêm thông tin.
Bật tính năng đặt phòng không đồng bộ
Nếu một số hoặc tất cả người bán sử dụng quy trình đặt phòng không đồng bộ, bạn cần thực hiện các thay đổi sau:
-
Chế độ xác nhận: Tất cả các bản trình bày về khung giờ trống hiện đều chứa trường
confirmation_mode
mô tả cách xác nhận các lượt đặt phòng của khung giờ trống đó. Chỉ địnhconfirmation_mode
của từng khung giờ có sẵn cho các trường hợp sau:- Trong Nguồn cấp dữ liệu về tình trạng còn hàng,
confirmation_mode
được chỉ định ở cấp độ tình trạng còn hàng - Trong các phương thức API của máy chủ đặt phòng,
confirmation_mode
được chỉ định ở cấp chỗ - Trong các phương thức API Cập nhật theo thời gian thực,
confirmation_mode
được chỉ định ở cấp độ có sẵn
- Trong Nguồn cấp dữ liệu về tình trạng còn hàng,
- Trạng thái đặt phòng: Tất cả nội dung thể hiện lượt đặt phòng đều chứa trường
status
thể hiện trạng thái của lượt đặt phòng. Ba giá trị trạng thái không đồng bộ mới đã được giới thiệu:PENDING_CONFIRMATION
,DECLINED_BY_MERCHANT
vàFAILED
. Sử dụng các giá trị trạng thái mới này khi xử lý các yêu cầu tạo, từ chối và không thành công của lượt đặt phòng không đồng bộ. - Thông tin cập nhật về lượt đặt phòng: Tất cả thông tin cập nhật không đồng bộ về trạng thái của lượt đặt phòng phải được báo cáo thông qua phương thức bookings.patch của API Thông báo đặt phòng.
Sơ đồ dưới đây cho thấy cách sử dụng chế độ xác nhận và trạng thái đặt phòng trong một lượt tương tác đặt phòng không đồng bộ thông thường.
- Nguồn cấp dữ liệu về tình trạng còn hàng đã được cập nhật để chỉ định chế độ xác nhận của từng khung giờ còn hàng. Điều quan trọng là phải có thông tin này trong nguồn cấp dữ liệu để chúng ta có thể giải thích bản chất không đồng bộ của lượt đặt phòng cho người dùng ngay từ đầu quy trình.
- Khi gọi
BatchAvailabilityLookup
hoặcCheckAvailability
, chúng ta sẽ truyền cùng một chế độ xác nhận và lý tưởng là chế độ xác nhận đó sẽ được trả về. Điều này đảm bảo người dùng nhìn thấy thông báo phù hợp. - Khi gọi
CreateBooking
, chúng ta sẽ truyền chế độ xác nhận để cho biết chế độ xác nhận dự kiến. Khi bạn gửi yêu cầu đặt phòng không đồng bộ, yêu cầu đặt phòng sẽ được trả về với trạng tháiPENDING_MERCHANT_CONFIRMATION
. - Khi người bán chấp nhận hoặc từ chối yêu cầu đặt trước, trạng thái đặt trước sẽ được cập nhật thông qua phương thức bookings.patch của API Thông báo đặt trước cập nhật theo thời gian thực. Nếu bạn muốn tự động từ chối các yêu cầu đặt phòng không được phản hồi kịp thời, hãy thực hiện việc này thông qua cùng một phương thức cập nhật theo thời gian thực.
Nguồn cấp dữ liệu về tình trạng còn hàng
Trong nguồn cấp dữ liệu về tình trạng còn chỗ, hãy chỉ định xem mỗi khung giờ là đồng bộ hay không đồng bộ. Để thực hiện việc này, hãy đặt trường confirmation_mode
mới.
// Mode by which bookings for an availability slot are confirmed. enum ConfirmationMode { // The confirmation mode was not specified. // Synchronous confirmation will be assumed. CONFIRMATION_MODE_UNSPECIFIED = 0; // Bookings for this availability will be confirmed synchronously. CONFIRMATION_MODE_SYNCHRONOUS = 1; // Bookings for this availability will be confirmed asynchronously. CONFIRMATION_MODE_ASYNCHRONOUS = 2; }
Mặc dù chế độ xác nhận được giả định là đồng bộ nếu không có chế độ nào được chỉ định, nhưng bạn nên chỉ định rõ một chế độ vì điều này sẽ loại bỏ mọi nhầm lẫn xung quanh việc bỏ qua do vô tình.
Không đồng bộ
{ "availability": [ { "merchant_id": "10001", "service_id": "1000", "spots_open": 3, "spots_total": 3, "duration_sec": 3600, "start_sec": 1535806800, "resources": { "party_size": 4 }, "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" } ] }
Đồng bộ hoá
{ "availability": [ { "merchant_id": "10001", "service_id": "1000", "spots_open": 3, "spots_total": 3, "duration_sec": 3600, "start_sec": 1535806800, "resources": { "party_size": 4 }, "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] }
Không đồng bộ và đồng bộ
{ "availability": [ { "merchant_id": "10001", "service_id": "1000", "spots_open": 3, "spots_total": 3, "duration_sec": 3600, "start_sec": 1535806800, "resources": { "party_size": 4 }, "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, { "merchant_id": "10002", "service_id": "1000", "spots_open": 4, "spots_total": 4, "duration_sec": 3600, "start_sec": 1535806800, "resources": { "party_size": 2 }, "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" } ] }
Máy chủ đặt phòng
BatchAvailabilityLookup hoặc CheckAvailability
Trong BatchAvailabilityLookupResponse
(BAL) hoặc CheckAvailabilityResponse
(CA), hãy trả về cùng một confirmation_mode
như được chỉ định trong nguồn cấp dữ liệu về tình trạng còn hàng và được truyền qua BatchAvailabilityLookupRequest
hoặc CheckAvailabilityRequest
.
BAL-Async
{ "slot_time_availability": [ { "slot_time": { "duration_sec": "3600", "resource_ids": { "party_size": 3 }, "service_id": "1000", "start_sec": "1546458300", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, "available": true } ] }
BAL-Sync
{ "slot_time_availability": [ { "slot_time": { "duration_sec": "3600", "resource_ids": { "party_size": 3 }, "service_id": "1000", "start_sec": "1546458300", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, "available": true } ] }
CA-Async
{ "slot": { "duration_sec": "3600", "merchant_id": "317652", "resources": { "party_size": 3 }, "service_id": "1000", "start_sec": "1546458300", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, "count_available": 1, "duration_requirement": "DO_NOT_SHOW_DURATION" }
CA-Sync
{ "slot": { "duration_sec": "3600", "merchant_id": "317652", "resources": { "party_size": 3 }, "service_id": "1000", "start_sec": "1546458300", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, "count_available": 1, "duration_requirement": "DO_NOT_SHOW_DURATION" }
CreateBooking
Hãy nhớ trả về trạng thái chính xác cho lượt đặt phòng bằng cách sử dụng các tuỳ chọn có sẵn bên dưới:
// Status of a booking. // // Updating booking status does not change the status of the associated payment. // Prepayment status updates should be done using the PrepaymentStatus enum. enum BookingStatus { // Not specified. BOOKING_STATUS_UNSPECIFIED = 0; // Booking has been confirmed CONFIRMED = 1; // Booking is awaiting confirmation by the merchant before it can transition // into CONFIRMED status. Only applicable to non-payments Dining or // Beauty verticals. PENDING_MERCHANT_CONFIRMATION = 2; // Booking has been canceled on behalf of the user. // The merchant can still trigger a manual refund. CANCELED = 3; // User did not show for the appointment NO_SHOW = 4; // User did not show for the appointment in violation of the cancellation // policy. NO_SHOW_PENALIZED = 5; // Booking could not be completed by the async backend due to a failure. FAILED = 6; // Booking was asynchronously declined by the merchant. Only applicable to // non-payments Dining or Beauty verticals. DECLINED_BY_MERCHANT = 7; }
Trong CreateBookingResponse
, trả về confirmation_mode
hiện tại cho khung giờ tổng hợp của lượt đặt phòng được cung cấp trong CreateBookingRequest. Ngoài ra, khi yêu cầu đặt phòng không đồng bộ, hãy đặt status
thành PENDING_MERCHANT_CONFIRMATION
. Vui lòng đảm bảo rằng confirmation_mode
là những gì người dùng và tính năng Đặt chỗ với Google mong đợi để tránh gây nhầm lẫn cho người dùng.
Không đồng bộ
{ "booking": { "slot": { "duration_sec": "3600", "merchant_id": "100001", "resources": { "party_size": 2 }, "service_id": "1000", "start_sec": "1546647234", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, "user_information": { "email": "johnsmith@gmail.com", "family_name": "John", "given_name": "Smith", "telephone": "+1 800-123-4567", "user_id": "2017492857928759285" }, "payment_information": { "prepayment_status": "PREPAYMENT_NOT_PROVIDED" }, "status": "PENDING_MERCHANT_CONFIRMATION" } }
Đồng bộ hoá
{ "booking": { "slot": { "duration_sec": "3600", "merchant_id": "100001", "resources": { "party_size": 2 }, "service_id": "1000", "start_sec": "1546647234", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, "user_information": { "email": "johnsmith@gmail.com", "family_name": "John", "given_name": "Smith", "telephone": "+1 800-123-4567", "user_id": "2017492857928759285" }, "payment_information": { "prepayment_status": "PREPAYMENT_NOT_PROVIDED" }, "status": "CONFIRMED" } }
UpdateBooking
Trong bản phát hành ban đầu của tính năng không đồng bộ, các nội dung sửa đổi của người dùng đối với một lượt đặt phòng hiện có sẽ không được hỗ trợ. Thay vào đó, người dùng nên huỷ lượt đặt phòng và tạo một lượt đặt phòng mới.
Thông tin cập nhật theo thời gian thực
Để cập nhật tình trạng còn hàng theo thời gian thực, bạn phải chỉ định confirmation_mode
. Điều này áp dụng cho các phương thức sau:
RTU khoảng không quảng cáo (ReplaceServiceAvailability hoặc BatchReplaceServiceAvailability)
Sử dụng phương thức availability.replace
(tập hợp) hoặc phương thức services.availability.replace
, hãy đặt confirmation_mode
thành CONFIRMATION_MODE_ASYNCHRONOUS
trong Availability
Không đồng bộ
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2014-10-02T15:01:23.045123456Z", "endTimeRestrict": "2014-10-02T19:01:23.045123456Z", "availability": [ { "startTime": "2014-10-02T15:30:00.00Z", "duration": "3600s", "spotsOpen": "0", "spotsTotal": "2", "availabilityTag": "1000001", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" } ] } ] }
Đồng bộ hoá
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2014-10-02T15:01:23.045123456Z", "endTimeRestrict": "2014-10-02T19:01:23.045123456Z", "availability": [ { "startTime": "2014-10-02T15:30:00.00Z", "duration": "3600s", "spotsOpen": "0", "spotsTotal": "2", "availabilityTag": "1000001", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
Không đồng bộ và đồng bộ
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2014-10-02T15:01:23.045123456Z", "endTimeRestrict": "2014-10-02T19:01:23.045123456Z", "availability": [ { "startTime": "2014-10-02T15:30:00.00Z", "duration": "3600s", "spotsOpen": "0", "spotsTotal": "2", "availabilityTag": "1000001", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, { "startTime": "2014-10-03T11:00:00.00Z", "duration": "5400s", "spotsOpen": "1", "spotsTotal": "1", "availabilityTag": "1000002", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
API Thông báo đặt phòng
Bạn nên cập nhật trạng thái đặt phòng không đồng bộ thông qua phương thức bookings.patch của API Thông báo đặt phòng.
Khi cập nhật trạng thái, hãy nhớ thêm tên trường status
vào updateMask
.
Trạng thái | Mô tả |
---|---|
ĐÃ XÁC NHẬN | người bán đã xác nhận yêu cầu đặt phòng |
KHÔNG THÀNH CÔNG | đối tác không thể xác nhận hoặc từ chối yêu cầu đặt phòng với người bán |
DECLINED_BY_MERCHANT | người bán đã từ chối yêu cầu đặt phòng |
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status Body: {"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"DECLINED_BY_MERCHANT"}
Trong trường hợp không đặt phòng được, hãy đặt trạng thái đặt phòng thành FAILED
và chỉ định booking_failure. Nếu bạn đặt trạng thái thành bất kỳ giá trị nào khác, thì booking_failure
sẽ bị bỏ qua.
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status&booking_failure.cause="SLOT_UNAVAILABLE" Body: {"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"FAILED"}
Thông báo qua email
Đối với các lượt đặt phòng không đồng bộ, có 5 email có thể được gửi đến người dùng liên quan đến trạng thái của lượt đặt phòng.
PENDING_MERCHANT_CONFIRMATION
CONFIRMED
DECLINED_BY_MERCHANT
FAILED
CANCELED