Bước 3: Triển khai máy chủ đặt chỗ Danh sách chờ

Bạn cần thiết lập một máy chủ đặt trước để 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 lượt đặt trước.

  • Triển khai Danh sách chờ đặt trước. Mã này sẽ được dùng khi bạn tham gia chương trình thí điểm Danh sách chờ đặt trước. Việc này cho phép Trung tâm hành động truy xuất thời gian chờ ước tính và thay mặt người dùng tạo mục nhập danh sách chờ.
  • Quy trình triển khai chuẩn. Việc 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 trước và đặt chỗ với bạn. Để triển khai máy chủ đặt trước cho tính năng tích hợp hai đầu của quy trình Đặt trước, vui lòng tham khảo bài viết Triển khai máy chủ đặt phòng.

Hãy tham khảo tài liệu về Cổng đối tác để tìm hiểu cách định cấu hình kết nối với máy chủ hộp cát và máy chủ đặt trước phiên bản sản xuất.

Triển khai giao diện API REST

Triển khai giao diện API dựa trên REST. Việc này cho phép Google gửi các 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 trước hộp cát hoặc phát triển có thể kết nối với môi trường hộp cát của Actions Center. Chỉ chuyển sang môi trường sản xuất sau khi máy chủ hộp cát đã được kiểm thử đầy đủ.

Phương thức

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

Triển khai danh sách chờ
Định nghĩa dịch vụ danh sách chờ. Tải tệp định nghĩa dịch vụ proto xuống.
Phương thức Yêu cầu HTTP
HealthCheck TẢI /v3/HealthCheck/
BatchGetWaitEstimates POST /v3/BatchGetWaitEstimates/
CreateWaitlistEntry POST /v3/CreateWaitlistEntry/
GetWaitlistEntry POST /v3/GetWaitlistEntry/
DeleteWaitlistEntry POST /v3/DeleteWaitlistEntry/

Tài nguyên API

Danh sách chờ

Bạn có thể dùng các tài nguyên sau để triển khai tính năng đặt trước dựa trên danh sách chờ:

  • WaitEstimate: Thời gian chờ ước tính cho quy mô bữa tiệc và người bán cụ thể.
  • WaitlistEntry (Mục danh sách chờ): Thông tin của người dùng trong danh sách chờ.

Quy trình: tạo mục nhập danh sách chờ

Phần này trình bày cách tạo lượt đặt trước để tích hợp Danh sách chờ đặt chỗ.

Hình 2: Quy trình làm việc để tạo mục nhập danh sách chờ
Hình 2: Quy trình tạo mục nhập danh sách chờ

Khi người dùng tạo một mục trong danh sách chờ, Google sẽ gửi cho bạn tên, họ, số điện thoại và email của người dùng. Email giống với Tài khoản Google của người dùng và được coi là giá trị nhận dạng duy nhất. Theo quan điểm của bạn, danh sách chờ này cần được coi là một giao dịch thanh toán không cần đăng nhập, vì tính năng Đặt chỗ với Google 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 mục nhập trong danh sách chờ cuối cùng giống với mục nhập của người bán trong hệ thống danh sách chờ của bạn.

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

Mọi hoạt động giao tiếp với máy chủ đặt phòng đều diễn ra qua HTTPS, nên máy chủ của bạn cần phải có chứng chỉ TLS hợp lệ khớp với tên DNS của máy chủ. Để 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 miễn phí, chẳng hạn như Kiểm tra máy chủ SSL của Quays.

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 quy trình 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 đối tác. Bạn phải xoay vòng mật khẩu 6 tháng một lần.

Ví dụ về cách triển khai bộ xương

Để bắt đầu, hãy xem các bộ 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 đã loại bỏ 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ợ của bạn xử lý các yêu cầu HTTP, hai loại lỗi có thể xảy ra.

  • 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ác loại lỗi logic nghiệp vụ khác nhau tuỳ theo cách triển khai máy chủ.

Đối với tích hợp Danh sách chờ dành riêng cho phần Đặt trước, các lỗi logic nghiệp vụ sẽ được ghi lại trong Waitlist Business Error (Lỗi logic nghiệp vụ của danh sách chờ) 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 một tài nguyên, chẳng hạn như khi xử lý phương thức CreateWaitlistEntry. Các ví dụ bao gồm, nhưng không chỉ gồm:

  • ABOVE_MAX_PARTY_SIZE được dùng khi mục nhập danh sách chờ mà bạn yêu cầu vượt quá số người tham gia tối đa cho bữa tiệc.
  • MERCHANT_CLOSED được dùng khi danh sách chờ không mở vì người bán đã đóng cửa.

Tính không xác định

Hoạt động giao tiếp qua mạng không phải lúc nào 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 có trạng thái thay đổi đều phải không thay đổi giá trị:

  • CreateWaitlistEntry
  • DeleteWaitlistEntry

Đối với mọi thông báo yêu cầu ngoại trừ DeleteWaitlistEntry, mã thông báo giá trị nhận dạng sẽ được đưa vào để xác định riêng biệ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 được thử lại, với ý định tạo một yêu cầu duy nhất và hai yêu cầu riêng biệt. DeleteWaitlistEntry được xác định riêng biệt theo mã mục vào danh sách chờ tương ứng, do đó, sẽ không có mã thông báo giá trị nhận dạng nào được đưa vào yêu cầu của họ.

Sau đây là một số ví dụ về cách máy chủ đặt chỗ xử lý trường hợp không thay đổi:

  • Phản hồi HTTP CreateWaitlistEntry thành công có chứa mã mục nhập danh sách chờ đã tạo. Nếu cùng một CreateWaitlistEntryRequest được nhận lần thứ hai (với cùng idempotency_token), thì bạn phải trả về cùng một CreateWaitlistEntryResponse. Không có mục nhập danh sách chờ thứ hai nào được tạo và không có lỗi nào được trả về.

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

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