總覽

這個總覽概述了「透過 Google 訂購」流程,以及其與出貨網路服務的互動方式。

排序

「透過 Google 訂購」使用者介面會在使用者將訂單項目新增至訂單,並決定自取或外送 (視餐廳提供的服務) 時處理與使用者的所有互動。這項體驗採用資料動態饋給中的 RestaurantServiceMenu 實體。

下一步是購物車驗證階段,而使用者產生的 Cart 會由網路服務處理。

結帳動作

結帳動作是 Google 對您的網路服務端點發出的第一個呼叫。您的網路服務負責驗證 Cart。您必須確認商品的供應情形和價格、運算及退貨稅金、折扣和費用,以及驗證訂單寄送地址。

結帳流程會按照以下順序執行:

  1. Order with Google 服務會將包含 CartCheckoutRequestMessage 傳送至出貨網路服務端點。
  2. 您的網路服務必須根據目前價格、供應情形和服務供應商來驗證 Cart 中的項目。接著計算總價,包括折扣、稅金和運費。
  3. 您的端點會以 CheckoutResponseMessage 回應,且包含未經修改的 Cart 要求。如有需要,您可以在 CheckoutResponseMessage 中加入 FoodErrorExtension,以回報處理錯誤或提議小幅變更。

Cart 通過驗證後,使用者可能會選擇前往流程的訂單提交階段。

提交訂單動作

使用者下單時,系統會觸發提交訂單動作。您的網路服務必須重新驗證購物車、啟用線上付款功能時的卡片權杖,然後更新訂單狀態。

訂單提交程序會按照以下順序:

  1. Order with Google 服務會將包含 OrderSubmitOrderRequestMessage 傳送至出貨網路服務端點。您的後端必須執行另一項 Cart 驗證,才能繼續進行。
  2. 您的網路服務會處理 Order 中找到的付款資料,通常執行以下動作:

    1. 執行權杖驗證、詐欺和其他資格檢查。
    2. 授權卡,並視需要為卡片扣款。
  3. 您的端點會以 SubmitOrderResponseMessage 回應,其中包含 OrderUpdate 的狀態為 CREATED (「已訂購」購買狀態)、CONFIRMED (「已接受」的購買狀態) 或 REJECTED (「遭拒」狀態)。

使用者下訂後,使用者和您就會收到「透過 Google 訂餐」使用者介面的訂單狀態更新資訊。您必須傳送訂單確認電子郵件給使用者。此外,您亦使用 Async Order Order API 將相關訂單更新內容傳送給 Google。

非同步訂單更新動作

無論您負責的使用者通知為何,您也必須將下列事件的訂單狀態更新傳送給 Google:

  1. OrderState 的變更,例如從 CREATED 轉換至 CONFIRMED,以及從 CONFIRMED 轉換至 IN_TRANSIT
  2. 訂單商品的變更,例如價格或供應情形。
  3. 每當使用者觸發您的其中一個支援管道提出的支援要求時。

網路網路服務端點的更新會以包含 OrderUpdateAsyncOrderUpdateRequestMessage 傳送。Google 會回應 AsyncOrderUpdateResponseMessage

序列圖

下圖說明出貨動作如何與您的網路服務互動。按一下即可放大。

「Google 訂餐」出貨流程

設定出貨端點

「Google 訂餐」動作會使用 JSON 訊息與網路服務通訊,並處理食物訂單的處理、確認及更新。設計「Google 訂餐」網路服務時,您必須定義網址端點,以便接收來自「透過 Google 訂餐」服務的要求訊息,並將訊息傳回 Google 服務。您的實作必須符合下列需求:

  • 您的網路服務必須能夠透過 Order with Google 服務接收 POST 要求。
  • 您的網路服務必須提供一個可公開存取的網址端點,也就是您在合作夥伴入口網站中指定的出貨網址。出貨網址將用於結帳及提交訂單。您的實作必須處理這兩種類型的要求。
  • 您的網路服務必須具備使用訊息驗證方法驗證 Google 的訊息。
  • 實作網址端點時,必須能夠處理單一端點的結帳和訂單履行。您無法分別設定結帳網址,以及獨立的提交端點。

用戶端程式庫

「Tools」部分中的用戶端程式碼產生器可用於根據 Fulfillment API 規格驗證網路服務。