Bước 4: Triển khai máy chủ đặt phòng

Bạn cần thiết lập một máy chủ đặt phòng để cho phép Trung tâm hành động thực hiện lệnh gọi lại nhằm thay mặt bạn tạo và cập nhật các yêu cầu đặt phòng.

  • Phương thức triển khai Chuẩn. Điều này cho phép Trung tâm hành động thay mặt người dùng tạo cuộc hẹn, đặt chỗ và đặt trước với bạn.

Hãy tham khảo tài liệu về Partner Portal để tìm hiểu cách định cấu hình kết nối với hộp cát và máy chủ đặt phòng chính thức.

Triển khai giao diện API REST

Triển khai giao diện API dựa trên REST. Điều này cho phép Google gửi yêu cầu máy chủ đặt phòng qua HTTP.

Để bắt đầu, hãy thiết lập một máy chủ đặt phòng phát triển hoặc hộp cát có thể kết nối với môi trường hộp cát của Trung tâm hành động. Chỉ chuyển sang môi trường phát hành công khai sau khi kiểm thử đầy đủ máy chủ hộp cát.

Phương thức

Đối với mỗi loại máy chủ đặt phòng, bạn cần có một bộ phương thức API khác nhau. Bạn có thể tải định nghĩa dịch vụ xuống ở định dạng proto để bắt đầu triển khai API (không bắt buộc). Các bảng sau đây cho thấy các phương thức triển khai và bao gồm các đường liên kết đến định dạng proto của dịch vụ.

Triển khai chuẩn
Định nghĩa dịch vụ chuẩn Tải tệp định nghĩa dịch vụ proto xuống.
Phương thức Yêu cầu HTTP
HealthCheck GET /v3/HealthCheck/
BatchAvailabilityLookup POST /v3/BatchAvailabilityLookup/
CreateBooking POST /v3/CreateBooking/
UpdateBooking POST /v3/UpdateBooking/
GetBookingStatus POST /v3/GetBookingStatus/
ListBookings POST /v3/ListBookings/

Tài nguyên API

Đặt dịch vụ

Các loại tài nguyên sau đây được dùng trong quá trình triển khai tiêu chuẩn:

  • Khe: Một khe khoảng không quảng cáo.
  • Lượt đặt phòng: Lượt đặt lịch hẹn cho một khung giờ nhận đặt phòng.

Quy trình: tạo lượt đặt trước

Phần này trình bày cách tạo một lượt đặt trước cho phương thức triển khai tiêu chuẩn.

Hình 1: Quy trình tạo yêu cầu đặt trước từ một khung giờ
Hình 1: Quy trình tạo yêu cầu đặt trước từ một khung giờ

Khi người dùng tạo một yêu cầu đặt trước, Google sẽ gửi cho bạn tên, họ, số điện thoại và email của người dùng đó. Theo quan điểm của bạn, lượt đặt phòng này cần được coi là lượt thanh toán của khách vì Trung tâm hành động không thể tra cứu tài khoản của người dùng trong hệ thống của bạn. Đảm bảo rằng lượt đặt phòng cuối cùng giống hệt với lượt đặt phòng của người bán qua hệ thống đặt phòng của bạn.

Bảo mật và xác thực

Tất cả hoạt động giao tiếp với máy chủ đặt phòng đều diễn ra qua HTTPS, vì vậy, máy chủ của bạn phải có chứng chỉ TLS hợp lệ khớp với tên DNS. Để giúp thiết lập máy chủ, bạn nên sử dụng một công cụ xác minh SSL/TLS có sẵn công khai, chẳng hạn như Kiểm thử máy chủ SSL của Qualys.

Tất cả các yêu cầu mà Google gửi đến máy chủ đặt phòng của bạn sẽ được xác thực bằng phương thức xác thực cơ bản HTTP. Bạn có thể nhập thông tin xác thực cơ bản (tên người dùng và mật khẩu) cho máy chủ đặt phòng trên trang Cấu hình máy chủ đặt phòng trong Cổng thông tin đối tác. Bạn phải thay đổi mật khẩu 6 tháng một lần.

Triển khai khung mẫu

Để bắt đầu, hãy xem các khung mẫu sau đây của máy chủ đặt phòng được viết cho khung Node.js và Java:

Các máy chủ này đã tạo bản mô phỏng cho các phương thức REST.

Yêu cầu

Lỗi HTTP và lỗi logic nghiệp vụ

Khi phần phụ trợ xử lý các yêu cầu HTTP, có thể xảy ra hai loại lỗi.

  • Lỗi liên quan đến cơ sở hạ tầng hoặc dữ liệu không chính xác
  • Lỗi liên quan đến logic kinh doanh
    • Trả về mã trạng thái HTTP được đặt thành 200 OK và chỉ định lỗi logic nghiệp vụ trong nội dung phản hồi. Các loại lỗi logic kinh doanh mà bạn có thể gặp phải sẽ khác nhau tuỳ theo loại triển khai máy chủ.

Đối với phương thức triển khai Chuẩn, các lỗi logic kinh doanh có thể xảy ra sẽ được ghi lại trong Booking Failure (Lỗi đặt phòng) và được trả về trong phản hồi HTTP. Bạn có thể gặp lỗi logic nghiệp vụ khi tạo hoặc cập nhật tài nguyên. Ví dụ: khi bạn xử lý các phương thức CreateBooking hoặc UpdatingBooking. Một số ví dụ bao gồm, nhưng không giới hạn ở:

  • SLOT_UNAVAILABLE được dùng nếu khung giờ được yêu cầu không còn.
  • PAYMENT_ERROR_CARD_TYPE_REJECTED được dùng nếu loại thẻ tín dụng được cung cấp không được chấp nhận.

Tính chất idempotent

Không phải lúc nào việc giao tiếp qua mạng cũng đáng tin cậy và Google có thể thử lại các yêu cầu HTTP nếu không nhận được phản hồi. Vì lý do này, tất cả các phương thức thay đổi trạng thái phải idempotent:

  • CreateBooking
  • UpdateBooking

Đối với mọi thông báo yêu cầu ngoại trừ UpdateBooking, mã thông báo idempotent sẽ được đưa vào để xác định duy nhất yêu cầu đó. Điều này cho phép bạn phân biệt giữa lệnh gọi REST thử lại, với ý định tạo một yêu cầu và hai yêu cầu riêng biệt. UpdateBooking được xác định riêng biệt bằng mã mục đặt phòng tương ứng, vì vậy, không có mã thông báo về tính chất idempotent nào được đưa vào yêu cầu của chúng.

Sau đây là một số ví dụ về cách máy chủ đặt phòng xử lý tính chất không thể thay đổi:

  • Phản hồi HTTP CreateBooking thành công sẽ bao gồm cả lượt đặt phòng đã tạo. Trong một số trường hợp, khoản thanh toán được xử lý trong quy trình đặt phòng. Nếu nhận được chính xác cùng một CreateBookingRequest lần thứ hai (với cùng một idempotency_token), thì phải trả về chính CreateBookingResponse đó. Hệ thống sẽ không tạo yêu cầu đặt phòng thứ hai và người dùng sẽ chỉ bị tính phí một lần (nếu có).

    Xin lưu ý rằng nếu một lần thử CreateBooking không thành công và cùng một yêu cầu được gửi lại, thì trong trường hợp này, phần phụ trợ của bạn sẽ thử lại yêu cầu đó.

Yêu cầu về tính chất idempotent áp dụng cho tất cả các phương thức thay đổi trạng thái.