三个层级
顶层账户
合作伙伴账户。一个组织包含一个或多个商户,其团队成员可以管理所有这些商户。
业务 / 品牌
组织下的一个餐厅业务或品牌。一个商户包含一个或多个门店。其法人实体持有支付和账单设置。
单个餐厅
一家实体餐厅,是 Developer API 操作的单位,也是 Maple 定价和计费的单位。一个门店恰好属于一个商户。其 ID 形如
str_…,API 将其作为 location 资源公开。基数关系及其重要性
- 一个组织有多个商户;一个商户有多个门店。
- 一个门店恰好属于一个商户,一个商户至多属于一个组织。这些关系不会变动,门店无法改挂到另一个商户名下。
- 运营数据存放在门店层级。 订单、菜单、连接和 webhook 都按门店划分,而不是商户或组织。就您的集成而言,同一商户下的两个门店是相互独立的。
Developer API 公开的内容
Developer API 呈现的是门店。location 资源携带门店的 ID(str_…)、名称、状态、时区、电话和地址,不包含其上级商户或组织。当您列出门店、建立连接、接收订单或发布菜单时,始终是通过 str_… ID 对单个门店进行操作。
访问权限按门店授予。 商户会逐个把特定门店的访问权限授予您的应用。持有某一个门店的授权,并不会让您访问同一商户下的其他门店,每个门店都需要单独授权(并单独连接)。有关授权与连接,请参阅Maple 如何运作。
门店状态
门店的status 告诉您它是否开放接单:
请遵循该状态,不要期望从非
active 的门店收到订单,也不要向其分派工作。
连接生命周期
您对某个门店的访问会经历四个时刻,并由三个 webhook 事件标记:1
已开通(Provisioned)
商户把某个门店的访问权限授予您的应用。您会收到
store.provisioned,该门店出现在 GET /v1/locations 中。您可以读取它,但订单暂时不会路由给您。2
已连接(Connected)
您调用
POST /v1/locations/{id}/connection,成为该门店的订单接收方。连接的 status 变为 active,并触发 store.status.changed,其中 status: "connected"。订单现在会路由给您。3
已断开(Disconnected)
您(或 Maple)通过
DELETE 移除连接。触发 store.status.changed,其中 status: "disconnected",订单不再路由给您。授权仍然保留,因此您之后可以重新连接。4
已撤销开通(Deprovisioned)
商户撤销授权。您会收到
store.deprovisioned,并完全失去对该门店的访问权限。POST 会返回 409。要订阅这些事件,请参阅Webhooks。
您会看到的标识符
商户和组织的 ID 在内部存在,但不属于 Developer API 的范围,您通过门店来寻址一切。
有关合作伙伴如何在控制台中管理组织、商户和门店,请参阅Maple 的组织结构。