本概览总结了端到端订购流程,及其与执行方式网络服务的交互方式。
排序
当用户向订单添加菜单项并决定自提还是送餐时,该界面会处理与用户的所有互动,具体取决于餐馆提供的服务。此体验由您的数据 Feed 中的 Restaurant
、Service
和 Menu
实体提供支持。
下一步是购物车验证阶段,在此阶段中,用户创建的结果 Cart
将由您的网络服务进行处理。
结账操作
结账操作是 Google 对您的网络服务端点的首次调用。
您的网络服务负责验证 Cart
。您必须确认商品的库存状况和价格,计算和退货税费、折扣及其他费用,并验证订单配送地址。
结账流程遵循以下顺序:
- 订购端到端服务会向您的执行方式网络服务端点发送包含
Cart
的CheckoutRequestMessage
。 - 您的网络服务需要根据当前价格、可用性和服务提供商验证
Cart
中的商品。然后计算总价,其中包含折扣、税费和运费。 - 您的端点会返回一个
CheckoutResponseMessage
,其中包含成功请求的未经修改的Cart
。如有必要,可以在CheckoutResponseMessage
中添加FoodErrorExtension
,以引发处理错误或提出细微更改。
验证 Cart
后,用户可以选择继续进入流程的订单提交阶段。
提交订单操作
提交订单操作会在用户下订单时触发。您的网络服务必须重新验证购物车,处理卡令牌(如果已启用在线付款),并最终更新订单的状态。
订单提交流程如下:
- 订购端到端服务会向您的执行方式网络服务端点发送包含
Order
的SubmitOrderRequestMessage
。在继续操作之前,您的后端需要再执行一次Cart
验证。 您的网络服务会处理在
Order
中找到的付款信息,通常执行以下操作:- 执行令牌验证、欺诈和其他资格检查。
- 授权,还可选择从卡中扣款。
您的端点返回
SubmitOrderResponseMessage
,其中包含的OrderUpdate
状态为CREATED
(“已订购”购买状态)、CONFIRMED
(“已接受”购买状态)或REJECTED
(“已拒绝”购买状态)。
下单后,用户希望从您和端到端订购界面收到订单状态更新。您必须向用户发送订单确认电子邮件。此外,您还可以使用异步订单更新 API 向 Google 发送相关的订单更新。
异步订单更新操作
无论您是否收到任何用户通知,您还必须针对以下事件向 Google 发送订单状态更新:
- 对
OrderState
的更改,例如从CREATED
转换为CONFIRMED
,以及从CONFIRMED
转换为IN_TRANSIT
。 - 更改订单商品,例如价格或库存状况。
- 每当用户通过某个客户服务渠道触发支持请求时。
更新以包含 OrderUpdate
的 AsyncOrderUpdateRequestMessage
的形式从网络服务端点发送。Google 会返回 AsyncOrderUpdateResponseMessage
。
序列图
下图演示了 fulfillment 操作如何与网络服务进行交互。点击可放大。
设置执行方式端点
端到端订购操作使用 JSON 消息与您的网络服务通信,并处理、确认和更新订餐。在设计端到端订购网络服务时,您必须定义一个网址端点,该端点用于接收来自订购端到端服务的请求消息,并且可以将消息返回给 Google 服务。您的实现必须满足以下要求:
- 您的网络服务必须能够从订购端到端服务以
POST
请求的形式接收 JSON 消息。 - 您的网络服务必须提供一个可公开访问的网址端点,称为“执行方式网址”,且应在 Actions Center 中指定。履单网址用于结账和提交订单。您的实现必须处理这两种类型的请求。
- 您的网络服务必须能够使用消息验证方法验证来自 Google 的消息。
- 您在实现网址端点时,必须能够使用单个端点处理结账和履单。您不能将一个网址端点用于结账,而将一个单独的端点用于订购提交。
客户端库
“工具”部分中的客户端代码生成器可用于根据 Fulfillment API 规范验证您的网络服务。