# 查询成本中心接口

# 1.概述

成本中心查询接口,企业通过该接口,可以查询已经存在的成本中心。

# 2.接口基本信息

信息名称 信息描述
请求方式 POST
调用地址 测试环境:https://waimai-openapi.apigw.test.meituan.com/api/sqt/open/cost/query
正式环境:https://bep-openapi.meituan.com/api/sqt/open/cost/query
调用方 客户平台
响应方 美团企业版
响应超时时间 5s
调用限频 每分钟访问不超过100次,每天累计访问不超过100,000次

# 2.1 请求体

名称 类型 是否必填 示例 说明
accessKey String 是 B3GFJIEHNEM1RLV-TK 美团企业版分配给客户的接入秘钥
content String 是 UgxoCGPQIzoP 请求体内容,将请求参数JSON序列化后进行加密的结果值,参照:签名实例

# content 加密前数据结构

注:多个查询条件取相与

名称 类型 是否必填 示例 说明
ts Long 是 1617085650321 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求
entId Long 是 46574 企业ID
costNo String 否 123 成本中心编码
costName String 否 成本中心 成本中心名字
pageNo Integer 否 1 分页页码<=10
pageSize Integer 否 20 分页大小 <=100
parentCostNo String 否 parentCostNo 成本中心父级编码
statusList List<String> 是 ["ONLINE","PAUSE"] 成本中心状态(ONLINE:上线,PAUSE:暂停)

# 2.2 响应体

名称 类型 是否必填 示例 说明
traceId String 是 9042536864303509624 日志查询ID
status Integer 是 0 0为成功,其他错误见错误码
msg String 是 失败时的错误描述
data String 是 UgJn07uNgW7S7fJK0R0xVbaLxoCGPQIzoP-_K4Hmp4RduGszhm2mbUs2toZhCtXKP5JGXVTZ9kGts2Wx3IJQCd90ptMoJTDB0vu7mkedEr4KZCvZn77EZLssMC5SpXilmQ-5RXHzvMIT0ASH-IXepTP_O16U37QqCkEb5L1WLy4 响应数据,将响应参数JSON序列化后进行加密的结果值,解密秘钥使用secretKey参数,参照:签名实例

# data解密后数据结构

名称 类型 是否非空 示例 说明
totalCount Integer 是 100 成本中心总数
costItemList List<CostItemVO> 是 见CostItemVO字段说明 成本中心列表

CostItemVO字段说明

名称 类型 是否非空 示例 说明
costNo String 是 123 成本中心编码,唯一标识
costName String 是 成本中心 成本中心名字
customField1 String 否 自定义字段1 成本中心自定义字段1
customField2 String 否 自定义字段2 成本中心自定义字段2
customField3 String 否 自定义字段3 成本中心自定义字段3
customField4 String 否 自定义字段4 成本中心自定义字段4
customField5 String 否 自定义字段5 成本中心自定义字段5
creator String 是 创建者 创建者
createTime String 是 2020-06-09 11:11:11 创建时间
parentCostNo String 否 1 成本中心父级编码
costLevel Integer 否 1 成本中心层级,从1开始,每存在一个父层级+1
suitableType Integer 是 2 成本中心适用类型(1:全员可用;2:部分适用)
status String 是 ONLINE 成本中心状态(ONLINE:上线,PAUSE:暂停)

# 3.请求示例

# 3.1 请求示例

{
    "accessKey": "CC1NRDRJLC76-TK",
    "content": "xLui_V-tTTRuqDIp48uFsoCbwnemwtNaKut8miqTJutwdHrUHkzVzX0DTbhpLHBgobaOb1nm2WRBgTmFzwwuVjAHy0s6zu6p1Lw3_5ruURdHUmYhIib1Fyuc_8NjugGFo52oa-EGFk762yWtJ3PSJWg_FjNXcXIrrqAorKWJEYLEk7IYxswJHjXIbmRessLe"
}

