# 买菜订单商品金额及税率查询
# 1.概述
通过【买菜订单商品金额及税率查询】接口,客户平台可根据订单号或第三方收银台对接中的交易号查商品金额及税率信息。
说明:接口对接如下请知悉 1、在订单支付完成后才能获取到商品及税率信息,建议支付和退款完成5分钟后拉取最新信息 2、极个别商品信息会存在税率获取延迟,延迟时间为1个工作日(建议对接企业,有定时任务针对未获取到税率的订单进行补偿) 3、该接口适用于该订单给下游开票,商品信息和订单详情接口每个商品金额可能会存在差异,因该接口已经将所有优惠活动进行了拆分
# 2.接口基本信息
| 名称 | 描述 |
|---|---|
| 请求方式 | POST |
| 调用地址 | 测试环境:https://waimai-openapi.apigw.test.meituan.com/api/sqt/open/invoice/queryMaicaiDetail 正式环境:https://bep-openapi.meituan.com/api/sqt/open/invoice/queryMaicaiDetail |
| 调用方 | 客户平台 |
| 响应方 | 美团企业版 |
| 响应超时时间 | 5秒 |
| 调用限频 | 每分钟访问不超过100次,每天累计访问不超过100000次 |
# 2.1.请求体
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| accessKey | String | 是 | B3GFJIEHNEM1RLV-TK | 美团企业版分配给客户的接入秘钥 |
| content | String | 是 | UgxoCGPQIzoP | 请求体内容,将请求参数JSON序列化后进行加密的结果值, 参照:签名实例 |
# content加密前数据结构
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| ts | Long | 是 | 1617085650321 | 13位时间戳。若请求发起时间与平台接受请求时间相差大于10分钟,平台将直接拒绝本次请求 |
| entId | Long | 是 | 46574 | 企业ID |
| sqtBizOrderId | Long | 否 | 314442083816943618 | 美团企业版订单ID |
| tradeNo | Long | 否 | 314442083816943699 | 第三方收银台对接中的交易号,该字段和美团企业版订单ID不能同时为空 |
# 2.2.响应参数
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| traceId | String | 是 | 56a0af18ae30a168d4006c7c | 日志查询ID,用于排查问题 |
| status | Integer | 是 | 0 | 接口响应编码,编码枚举值和解决方案详见第四章错误码 |
| msg | String | 否 | 错误描述信息 | |
| data | String | 是 | UgxoCGPQIzoP | 响应数据,将响应参数JSON序列化后进行加密的结果值,解密秘钥使用secretKey参数 |
# data解密后数据结构
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| orderAmount | String | 是 | 53.2 | 订单金额,单位:元,精确到小数点后两位 |
| invoiceList | List<MaicaiInvoiceDetailInfo> | 是 | - | 预定商品开票信息列表 |
| refundInvoiceList | List<MaicaiInvoiceDetailInfo> | 否 | - | 退款商品开票信息列表,返回顺序与退款顺序无关,请不要依赖列表返回顺序,如需匹配请使用操作id |
MaicaiInvoiceDetailInfo字段说明
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| id | String | 是 | 1064470324 | 商品交易内部用于区分操作的id,与三方收银台的交易号等字段无关 |
| productInvoiceList | List<MaicaiInvoiceItemInfo> | 是 | - | 商品开票信息列表 |
MaicaiInvoiceItemInfo字段说明
| 名称 | 类型 | 是否必填 | 示例 | 说明 |
|---|---|---|---|---|
| skuId | String | 是 | 18060 | 商品skuId |
| spuId | String | 是 | 14833 | 商品品类spuId |
| itemId | String | 是 | 4521934718 | 商品Id |
| itemName | String | 是 | 生和堂秘制龟苓膏新款三连杯215g*3 | 商品名称 |
| itemCount | String | 是 | 1 | 商品数量 |
| itemAmount | String | 是 | 12.8 | 商品金额,单位:元,精确到小数点后两位 |
| discountAmount | String | 是 | 0.0 | 折扣金额,单位:元,精确到小数点后两位 |
| unit | String | 是 | 组 | 单位 |
| model | String | 是 | 215g*3 | 规格型号 |
| taxRate | String | 否 | 6% | 税率,免税时值为0%,值为null或空字符串时表示未维护,可联系美团企业版维护 |
| productionCode | String | 否 | 1030107010100000000 | 税务分类末级编码 |
# 3.示例
# 3.1.请求示例
# 3.1.1.请求示例
{
"accessKey": "B3GFJIEHNEM1RLV-TK",
"content": "U9U0o0iTEX5wPukgHiOSAAUt8Lo4V2U2fzBqmUS0mtCxflXWkFNFYaWDnjX0djMDRZ2xYvahITjTa4pW_wOKe1Dn12piTjlPMhaz_nRBZn0"
}
# 3.1.2.请求参数content解析
{
"ts": 1617085650321,
"entId": 617,
"sqtBizOrderId": "1620305827757821973",
"tradeNo": null
}
# 3.2.响应示例
# 3.2.1.响应结果
{
"traceId": "-3162804499525173184",
"status": 0,
"data": "qd6mNQR-JL5RIu8WOerdaVqtNMgdGjFEs-lSoCjVHs0USoUrXCXOEvd71hCWSHU04dz51CMt8A8_0eIyXn0wXK-n-gIGNb9N-vYDGYdEmFD603vq6xDCfPSagrFVw24pv6Ju-qiM_FU7YGIDXqOlqJBRd_eqkG1dt32_7UXHetUCkY1vlBJ1VE49DaMpXJZFD55LWXJf31lAdhgxjhgHh3cPY5JAyDf7slgGJBt31Zq95ZKFkP2DyEd8iDDS3YsJnh7qdwZeVU3zCKXGTTpE6fOuiwyDG-y46dLInve-Rxh85tFVEKRVg6yILICyw-WgQXwfg6yylAhL2VhnYOyN8xbvxo3wdrwe3h6iJfS2Ogi-zIFgA1G1aapMtJaSVA0q9SQzISIgiKj3PpFzTiY9H0zgBYqb4XLke1W5NdPQy_h3D2OSQMg3-7JYBiQbd9WaveWShZD9g8hHfIgw0t2LCZ4e6ncGXlVN8wilxk06ROnzrosMgxvsuOnSyJ73vkcYfw61wcJi4NyBrz6n13v6ZTwucGxXXEJIlQhYwdY3gSz1K3dOWN4cSwBo_lixX7jk2_0MwSJYInkE__KsejBRIIGjWXdSDhvCpZo2aqinhlzfyjqA7No69SmABd6eZUPjQ8O9lTgYq1_4TxMcYtgtuDhskRaRD0bJc71P_KgZJiwXu7tL7tOnz_SVVFUkL3fwnjnesxQTiK1eTNVoqdKlgPErl0ZlG2x-1lJb0qRoBpuCtN9WEtOn2wGQaDRPFMLxHc2NXHvAD9IqkH3xzlBN4dwLselY5GGIXt44887nMq49buW1uQ3XymJZvs-DxQQi4yxk1Y2X64v78zhE16kjX-vZHqNXnmZrhry_IyNPXKDiuhUI4X6ngj5-KzCgKwrmOKrv8FmTQzyrPb8SwiT3Is3YUUDgUM7vyFMYcfX95KU90cGgAHJ6ZvRy9uSBJUQYrqJLekWVBtX2KyHwgbuAlfRfRSabblfNcHeFxA_6Lm_D6EFMklZq2Bf1oitA5Dw30fnk8kR77SYgrPuvf1BCrdRNx3_lboGP2FYr7hriqly6vW3cRbCt8NiqwgNvu6b9o4YGtBf72lW636ngr6EpuQ"
}
# 3.2.2.响应参数data解析
{
"status": 0,
"message": "success",
"data": {
"orderAmount": "29.78",
"invoiceList": [
{
"id": "90305648718",
"productInvoiceList": [
{
"spuId": "47607",
"skuId": "56711",
"unit": "份",
"model": "500g ",
"itemId": "4521741539",
"itemName": "【水八仙】莲藕500g",
"itemCount": "1",
"itemAmount": "5.99",
"discountAmount": "1.0",
"taxRate": "0%",
"productionCode": "1010112110000000000"
},
{
"spuId": "56928",
"skuId": "66710",
"unit": "盒",
"model": "200g ",
"itemId": "4521741538",
"itemName": "手剥毛豆粒200g",
"itemCount": "1",
"itemAmount": "6.99",
"discountAmount": "2.39",
"taxRate": "0%",
"productionCode": "1010112100000000000"
},
{
"spuId": "82914",
"skuId": "103232",
"unit": "份",
"model": "150g ",
"itemId": "4521741541",
"itemName": "【嫩苗菜】菠菜苗150g",
"itemCount": "1",
"itemAmount": "2.99",
"discountAmount": "0.69",
"taxRate": "0%",
"productionCode": "1010112070000000000"
},
{
"spuId": "84842",
"skuId": "440237",
"unit": "条",
"model": "300g ",
"itemId": "4521741542",
"itemName": "鲜活白鲫鱼1条300-400g",
"itemCount": "1",
"itemAmount": "12.8",
"discountAmount": "2.9",
"taxRate": "9%",
"productionCode": "1010401000000000000"
},
{
"spuId": "484099",
"skuId": "508655",
"unit": "份",
"model": "350g 鲜香软糯",
"itemId": "4521741540",
"itemName": "【高山鲜】高山糯茄350g",
"itemCount": "1",
"itemAmount": "11.9",
"discountAmount": "3.91",
"taxRate": "0%",
"productionCode": "1010112090000000000"
}
]
}
],
"refundInvoiceList": [
{
"id": "282742596",
"productInvoiceList": [
{
"spuId": "82914",
"skuId": "103232",
"unit": "份",
"model": "150g ",
"itemId": "4521741541",
"itemName": "【嫩苗菜】菠菜苗150g",
"itemCount": "0",
"itemAmount": "0.09",
"discountAmount": "0.0",
"taxRate": "0%",
"productionCode": "1010112070000000000"
}
]
}
]
}
}
# 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.业务错误码
| 错误码 | 错误描述 | 解决方案 |
|---|---|---|
| 10210000 | 参数异常 | 请根据msg中内容排查传值情况,确认必填字段是否传值,如sqtBizOrderId和tradeNo不能同时为空 |
| 40210003 | 数据不存在 | 请检查sqtBizOrderId或tradeNo传值是否正确 |
# 5.代码实例
依赖SDK包地址:SDK下载地址
package com.meituan.sqt.demo.in.order;
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.order.InvoiceMaicaiQueryRequest;
import com.meituan.sqt.response.in.BaseApiResponse;
import com.meituan.sqt.response.in.order.InvoiceMaicaiQueryResult;
import java.util.Objects;
public class InviceMaicaiQueryDemo {
private static final String invokeUrl = "https://waimai-openapi.apigw.test.meituan.com/api/sqt/open/invoice/queryMaicaiDetail";
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. 构建请求对象
InvoiceMaicaiQueryRequest queryRequest = new InvoiceMaicaiQueryRequest();
queryRequest.setTs(System.currentTimeMillis());
queryRequest.setEntId(sqtClient.getEntId());
queryRequest.setSqtBizOrderId(1698679663775191105L);
// 2. API调用
// 注意:超时时间默认以请求对象中注解ApiMeta上设置的为准,也可以自定义传递对应的超时时间
BaseApiResponse<InvoiceMaicaiQueryResult> response = sqtClient.invokeApi(invokeUrl, queryRequest, null, null);
// 3. 响应结果为空处理
if (response == null) {
// 处理响应结果为空情况
// ...
}
// 4. 获取结果
if(Objects.equals(ResponseStatusEnum.SUCCESS.getCode(), response.getStatus())) {
// 4.1 请求成功,获取订单详情查询结果
InvoiceMaicaiQueryResult realData = response.getRealData();
// 4.2 处理查询成功后的业务逻辑
} else {
// 处理请求失败场景
handleRespFailResult(response);
}
}
private static void handleRespFailResult(BaseApiResponse<InvoiceMaicaiQueryResult> 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 | 2023-11-22 | 新增买菜订单商品金额及税率查询 |