# 用餐合规详情查询接口

# 1.概述

更新时间:2023-03-14 15:23:08
客户平台通过【用餐合规详情查询】接口,拉取用餐相关的支付信息、店铺信息、签到信息以及报备信息,用于客户内部合规校验。
注:店铺信息属于机密内容,如需获取,需在开通权限时,向客户经理申请获取权限。

# 2.接口基本信息

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

# 2.1.请求体

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

# content加密前数据结构

名称 类型 是否必填 示例 说明
ts Long 1617085650321 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求
entId Long 46574 企业ID
sqtBizOrderId Long 529375902136680 美团企业版业务订单ID

# 2.2.响应参数

名称 类型 是否必填 示例 说明
traceId String 56a0af18ae30a168d4006c7c 日志查询ID,用于排查问题
status Integer 0 接口响应编码,编码枚举值和解决方案详见第四章错误码
msg String 错误描述信息
data String UgxoCGPQIzoP 响应数据,将响应参数JSON序列化后进行加密的结果值,解密秘钥使用secretKey参数

# data解密后数据结构

类型 是否必填 示例 说明
Compliance Compliance 返回结果

Compliance字段说明

名称 类型 是否必填 示例 说明
isGreyShop Integer 0 是否是灰名单商家,1:是灰名单商家 ;0:不是灰名单商家
payInfo List<PayInfo> 支付信息
shopInfo ShopInfo 店铺信息
signInInfo SignInInfo 签到信息
reportInfo ReportInfo 报备信息

PayInfo字段说明

名称 类型 是否必填 示例 说明
cardNo String 8611 卡号后四位(银行卡支付才有值)
payMethod String 微信支付 支付方式

ShopInfo字段说明

名称 类型 是否必填 示例 说明
shopName String 肯德基 店铺名字
shopAddress String 望京东路9号 地址
shopTitle String 金拱门餐饮有限公司 店铺抬头
shopAvgPrice String 30.00 店铺均价,单位:元,精确到小数点后两位
shopPhone String 18136000000或010-88350000或者18136000000/010-88350000 店铺电话,当返回多个号码,中间用“/”分隔,座机格式xxx-xxxxxxxx,手机号码为大陆11位标准格式

SignInfo字段说明

名称 类型 是否必填 示例 说明
signInStatus Integer 1 签到状态 1签到 0没签到
signInTime String 2019-01-01 12:51:29 签到时间,格式yyyy-MM-dd HH:mm:ss
signInAddress String 白沙里小区(离餐厅736米) 签到地址

ReportInfo字段说明

名称 类型 是否必填 示例 说明
numOfConsumer Integer 2 消费人数,大于0的正整数
consumerNames String 张某某,王某某 消费人员姓名,此字段是手动输入框组件内容返回
sceneTypeDesc String 会议宴请 消费科目
reason List<Reason> 消费原因记录
externalApplyNo String xxx 外部申请单号
personAvgAmount String 300.00 消费人均金额,单位元,精确到小数点后两位
ticketPicUrls String http:xxx 用餐小票图片地址url,如果有多张图片,会使用英文,间隔
reportType Integer 1 报备类型, 1:线上报备;2:特许报备
reportStatus Integer 报备状态,0:无需稍后填写;1:需要稍后报备;2:已报备
editCount Integer 修改次数(仅稍后报备才会有)
changeLogList List<ChangeLog> 特许消费报备修改记录(历史报备单内容)
staffList List<StaffInfo> 内部参与人列表
guestList List<GuestInfo> 外部参与人列表
applyExceedInfo ApplyExceedInfo 申请单超额信息
customFieldList List<CustomFieldInfoCO> 自定义字段

Reason字段说明

名称 类型 是否必填 示例 说明
reasonTime String 2020-01-08 10:55:26 消费原因填写时间,格式yyyy-MM-dd HH:mm:ss
reasonContent String 会议宴请 备注原因(特许报备时指事由)
extraReason String 商家原因 其它原因(特许报备时指原因)

ChangeLog

名称 类型 是否必填 示例 说明
changeType Integer 1 修改类型 0:金额修改 1:人数修改
changeTime String 2020-01-08 10:55:26 修改时间,格式yyyy-MM-dd HH:mm:ss
beforeValue String 188 修改前记录值
afterValue String 288 修改后记录值
staffIdentifier String 383847 员工唯一标识

StaffInfo字段说明

名称 类型 是否必填 示例 说明
staffId Long 10001 美团企业版员工Id
staffName String 张三 员工姓名
staffIdentifier String 001 企业对该员工的唯一标识

GuestInfo字段说明

名称 类型 是否必填 示例 说明
guestName String 张三 外部人员姓名
guestFirstName String 外部人员名
guestLastName String 外部人员姓
guestCompany String 三快在线 外部人员公司或医院
guestOrg String 人事科 外部人员所属部门或科室
guestId String 552 企业外部人员唯一标识(美团企业版系统)
externalGuestId String GUEST01 企业外部人员唯一识别(第三方系统)

ApplyExceedInfo字段说明

名称 类型 是否必填 示例 说明
isExceed Integer 张三 是否超标,0:未超标; 1:超标
exceedAmount String 22.12 超标金额。单位:元,精确到分
exceedReason String 团建 超标原因

CustomFieldInfoCO字段说明

名称 类型 是否必填 示例 说明
label String 特殊用餐说明 xxx
value String xx 文本框输入示例:请客户用餐分
type Integer 1 文本

# 3.示例

# 3.1.请求示例

# 3.1.1.请求示例

{
  "accessKey":"B3KSWLDSKSKDMJ",
  "content":"UgxoCGPQIzoP"
}