# content 明文

{
  "ts":1703660390000,
  "entId": 101730,
  "costNo": "openapiCost2",
  "costName": "成本中心",
  "pageNo": 1,
  "pageSize": 20,
  "parentCostNo": "openapiCost1",
  "statusList": ["ONLINE"]
}

# 3.2 响应示例

{
  "traceId":"56a0af18ae30a168d4006c7c",
  "status":0,
  "msg":"成功",
  "data":"FcZPEYk0_C-G4eDuUNE54k3QRVrkWU6X95GeiJTvCB4R1bMYZThQeFMXoTG6swZUv4bapfuiGD8yZEb8x8ucvXL79eyekZ-amo9z-Mvngen3OZtuD5cl6oA97Me1XKQTQIx36TTdbFznSgc9E2hAE8xdbcFRFMwYgvpcUKZuBHMiaIhI0LzQzWTCz3ItYp-akU1M9qVT3qrYgsoWdX4wFkL0KrgOr9mofvEowwYvdil90Sw2PUSY9veFtrCTd07y4ehwhy26m3SuZZUR-pMRIuYNHVxifAnn2MmyWAhjbB5nBTj8l3z4MGpfMSZP7Z0o1I-tNlvP0teOXOeN2aAVtEY_Prmm6aiBJ8Llymc5Qa1fbK_E5vP5uVJUxM3xW-Z1YavkuZ-GINJAJrANGoNsvzJM7OWYGylXaym-qKoE89g2xCkKe8UJMLcNMqqxutY_yxbvR5dIA_WXBtqh4KZNiQ"
}

# data 明文

{
  "totalCount": 1,
  "costItemList": [{
    "costNo": "openapiCost2",
    "costName": "成本中心",
    "customField1": "额外字段1",
    "customField2": "额外字段2",
    "customField3": "额外字段3",
    "customField4": "额外字段4",
    "customField5": "额外字段5",
    "creator": "101730-api-V2",
    "createTime": "2024-01-01 12:00:00",
    "costLevel": 3,
    "parentCostNo": "openapiCost1",
    "suitableType": 2,
    "status": "ONLINE"
  }]
}

# 4.错误码

# 4.1.公共错误码

错误码 错误描述 解决方案
10010002 企业已停止合作,请联系客户经理进行确认 将接口调用的entId参数给到客户经理,由客户经理确认企业状态是否在合作中
10010003 content不合法 详细阅读content参数加密说明(签名实例),确认content加密方式和content解密前传参是否正确
10010004 ts缺失或ts时间已过期 确认ts是否传值并为13位时间戳,如果正确传值,则确认请求发起时间与美团企业版接受请求的时间差是否超过10分钟
10010005 entId不能为空 entId参数不可为空,如果未拿到entId参数,可以咨询客户经理获取
20010001 accessKey不合法 检查accessKey是否为客户经理给到的值,如果accessKey值正确,确认调用环境是否和accessKey一致,如使用测试环境的accessKey调用线上的接口
20010002 请求path不合法 检查接口调用地址是否正确,如是否有非法字符
20010003 鉴权失败,无接口访问权限 将接口调用地址给到客户经理,由客户经理检查接口权限是否开通并保存成功
20010004 越权访问,无法访问该企业数据,请检查entId的正确性 检查accessKey和entId两个参数的对应关系是否正确
30010001 访问频率过高 请确认接口访问频率,每个接口默认调用限频为每分钟不超过100次,超出调用频率会调用此错误
30010002 访问次数超过配额 请确认接口的累计访问次数,每个接口的默认累计调用量为10w次,超出限额则会报错

# 4.2.业务错误码

错误码 错误描述 解决方案
10300001 参数错误 请根据msg中内容排查传值情况,确认必填字段是否传值,字段长度是否正确
10300016 适用类型无效 检查suitableType是否合法
10300017 成本中心状态无效 检查statusList是否合法
40300001 未知错误,请联系美团侧研发 请提供响应结果中的traceId参数,联系客户经理进行排查

