概览

本概览总结了端到端订购流程,及其与执行方式网络服务的交互方式。

排序

当用户向订单添加菜单项并决定自提还是送餐时,该界面会处理与用户的所有互动,具体取决于餐馆提供的服务。此体验由您的数据 Feed 中的 RestaurantServiceMenu 实体提供支持。

下一步是购物车验证阶段,在此阶段中,用户创建的结果 Cart 将由您的网络服务进行处理。

结账操作

结账操作是 Google 对您的网络服务端点的首次调用。 您的网络服务负责验证 Cart。您必须确认商品的库存状况和价格,计算和退货税费、折扣及其他费用,并验证订单配送地址。

结账流程遵循以下顺序:

  1. 订购端到端服务会向您的执行方式网络服务端点发送包含 CartCheckoutRequestMessage
  2. 您的网络服务需要根据当前价格、可用性和服务提供商验证 Cart 中的商品。然后计算总价,其中包含折扣、税费和运费。
  3. 您的端点会返回一个 CheckoutResponseMessage,其中包含成功请求的未经修改的 Cart。如有必要,可以在 CheckoutResponseMessage 中添加 FoodErrorExtension,以引发处理错误或提出细微更改。

验证 Cart 后,用户可以选择继续进入流程的订单提交阶段。

提交订单操作

提交订单操作会在用户下订单时触发。您的网络服务必须重新验证购物车,处理卡令牌(如果已启用在线付款),并最终更新订单的状态。

订单提交流程如下:

  1. 订购端到端服务会向您的执行方式网络服务端点发送包含 OrderSubmitOrderRequestMessage。在继续操作之前,您的后端需要再执行一次 Cart 验证。
  2. 您的网络服务会处理在 Order 中找到的付款信息,通常执行以下操作:

    1. 执行令牌验证、欺诈和其他资格检查。
    2. 授权,还可选择从卡中扣款。
  3. 您的端点返回 SubmitOrderResponseMessage,其中包含的 OrderUpdate 状态为 CREATED(“已订购”购买状态)、CONFIRMED(“已接受”购买状态)或 REJECTED(“已拒绝”购买状态)。

下单后,用户希望从您和端到端订购界面收到订单状态更新。您必须向用户发送订单确认电子邮件。此外,您还可以使用异步订单更新 API 向 Google 发送相关的订单更新。

异步订单更新操作

无论您是否收到任何用户通知,您还必须针对以下事件向 Google 发送订单状态更新:

  1. OrderState 的更改,例如从 CREATED 转换为 CONFIRMED,以及从 CONFIRMED 转换为 IN_TRANSIT
  2. 更改订单商品,例如价格或库存状况。
  3. 每当用户通过某个客户服务渠道触发支持请求时。

更新以包含 OrderUpdateAsyncOrderUpdateRequestMessage 的形式从网络服务端点发送。Google 会返回 AsyncOrderUpdateResponseMessage

序列图

下图演示了 fulfillment 操作如何与网络服务进行交互。点击可放大。

订购端到端履单流程

设置执行方式端点

端到端订购操作使用 JSON 消息与您的网络服务通信,并处理、确认和更新订餐。在设计端到端订购网络服务时,您必须定义一个网址端点,该端点用于接收来自订购端到端服务的请求消息,并且可以将消息返回给 Google 服务。您的实现必须满足以下要求:

  • 您的网络服务必须能够从订购端到端服务以 POST 请求的形式接收 JSON 消息。
  • 您的网络服务必须提供一个可公开访问的网址端点,称为“执行方式网址”,且应在 Actions Center 中指定履单网址用于结账和提交订单。您的实现必须处理这两种类型的请求。
  • 您的网络服务必须能够使用消息验证方法验证来自 Google 的消息。
  • 您在实现网址端点时,必须能够使用单个端点处理结账和履单。您不能将一个网址端点用于结账,而将一个单独的端点用于订购提交。

客户端库

“工具”部分中的客户端代码生成器可用于根据 Fulfillment API 规范验证您的网络服务。