订单简介

本部分介绍 Orders API 中订单的结构和生命周期。

链接

订单的结构

订单包含订单项,订单项指的是商品。客户可以下单购买一定数量的商品。例如,一个包含 2 台 Chromecast 和 1 台 Nexus 6 的订单应表示为有 2 个订单项,由数量为 2 的 Chromecast 商品和数量为 1 的 Nexus 6 商品组成。

订单还采集其他购买时间信息,例如客户选择的配送方式、配送和帐单邮寄地址,以及接收来自商家的电子邮件的偏好设置。有关订单中包含内容的完整说明,请参阅订单资源页面

如果订单状态发生变化,例如由于商品正在配送或退款已经获得批准,这些信息也会显示在订单资源的详情中。

每个订单都有订单状态,其中汇总了订单完成的进度。订单状态会经常根据实际订单项的状态而更新。例如,如果所有订单项都已配送,则订单状态将会是 shipped

Orders API ID

Orders API 中有一些不同的 ID,用于描述不同的操作:

Google 订单 ID
此值由 Google 在客户创建订单时分配,并且在所有订单甚至是不同的 Merchant Center 帐号中都是唯一的。
商家订单 ID
此值由商家在订单创建后分配。此值在商家帐号中必须是唯一的。
订单项 ID
此值由 Google 在订单创建时分配,并且指示订单中的订单项。订单项包含有关订购内容的详请,例如商品、数量、税费和优惠 ID。
运单 ID
此值由商家在创建新运单时分配。此值在指定订单的生命周期内必须是唯一的。
操作 ID
此值由商家在使用此 API 对订单执行操作时分配,用于检测重复请求,并且在单个订单的生命周期内必须是唯一的。

订单的生命周期

订单通常由选择在 Google 购物上购买商品的客户创建。然后,当商家接收、处理和配送订单时,订单会经历一系列状态变化。

概览

概括来讲,操作流如下所示。请注意,下图只是包含订单可能出现的状态的简化视图,图中的内容并不详尽:

  1. 订单创建:当客户通过 Shopping Actions 完成购买时,系统会创建一个订单。订单在 Google 的订单管理系统 (OMS) 中创建,状态为“处理中”。当订单状态为“处理中”时,客户只需点击 Google 的订单确认页面上的取消按钮,即可取消订单。在此之后,客户无法取消订单,但商家可以在配送前随时取消订单。

    在沙盒模式下,可以使用 createtestorder 人为创建订单。

  2. 检索订单(不在图表中):订单创建后,商家可以使用 list 检索此订单。

    虽然订单的状态为 inProgress,我们仍鼓励商家保留产品目录,但在订单状态为 pendingShipment 之前不要启动履单流程。

  3. 确认订单(可选):将订单的 acknowledged 字段的值设置为 true。虽然是可选操作,但我们仍建议商家在订单被提取到其 OMS 后,立即使用 API acknowledge 确认订单。这样,当通过 list 调用来请求新订单时,商家可以过滤尚未确认的订单,仅获取待提取的订单列表。

    除了检索订单详请(或在沙盒中使用 advancetestorder)外,对指定订单调用任何方法都会自动确认此订单。这可以在以下部分流程中实现:

    • 订单正在处理中:用第一条虚线 (3) 表示

      或者

    • 订单待配送时:用第二条虚线 (3) 表示

  4. 准备配送:订单创建后不久,有效的订单即转到 pendingShipment 状态。此时,资金由 Google 提供担保,订单已得到确认,等待履单。

    在沙盒模式下,订单不会在计时器计时结束后自动转到 pendingShipment。开发者可以使用 advancetestorder 对订单执行此操作。

  5. 设置商家订单 ID(可选)(不在图表中):虽然也是可选操作,但我们仍建议商家在其 OMS 中提供此类值后,使用 updatemerchantorderid 更新商家订单 ID。

    当商家在以后的调用中检索订单详情时,此订单 ID 将传回给商家,并且作为显示在商家和 Google 的 OMS 中的唯一密钥,在对帐时会用到。

  6. 配送订单:商品配送后,商家可以通过 shiplineitems 方法通知 Google。商家可以配送一个订单中的全部商品或者部分商品。我们也强烈建议商家传递运单(如果有)的跟踪 ID。请注意,配送商品会触发客户付款方式中的相应扣款。

  7. 将运单标记为已送达(可选):运单送达后,商家可以通过 updateshipment 通知 Google。对于大多数交易,这是最后一步(如果您有权访问运单送达数据)。

  8. 处理退货:如果商品发生退货,商家可以使用 returnrefundlineitem 调用。请注意,将商品声明为已退货不会退款给客户。

在上面的图表中未显示影响订单状态的以下操作:

发起退款
退款可以通过 refund 记录在 API 中。可以在配送之前或之后发出退款,并且不会改变订单的状态。
取消商品
使用 cancellineitem 可以取消订单中的商品。取消后,对应的商品会订单中移除,相应的费用也会退还。
取消订单
使用 cancel 可以取消整个订单。这将导致全额退款。

商品和订单状态转换

以下图表解释了订单项和订单的有效转换。通常,订单的状态是从其订单项的状态派生而来,但了解这些对象所处的状态可能很有用。请将这些图表用作概念性理解的指南。

商品状态转换

订单状态转换