這個總覽概述了「透過 Google 訂購」流程,以及其與出貨網路服務的互動方式。
排序
「透過 Google 訂購」使用者介面會在使用者將訂單項目新增至訂單,並決定自取或外送 (視餐廳提供的服務) 時處理與使用者的所有互動。這項體驗採用資料動態饋給中的 Restaurant
、Service
和 Menu
實體。
下一步是購物車驗證階段,而使用者產生的 Cart
會由網路服務處理。
結帳動作
結帳動作是 Google 對您的網路服務端點發出的第一個呼叫。您的網路服務負責驗證 Cart
。您必須確認商品的供應情形和價格、運算及退貨稅金、折扣和費用,以及驗證訂單寄送地址。
結帳流程會按照以下順序執行:
- Order with Google 服務會將包含
Cart
的CheckoutRequestMessage
傳送至出貨網路服務端點。 - 您的網路服務必須根據目前價格、供應情形和服務供應商來驗證
Cart
中的項目。接著計算總價,包括折扣、稅金和運費。 - 您的端點會以
CheckoutResponseMessage
回應,且包含未經修改的Cart
要求。如有需要,您可以在CheckoutResponseMessage
中加入FoodErrorExtension
,以回報處理錯誤或提議小幅變更。
Cart
通過驗證後,使用者可能會選擇前往流程的訂單提交階段。
提交訂單動作
使用者下單時,系統會觸發提交訂單動作。您的網路服務必須重新驗證購物車、啟用線上付款功能時的卡片權杖,然後更新訂單狀態。
訂單提交程序會按照以下順序:
- Order with Google 服務會將包含
Order
的SubmitOrderRequestMessage
傳送至出貨網路服務端點。您的後端必須執行另一項Cart
驗證,才能繼續進行。 您的網路服務會處理
Order
中找到的付款資料,通常執行以下動作:- 執行權杖驗證、詐欺和其他資格檢查。
- 授權卡,並視需要為卡片扣款。
您的端點會以
SubmitOrderResponseMessage
回應,其中包含OrderUpdate
的狀態為CREATED
(「已訂購」購買狀態)、CONFIRMED
(「已接受」的購買狀態) 或REJECTED
(「遭拒」狀態)。
使用者下訂後,使用者和您就會收到「透過 Google 訂餐」使用者介面的訂單狀態更新資訊。您必須傳送訂單確認電子郵件給使用者。此外,您亦使用 Async Order Order API 將相關訂單更新內容傳送給 Google。
非同步訂單更新動作
無論您負責的使用者通知為何,您也必須將下列事件的訂單狀態更新傳送給 Google:
OrderState
的變更,例如從CREATED
轉換至CONFIRMED
,以及從CONFIRMED
轉換至IN_TRANSIT
。- 訂單商品的變更,例如價格或供應情形。
- 每當使用者觸發您的其中一個支援管道提出的支援要求時。
網路網路服務端點的更新會以包含 OrderUpdate
的 AsyncOrderUpdateRequestMessage
傳送。Google 會回應 AsyncOrderUpdateResponseMessage
。
序列圖
下圖說明出貨動作如何與您的網路服務互動。按一下即可放大。
設定出貨端點
「Google 訂餐」動作會使用 JSON 訊息與網路服務通訊,並處理食物訂單的處理、確認及更新。設計「Google 訂餐」網路服務時,您必須定義網址端點,以便接收來自「透過 Google 訂餐」服務的要求訊息,並將訊息傳回 Google 服務。您的實作必須符合下列需求:
- 您的網路服務必須能夠透過 Order with Google 服務接收
POST
要求。 - 您的網路服務必須提供一個可公開存取的網址端點,也就是您在合作夥伴入口網站中指定的出貨網址。出貨網址將用於結帳及提交訂單。您的實作必須處理這兩種類型的要求。
- 您的網路服務必須具備使用訊息驗證方法驗證 Google 的訊息。
- 實作網址端點時,必須能夠處理單一端點的結帳和訂單履行。您無法分別設定結帳網址,以及獨立的提交端點。
用戶端程式庫
「Tools」部分中的用戶端程式碼產生器可用於根據 Fulfillment API 規格驗證網路服務。