# 3.1.2.请求参数content解析

{
  "ts": 1617085650321,
  "entId": 100746,
  "sqtBizOrderId": 529375902136680
}

# 3.2.响应示例

# 3.2.1.响应结果

{
    "traceId":"56a0af18ae30a168d4006c7c",
    "status":0,
    "data":"UgJn07uNgW7S7fJK0R0xVbaLxoCGPQIzoP"
}

# 3.2.2.响应参数data解析

{
  "isGreyShop": 0,
  "payInfo": [
    {
      "cardNo": null,
      "payMethod": "微信网页wap支付"
    }
  ],
  "shopInfo": {
    "shopName": "金园火锅家宴私房菜",
    "shopAddress": "公信路与东方街交界处",
    "shopTitle": "上海小小餐饮管理有限公司广富林路店",
    "shopAvgPrice": "207",
    "shopPhone": "13800000000"
  },
  "signInInfo": {
    "signInStatus": 1,
    "signInTime": "2023-03-08 14:37:45",
    "signInAddress": "白沙里小区(离餐厅736米)"
  },
  "reportInfo": {
    "numOfConsumer": 7,
    "consumerNames": "张三",
    "sceneTypeDesc": "加班餐",
    "reason": [
      {
        "reasonTime": "2023-03-08 14:39:30",
        "reasonContent": "会议用餐",
        "extraReason": "吃饭饭"
      }
    ],
    "externalApplyNo": "CSRTMAP22000857",
    "personAvgAmount": "214.00",
    "ticketPicUrls": "http://p0.meituan.net/shangqitong/137db072.jpeg",
    "reportType": 1,
    "reportStatus": 0,
    "editCount": 0,
    "changeLogList": [
      {
        "changeType": 0,
        "changeTime": "2023-03-13 15:42:10",
        "beforeValue": "3528.00",
        "afterValue": "3524.00",
        "staffIdentifier": "JZCN"
      }
    ],
    "staffList": [
      {
        "staffId": 4063604,
        "staffName": "李八",
        "staffIdentifier": "S002374"
      }
    ],
    "guestList": [
      {
        "guestId": "166159",
        "guestName": "杨六一",
        "guestFirstName": null,
        "guestLastName": null,
        "guestCompany": "汕头大学医学院第一附属医院",
        "guestOrg": "内分泌科",
        "externalGuestId": "SRE09933"
      },
      {
        "guestId": "586980",
        "guestName": "林五一",
        "guestFirstName": null,
        "guestLastName": null,
        "guestCompany": "汕头大学医学院第一附属医院",
        "guestOrg": "内分泌科",
        "externalGuestId": "SRE099112"
      },
      {
        "guestId": "164202",
        "guestName": "林一",
        "guestFirstName": null,
        "guestLastName": null,
        "guestCompany": "汕头大学医学院第一附属医院",
        "guestOrg": "内分泌科",
        "externalGuestId": null
      }
    ],
    "applyExceedInfo": {
      "isExceed": 1,
      "exceedAmount": "12.80",
      "exceedReason": "测试"
    },
    "customFieldList": [
      {
        "label": "自定义字段标题1",
        "value": "字段内容1",
        "type": 1
      },
      {
        "label": "自定义字段标题2",
        "value": "字段内容2",
        "type": 1
      }
    ]
  }
}

# 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.业务错误码

错误码 错误描述 解决方案
10130000 参数异常 请求参数校验异常,请根据msg中内容排查传值情况,如sqtBizOrderId是否传值
10130001 业务异常 请提供响应结果中的traceId参数和sqtBizOrderId参数,联系客户经理进行排查
10130002 系统异常 请提供响应结果中的traceId参数和sqtBizOrderId参数,联系客户经理进行排查

# 5.代码实例

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


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.compliance.ComplianeDetailRequest;
import com.meituan.sqt.response.in.BaseApiResponse;
import com.meituan.sqt.response.in.compliance.ComplianceDetailResultItem;

/**
 * @Description 用餐合规详情查询接口使用实例
 * @Author hubo11
 * @Date 2023/3/14 7:54 下午
 */
public class ComplianceDetailDemo {

    private static final String invokeUrl = "https://bep-openapi.meituan.com/api/sqt/open/supply/queryComplianceDetail";
    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 {
        // 构建请求对象
        ComplianeDetailRequest complianeDetailRequest = new ComplianeDetailRequest();
        complianeDetailRequest.setTs(System.currentTimeMillis());
        complianeDetailRequest.setEntId(sqtClient.getEntId());
        complianeDetailRequest.setSqtBizOrderId(1L);

        // API调用
        // 注意:超时时间默认以请求对象中注解ApiMeta上设置的为准,也可以自定义传递对应的超时时间
        BaseApiResponse<ComplianceDetailResultItem> response = sqtClient.invokeApi(invokeUrl, complianeDetailRequest, null, null);
        // 响应结果为空处理
        if (response == null) {
            // 处理响应结果为空情况
            // ...

        }
        // 获取结果
        if(ResponseStatusEnum.SUCCESS.getCode().intValue() == response.getStatus()) {
            // 成功
            ComplianceDetailResultItem resultItemList = response.getRealData();
            // 处理业务逻辑
            // ...
        } else {
            // 处理失败场景
            handleRespFailResult(response);
        }
    }

    private static void handleRespFailResult(BaseApiResponse<ComplianceDetailResultItem> 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
        }
        // 其它失败场景

    }
}

# 6.版本记录

版本号 版本日期 更新内容
v1.0 2022-11-05 用餐合规详情查询接口初稿
v1.1 2023-06-02 合规详情增加自定义字段
上次更新: 6/29/2026, 7:56:38 PM