概要

この概要では、注文のエンドツーエンド フロー、およびフルフィルメント ウェブサービスとの連携方法について説明します。

注文

注文の完全なユーザー インターフェースは、ユーザーが注文にメニューアイテムを追加し、レストランが提供するサービスに応じて受け取りまたは配達を決定する際の、ユーザーとのすべてのやり取りを処理します。このエクスペリエンスは、データフィードにある RestaurantServiceMenu エンティティを基にしています。

次のステップはカートの検証ステージです。ここで、ユーザーが作成した結果の Cart がウェブサービスによって処理されます。

決済アクション

購入手続きアクションは、Google がウェブサービス エンドポイントに対して行う最初の呼び出しです。Cart の検証はウェブサービスが行います。商品の在庫状況と価格を確認し、税金、割引、手数料を計算して返品し、注文の配送先住所を検証する必要があります。

購入手続きは次の順序で行われます。

  1. Ordering End-to-End サービスは、Cart を含む CheckoutRequestMessage をフルフィルメント ウェブサービス エンドポイントに送信します。
  2. ウェブサービスは、現在の料金、空き状況、サービス プロバイダに基づいて Cart のアイテムを検証する必要があります。次に、割引、税金、送料を含む合計金額を計算します。
  3. エンドポイントは、成功したリクエストに対して、変更されていない Cart を含む CheckoutResponseMessage で応答します。FoodErrorExtensionCheckoutResponseMessage に含めて、処理エラーを報告したり、必要に応じて軽微な変更を提案したりできます。

Cart が検証されたら、ユーザーはフローの注文送信ステージに進むことができます。

注文送信アクション

注文送信アクションは、ユーザーが注文したときにトリガーされます。ウェブサービスは、カートの再検証、オンライン支払いが有効になっている場合はカードトークンの処理を行い、最後に注文のステータスを更新する必要があります。

注文送信プロセスは次の順序で行われます。

  1. Ordering End-to-End サービスは、Order を含む SubmitOrderRequestMessage をフルフィルメント ウェブサービス エンドポイントに送信します。バックエンドは、続行する前に別の Cart 検証を行う必要があります。
  2. ウェブサービスは Order にあるお支払い情報を処理します。通常、次の操作を行います。

    1. トークンの検証、不正行為、その他の適格性チェックを実施します。
    2. カードを承認し、必要に応じて請求します。
  3. エンドポイントは、ステータスが CREATED(購入ステータス「注文済み」)、CONFIRMED(購入ステータス「承認済み」)、または REJECTED(購入ステータス「不承認」)の OrderUpdate を含む SubmitOrderResponseMessage で応答します。

注文が完了すると、ユーザーは販売者から、および Ordering エンドツーエンドのユーザー インターフェースから、注文ステータスの最新情報を受け取ることを期待します。ユーザーに注文確認メールを送信する必要があります。また、非同期注文更新 API を使用して、関連する注文の更新情報を Google に送信します。

非同期注文更新アクション

お客様側でのユーザーへの通知とは別に、次のイベントについて注文ステータスの最新情報を Google に送信する必要があります。

  1. CREATED から CONFIRMED への遷移、CONFIRMED から IN_TRANSIT への遷移など、OrderState の変更。
  2. 注文アイテムの変更(価格や在庫状況など)。
  3. ユーザーがいずれかのカスタマー サポート チャネルからサポート リクエストをトリガーするたびに。

更新は、OrderUpdate を含む AsyncOrderUpdateRequestMessage としてウェブサービス エンドポイントから送信されます。Google は AsyncOrderUpdateResponseMessage で応答します。

シーケンス図

次の図は、フルフィルメント アクションがウェブサービスとやり取りする仕組みを示しています。クリックして拡大できます。

エンドツーエンドの注文フルフィルメント フロー

フルフィルメント エンドポイントを設定する

注文エンドツーエンド アクションは、JSON メッセージを使用してウェブサービスと通信し、食品注文の処理、確認、更新を処理します。Ordering End-to-End ウェブサービスを設計する場合は、Ordering End-to-End サービスからリクエスト メッセージを受信し、Google サービスにメッセージを返すことができる URL エンドポイントを定義する必要があります。実装は次の要件を満たす必要があります。

  • ウェブサービスは、Ordering End-to-End サービスから POST リクエストとして JSON メッセージを受信できる必要があります。
  • ウェブサービスは、一般公開の URL エンドポイント(フルフィルメント URL)を提供する必要があります。この URL は、Actions Center で指定します。フルフィルメント URL は、注文の購入手続きと送信に使用されます。実装では、両方のタイプのリクエストを処理する必要があります。
  • ウェブサービスは、メッセージの確認方法を使用して Google からのメッセージを確認できる必要があります。
  • URL エンドポイントの実装では、1 つのエンドポイントで購入手続きと注文処理の両方を処理できる必要があります。購入手続き用の URL エンドポイントと注文送信用の別のエンドポイントを設定することはできません。

クライアント ライブラリ

[ツール] セクションのクライアント コード生成ツールを使用すると、Fulfillment API 仕様に基づいてウェブサービスを検証できます。