この概要では、エンドツーエンドの注文フローと、このフローがフルフィルメント ウェブサービスとどのようにやり取りするかについて概説します。
並べ替え
注文からエンドユーザー向けユーザー インターフェースは、レストランが提供するサービスに応じて、注文にメニュー項目を追加し、受け取りまたは宅配を決定する際のユーザーとのやり取りをすべて処理します。この機能は、データフィードにある Restaurant
、Service
、Menu
の各エンティティを利用しています。
次のステップはカート検証ステージです。ユーザーによって作成された Cart
がウェブサービスによって処理されます。
決済アクション
決済アクションは、Google がウェブサービス エンドポイントに対して行う最初の呼び出しです。ウェブサービスは、Cart
の検証を行います。商品アイテムの在庫状況と価格を確認し、税金、割引、手数料を計算して返品し、注文の配送先住所を検証する必要があります。
購入手続きは次のような流れになります。
- Ordering End-to-End サービスは、
Cart
を含むCheckoutRequestMessage
をフルフィルメント ウェブサービス エンドポイントに送信します。 - ウェブサービスは、現在の価格、在庫状況、サービス プロバイダに基づいて、
Cart
内のアイテムを検証する必要があります。割引、税金、配送料を含む合計金額を計算します。 - エンドポイントは、成功したリクエストに対して、変更されていない
Cart
を含むCheckoutResponseMessage
を返します。必要に応じて、FoodErrorExtension
をCheckoutResponseMessage
に含めて、処理エラーの発生や軽微な変更の提案を行うことができます。
Cart
の検証後、ユーザーはフローの注文送信ステージに進むことができます。
注文アクションを送信
注文送信アクションは、ユーザーが注文を確定したときにトリガーされます。ウェブサービスは、カートを再検証し、オンライン支払いが有効になっている場合はカードトークンを処理して、最後に注文のステータスを更新する必要があります。
注文送信プロセスは、次の手順で行われます。
- Ordering End-to-End サービスは、
Order
を含むSubmitOrderRequestMessage
をフルフィルメント ウェブサービス エンドポイントに送信します。続行する前に、バックエンドで別のCart
検証を実行する必要があります。 ウェブサービスは、
Order
にある支払い詳細を処理します。通常、次の処理を行います。- トークンの検証、不正行為、その他の利用資格のチェックを行う。
- カードを承認し、必要に応じて請求します。
エンドポイントは
CREATED
(「注文済み」の購入ステータス)、CONFIRMED
(「承諾済み」の購入ステータス)、REJECTED
(「不承認」の購入ステータス)のOrderUpdate
を含むSubmitOrderResponseMessage
を返します。
注文後、ユーザーは販売者と注文に関するエンドツーエンドのユーザー インターフェースの両方から注文ステータスの更新情報を受け取ることができると考えています。ユーザーに注文確認メールを送信する必要があります。また、非同期 Order Update API を使用して、該当する注文の更新を Google に送信します。
非同期注文更新アクション
お客様側のユーザー通知とは別に、次のイベントについては、注文ステータスの更新を Google に送信する必要があります。
CREATED
からCONFIRMED
への移行、CONFIRMED
からIN_TRANSIT
への遷移など、OrderState
の変更。- 注文アイテムの変更(価格、在庫状況など)。
- ユーザーがいずれかのカスタマー サポート チャネルからサポート リクエストをトリガーするとき。
アップデートは、OrderUpdate
を含む AsyncOrderUpdateRequestMessage
としてウェブサービス エンドポイントから送信されます。Google は AsyncOrderUpdateResponseMessage
を返します。
シーケンス図
次の図は、フルフィルメント アクションがウェブサービスとどのようにやり取りするかを示しています。クリックして拡大
フルフィルメント エンドポイントを設定する
Ordering End-to-End アクションは JSON メッセージを使用してウェブサービスと通信し、料理の注文の処理、確認、更新を処理します。Ordering End-to-End ウェブサービスを設計する場合は、Ordering End-to-End サービスからリクエスト メッセージを受信し、Google サービスにメッセージを返すことができる URL エンドポイントを定義する必要があります。実装は次の要件を満たす必要があります。
- ウェブサービスは、Ordering End-to-End サービスから
POST
リクエストとして JSON メッセージを受信できる必要があります。 - ウェブサービスでは、フルフィルメント URL という一般公開されている URL エンドポイントを提供する必要があります。これはアクション センターで指定されます。フルフィルメント URL は、注文の決済と送信に使用されます。実装では、両方のタイプのリクエストを処理する必要があります。
- ウェブサービスで、メッセージの確認メソッドを使用して Google からのメッセージを検証できる必要があります。
- URL エンドポイントの実装では、単一のエンドポイントで購入手続きと注文フルフィルメントの両方を処理できる必要があります。購入手続き用に 1 つの URL エンドポイントを設定し、注文の送信用に別のエンドポイントを使用することはできません。
クライアント ライブラリ
[ツール] セクションのクライアント コード生成ツールを使用すると、Fulfillment API 仕様に対してウェブサービスを検証できます。