# 5.代码实例

依赖SDK包地址:SDK下载地址

package com.meituan.sqt.demo.in.cost;

import com.google.common.collect.Lists;
import com.meituan.sqt.client.SqtClient;
import com.meituan.sqt.constant.CommonConstants;
import com.meituan.sqt.enums.ResponseStatusEnum;
import com.meituan.sqt.exception.MtSqtException;
import com.meituan.sqt.request.in.cost.CostQueryRequest;
import com.meituan.sqt.response.in.BaseApiResponse;
import com.meituan.sqt.response.in.cost.CostQueryResult;
import com.meituan.sqt.utils.JsonUtil;

import java.util.Objects;

public class CostQueryDemo {
    private static final String invokeUrl = "https://waimai-openapi.apigw.test.meituan.com/api/sqt/open/cost/query";

    private static SqtClient sqtClient = null;

    static {
        // 初始化SqtClient,只需要初始化一次即可
        // entId,accessKey,secretKey需要根据不同环境动态的设置获取
        sqtClient = new SqtClient.Builder()
                .setEntId(CommonConstants.entId)
                .setAccessKey(CommonConstants.accessKey)
                .setSecretKey(CommonConstants.secretKey)
                .build();
    }

    public static void main(String[] args) throws MtSqtException {
        // 1. 构建请求对象
        CostQueryRequest costQueryRequest = new CostQueryRequest();
        costQueryRequest.setTs(System.currentTimeMillis());
        costQueryRequest.setEntId(sqtClient.getEntId());

        // 多个查询条件取相与
        costQueryRequest.setCostNo("openapiCost2");
        costQueryRequest.setCostName("成本中心");
        costQueryRequest.setSuitableType(2);
        costQueryRequest.setParentCostNo("cost");
        costQueryRequest.setStatusList(Lists.newArrayList("ONLINE", "PAUSE"));

        // 2. API调用
        // 注意:超时时间默认以请求对象中注解ApiMeta上设置的为准,也可以自定义传递对应的超时时间
        BaseApiResponse<CostQueryResult> response = sqtClient.invokeApi(invokeUrl, costQueryRequest, null, null);

        // 3. 响应结果为空处理
        if (response == null) {
            // 处理响应结果为空情况
            // ...

        }

        // 4. 获取请求结果
        if(Objects.equals(ResponseStatusEnum.SUCCESS.getCode(), response.getStatus())) {
            // 4.1 查询成本中心结果
            CostQueryResult result = response.getRealData();
            System.out.println(JsonUtil.object2Json(result));
            // 4.2 处理查询成功后的业务逻辑


        } else {
            // 处理请求失败场景
            handleRespFailResult(response);
        }
    }

    private static void handleRespFailResult(BaseApiResponse<CostQueryResult> response) {
        // 访问频率过高
        if (ResponseStatusEnum.HIGH_FREQUENCY_ACCESS.getCode().intValue() == response.getStatus()) {
            // 解决方案参照:https://h5.dianping.com/app/bep-docs/open-platform-doc/guide/rate_limiting.html
        }
        // 访问次数超过配额
        if (ResponseStatusEnum.EXCEED_ACCESS_NUMBER.getCode().intValue() == response.getStatus()) {
            // 解决方案参照:https://h5.dianping.com/app/bep-docs/open-platform-doc/guide/rate_limiting.html
        }
        // 其它失败场景,解决方案参考:https://h5.dianping.com/app/bep-docs/open-platform-doc/org/org_query.html#_4-%E9%94%99%E8%AF%AF%E7%A0%81
        System.out.println(response.getMsg());
    }
}

# 6.版本记录

版本号 版本日期 更新内容
V1.0 2024-01-08 初版
上次更新: 6/29/2026, 7:56:38 PM