getMerchants GraphQL 查询,从 Fluz 目录中检索当前可用商户及其优惠列表。这是发现可用商户及其优惠类型的主要方式。
你可以使用可选输入参数来优化结果:
name: 按特定名称筛选商户。paginate: 控制每页结果数量(limit)和起始位置(offset)。offerTypes: 使用布尔标志指定需要giftCardOffer、cardLinkedOffer或两者(例如{ giftCardOffer: true, cardLinkedOffer: false })。categoryId: 仅返回一个购物类别中的商户,例如 Dining 或 Travel。类别 id 源自getMerchantCategories。未知或未激活的类别将返回空列表。filterBy: 一个用于对每个商户内的优惠应用特定筛选条件的对象。如果某个商户在筛选后没有剩余的优惠,它将不会出现在最终结果中。
可用筛选条件:deliveryFormat: 按交付方式筛选礼品卡优惠。
允许值:URL、CODES、PIN_AS_CODE、PIN_WITH_URL。
📘 在不使用筛选条件的情况下检索整个商户目录可能会耗时。我们建议每天仅获取一次完整且未筛选的目录。若需更频繁的更新或特定查询,请使用name或offerTypes筛选器。
📘 分页注意事项: 分页的默认和最大 limit 为 20。结果不一定会返回与你设置的 limit 相同的数量。例如,你请求 limit 为 10,但响应可能只有 7 条结果。 当包含 offset 时,请记得在下一批的 offset 计算中加入 limit。如果未指定 limit,则需要按默认 limit 20 进行偏移(例如 offset+20)。
📘 获取完整商户目录: 如果你想获取所有可用商户,必须分页直到 API 返回空数组为止。 获取完整目录的步骤:
- 调用 getMerchants(offset = 0,limit = 20)。
- 将返回的商户追加到你的本地列表。
- 按你的 limit 增加 offset(offset += 20)。
- 重复请求。
- 仅当 API 返回空数组([])时停止。
基本查询结构
下面是一个使用变量的灵活查询结构。你可以调整offerTypes 变量以获取所需的特定优惠类型。此示例仅请求最常见的基础字段。
示例请求:
json
响应详情
getMerchants 查询返回的 Merchant 对象包含以下字段:
通用 Offer 字段(位于 offers 数组内):
这些字段在每个
Offer 对象中都存在,无论其类型如何。
按类别筛选
商户被分组到与 Fluz 目录相同的购物类别中,例如 Dining、Travel 和 Grocery。先调用一次getMerchantCategories 获取列表,然后将 categoryId 传给 getMerchants,以一次显示一个类别。
categoryId会与其他参数组合,因此你可以在同一次调用中按类别和name进行筛选。- 不是 UUID 的
categoryId会返回APPLICATIONS-0012(InvalidArgument),并附带消息categoryId must be a UUID. Category ids come from getMerchantCategories.。空字符串是个例外:它仅移除类别筛选——name、offerTypes、filterBy和分页仍然生效。 - 如果你缓存映射,请存储
categoryId而不是名称——id 稳定,类别名可能会被重命名。 - 沙盒中的类别分配是测试数据,与生产环境不匹配。
- 经过筛选的调用与未筛选调用适用相同的分页规则。
按优惠类型查看详情
优惠的具体细节取决于其type。你需要根据优惠类型请求并解析不同字段:
- 对于礼品卡优惠(
GIFT_CARD_OFFER、EXCLUSIVE_RATE_OFFER):- 关键字段包括
offerRates、stockInfo、hasStockInfo、denominationsType、allowedPaymentMethods。 - 详见子页面 礼品卡优惠 的说明与查询示例。
- 关键字段包括
- 对于卡链接优惠(
CARD_LINKED_OFFER):- 主要字段为
cloDetails,其中包含费率、有效期和条件。 - 详见子页面 卡链接优惠 的说明与查询示例。
- 主要字段为