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