注意:
1. 需要在阿里开放平台(https://open.taobao.com/),注册appKey,应用标签选择“飞猪-新业务”;
2. 需要使用appKey和appSecret访问;
3. 接口仅支持https协议,以post请求访问;
4. 以下通知接口API加签规则:https://fliggy.open.taobao.com/doc.htm?docId=119474&docType=1
5. SDK调用试例地址: https://open.taobao.com/docV3.htm?spm=a219a.7386653.0.0.7aa5669aaJixbr&docId=101618&docType=1
6. 接口后带有(通知),代表飞猪往外部调用系统商,需要系统商提供接口URL和访问账号及秘钥,且需要做幂等(除订单查询);
接口后带有(TOP),代表系统商可以通过TOP平台进行消息回调。
7. 线上回调地址:https://eco.taobao.com/router/rest。
预发回调地址:https://pre-gw.api.taobao.com/top/router/rest。(联调测试过程中使用预发回调地址)
通用入参
分页参数
名称 |
类型 |
备注 |
pageNo |
Integer |
当前页码,默认为1,范围[1,∞) |
pageSize |
Integer |
每页条数,默认为20,范围[1,100] |
通用返回
参数 |
类型 |
备注 |
code |
Integer |
通用错误码 |
message |
String |
描述信息 |
data |
返回数据集,有下面四种情况:
|
接口方法定义:com.alitrip.travel.pontus.qimen.service.TicketService#checkOrder
请求参数
字段 | 类型 | 必填 | 长度 | 说明 |
itemCode |
String |
是 |
20 |
商品编码,商品上填写的外部通知code |
travelDate |
String |
是 |
50 |
出行日期yyyy-MM-dd |
startTime |
String |
否 |
50 |
开始时间HH:MM |
endTime |
String |
否 |
50 |
结束时间HH:MM |
priceUnit |
Object |
否 |
价格信息 |
|
travellers |
List<TicketTravellerDTO> |
否 |
|
出行人,实名制景区必填 |
contact |
TicketTravellerDTO |
是 |
|
取票人 |
property |
Integer |
否 |
票性质 |
|
outSessionId |
String |
否 |
外部场次id |
价格信息
字段 | 类型 | 必填 | 长度 | 说明 |
price |
Long |
是 |
10 |
单价金额,分 |
totalPrice |
Long |
是 |
10 |
总价,分 |
quantity |
Integer |
是 |
5 |
订单件数 |
TicketTravellerDTO——出行人/取票人信息
字段 | 类型 | 必填 | 长度 | 说明 |
name |
String |
是 |
50 |
姓名 |
certificateType |
Integer |
否 |
5 |
证件类型 |
certificateId |
String |
否 |
50 |
证件号,取票人必填,实名制景区也必填 |
mobile |
String |
是 |
20 |
电话 |
|
String |
否 |
100 |
邮箱 |
证件类型: 0:身份证 1:护照 3:军官证 4:回乡证 5:台胞证 6:港澳通行证 7:国际海员 8:外国人永久居留(身份)证 9:其他证件 10:警官证 11:士兵证 12:台湾通行证 13:入台证 14:户口本 15:出生证明 16:驾驶证 17:港澳居民居住证 18台湾居民居住证
票性质:0:成人票 1:儿童票 2:亲子票(1大1小) 3:家庭票(2大1小) 4:大学生票 5:双人票 6:情侣票 7:老人票 8:家庭票(2大2小) 9:中学生票 10:学生票 11:中/高考考生特惠票 12:女士票 13:男士票 14:教师票 15:军人票 16:残疾票 17:三人票 18:团队票 19:标准票 20:全价票 21:半价票 22:参观票 23:优惠票 24:特定日票 25:婴幼儿票 26:陪同票 27:亲子票(1大2小) 28:青少年票 29:老人票(65岁及以上) 30:优待票(宗教人士) 31:老人票(60岁-64岁) 32:优待票
返回参数
字段 | 数据类型 | 是否必须 |
说明 |
code |
Integer |
是 |
返回码 0-success |
message |
String |
否 |
返回信息 |
localizedMsg |
String |
否 |
本地化返回信息 |
请求示例
{ "itemCode": "PFT20200716387974", "travelDate": "2020-12-12", "startTime": "08:00", "endTime": "12:00", "priceUnit": { "price": 2100, "totalPrice": 4200, "quantity": 2, }, "travellers": [ { "name": "张三", "certificateType": 1, "certificateId": "35058319990909123x", "email": "xxx@qq.com" } ], "contact": { "name": "张三", "mobile": 15011111111 } }
返回示例
{ "code": 0 }
2.2和2.1接口的区别:试单会按不同系统商的能力返回不同的结果。
接口方法定义:com.alitrip.travel.pontus.qimen.service.TicketService#preOrder
请求参数
字段 | 类型 | 必填 | 长度 | 说明 |
orderId |
Long |
是 |
|
飞猪订单id |
itemCode |
String |
是 |
20 |
商品编码,商品上填写的外部通知code |
travelDate |
String |
是 |
50 |
出行日期yyyy-MM-dd |
startTime |
String |
否 |
50 |
开始时间HH:MM |
endTime |
String |
否 |
50 |
结束时间HH:MM |
priceUnit |
Object |
否 |
价格信息 |
|
travellers |
List<TicketTravellerDTO> |
否 |
|
出行人,实名制景区必填 |
contact |
TicketTravellerDTO |
是 |
|
取票人 |
property |
Integer |
否 |
票性质 |
|
outSessionId |
String |
否 |
外部场次id |
价格信息
字段 | 类型 | 必填 | 长度 | 说明 |
price |
Long |
是 |
10 |
单价金额,分 |
totalPrice |
Long |
是 |
10 |
总价,分 |
quantity |
Integer |
是 |
5 |
订单件数 |
TicketTravellerDTO——出行人/取票人信息
字段 | 类型 | 必填 | 长度 | 说明 |
name |
String |
是 |
50 |
姓名 |
certificateType |
Integer |
否 |
5 |
证件类型 |
certificateId |
String |
否 |
50 |
证件号,取票人必填,实名制景区也必填 |
mobile |
String |
是 |
20 |
电话 |
|
String |
否 |
100 |
邮箱 |
证件类型: 0:身份证 1:护照 3:军官证 4:回乡证 5:台胞证 6:港澳通行证 7:国际海员 8:外国人永久居留(身份)证 9:其他证件 10:警官证 11:士兵证 12:台湾通行证 13:入台证 14:户口本 15:出生证明 16:驾驶证 17:港澳居民居住证 18台湾居民居住证
票性质:0:成人票 1:儿童票 2:亲子票(1大1小) 3:家庭票(2大1小) 4:大学生票 5:双人票 6:情侣票 7:老人票 8:家庭票(2大2小) 9:中学生票 10:学生票 11:中/高考考生特惠票 12:女士票 13:男士票 14:教师票 15:军人票 16:残疾票 17:三人票 18:团队票 19:标准票 20:全价票 21:半价票 22:参观票 23:优惠票 24:特定日票 25:婴幼儿票 26:陪同票 27:亲子票(1大2小) 28:青少年票 29:老人票(65岁及以上) 30:优待票(宗教人士) 31:老人票(60岁-64岁) 32:优待票
返回参数
字段 | 数据类型 | 是否必须 |
说明 |
code |
Integer |
是 |
返回码 0-success |
message |
String |
否 |
返回信息 |
localizedMsg |
String |
否 |
本地化返回信息 |
data |
Object |
是 |
返回对象 |
-->outOrderId |
String |
否 |
外部订单号outOrderId |
-->tokenCode |
String |
否 |
申请码 |
请求示例
{ "orderId": 1348110290636535365, "itemCode": "PFT20200716387974", "travelDate": "2020-12-12", "startTime": "08:00", "endTime": "12:00", "priceUnit": { "price": 2100, "totalPrice": 4200, "quantity": 2, }, "travellers": [ { "name": "张三", "certificateType": 1, "certificateId": "35058319990909123x", "email": "xxx@qq.com" } ], "contact": { "name": "张三", "mobile": 15011111111 } }
返回示例
{ "code": 0, "data": { "outOrderId": "2392342", "tokenCode": "2392342" } }
实现2.2,必须实现2.3来释放占用库存,没有实现2.2则该接口非必接
接口方法定义:com.alitrip.travel.pontus.qimen.service.TicketService#cancelOrder
请求参数
字段 | 类型 | 必填 | 长度 | 说明 |
orderId |
Long |
是 |
|
飞猪订单编号 |
outOrderId |
String |
否 |
50 |
外部订单号 |
tokenCode |
String |
否 |
50 |
申请码 |
返回参数
字段 | 数据类型 | 是否必须 |
说明 |
code |
Integer |
是 |
返回码 0-success |
message |
String |
否 |
返回信息 |
localizedMsg |
String |
否 |
本地化返回信息 |
请求示例
{"orderId": "PFT20200716387974","tokenCode": "xxxxx"}
返回示例
{"code": 0}
必接
接口方法定义:com.alitrip.travel.pontus.qimen.service.TicketService#createOrder
请求参数
字段 | 类型 | 必填 | 长度 | 说明 |
orderId |
Long |
是 |
|
飞猪订单编号 |
itemCode |
String |
是 |
20 |
商品编码,商品上填写的外部通知code |
travelDate |
String |
是 |
50 |
出行日期yyyy-MM-dd |
startTime |
String |
否 |
50 |
开始时间HH:MM |
endTime |
String |
否 |
50 |
结束时间HH:MM |
priceUnit |
Object |
否 |
价格信息 |
|
travellers |
List <TicketTravellerDTO> |
否 |
|
出行人,实名制景区必填 |
contact |
TicketTravellerDTO |
是 |
|
取票人 |
outOrderId |
String |
否 |
50 |
外部订单id |
tokenCode |
String |
否 |
50 |
申请码 |
property |
Integer |
否 |
票性质 |
|
outSessionId |
String |
否 |
外部场次id |
价格信息
字段 | 类型 | 必填 | 长度 | 说明 |
price |
Long |
是 |
10 |
单价金额,分 |
totalPrice |
Long |
是 |
10 |
总价,分 |
quantity |
Integer |
是 |
5 |
订单件数 |
TicketTravellerDTO——出行人/取票人信息
字段 | 类型 | 必填 | 长度 | 说明 |
name |
String |
是 |
50 |
姓名 |
certificateType |
Integer |
否 |
10 |
证件类型,实名制景区也必填 |
certificateId |
String |
否 |
20 |
证件号,取票人必填,实名制景区也必填 |
mobile |
String |
是 |
20 |
电话 |
|
String |
否 |
100 |
邮箱 |
返回参数
字段 | 类型 | 必须 |
说明 |
code |
Integer |
是 |
返回码 0-success |
message |
String |
否 |
返回信息 |
localizedMsg |
String |
否 |
本地化返回信息 |
data |
Object |
是 |
返回对象 |
-->outOrderId |
String |
是 |
资源方订单id |
-->tokenCode |
String |
否 |
token码,用来下单 |
-->sendCodeType |
Integer |
否 |
发码类型: 1:同步发码(注:实现同步发码,依然需要接发码回调接口的) 2:异步发码 注:可不传,飞猪会通过是否有传凭证信息判断是同步还是异步 |
-->voucherInfos | List<object> | 否 | 凭证信息列表 |
凭证信息:
字段 | 类型 | 必填 | 说明 |
type | Integer | 是 | 凭证类型: 1:1码1刷(3张成人票3个码) 2:1码多刷(3张成人票1个码) |
ticketAvailableTimes | Integer | 是 | 每张票可使用次数 |
confirmCode | String | 是 | 确认码(用户核销的凭证,一般为数字或字母组合) |
url | String | 否 | 凭证URL(二维码图片url) |
supportCode | String | 否 | 辅助码(一般为数字或字母组合) |
票性质:0:成人票 1:儿童票 2:亲子票(1大1小) 3:家庭票(2大1小) 4:大学生票 5:双人票 6:情侣票 7:老人票 8:家庭票(2大2小) 9:中学生票 10:学生票 11:中/高考考生特惠票 12:女士票 13:男士票 14:教师票 15:军人票 16:残疾票 17:三人票 18:团队票 19:标准票 20:全价票 21:半价票 22:参观票 23:优惠票 24:特定日票 25:婴幼儿票 26:陪同票 27:亲子票(1大2小) 28:青少年票 29:老人票(65岁及以上) 30:优待票(宗教人士) 31:老人票(60岁-64岁) 32:优待票
请求示例
{ "orderId": 1348110290636535365, "itemCode": "PFT20200716387974", "travelDate": "2020-12-12", "startTime": "08:00", "endTime": "12:00", "priceUnit": { "price": 2100, "totalPrice": 4200, "quantity": 2, }, "travellers": [ { "name": "张三", "certificateType": 1, "certificateId": "35058319990909123x", "email": "xxx@qq.com" } ], "contact": { "name": "张三", "mobile": 15011111111 } }
返回示例
{ "code": 0, "data": { "outOrderId": "123456", "tokenCode": "2392342" } }
必接,推荐同步发码,依赖上游的系统商可以异步发码
API名称: alitrip.travel.ticket.order.create
接口文档:https://open.taobao.com/api.htm?docId=53357&docType=2
注意:
必接
API名称: taobao.travel.ticket.order.verify
接口文档:https://open.taobao.com/api.htm?docId=50607&docType=2
核销回调接口,used_quantity字段的值,要根据write_off_type的值进行处理。
注:码平台不支持部分退
方试一:退款接口
方式二:退款接口 + 退款回调接口
必接
接口方法定义:com.alitrip.travel.pontus.qimen.service.TicketService#refund
请求参数
字段 | 类型 | 必填 | 长度(字节) | 说明 |
orderId |
Long | 是 |
|
飞猪订单编号 |
outOrderId | String |
是 |
50 |
第三方订单编号 |
返回参数
字段 |
类型 |
必填 |
说明 |
code |
Integer |
是 |
返回码 0-success |
message |
String |
否 |
返回信息, |
localizedMsg |
String |
否 |
本地化返回信息 |
data |
Object |
是 |
返回对象 |
-->orderId |
Long |
是 |
飞猪订单号 |
-->refundStatus |
Integer |
是 |
1. 已退款(相当于退款回调的同意退款) 2. 已驳回(退款回调的拒绝退款)3. 审核中(需要审核,会回调),其中1和2是不会回调,3会回调 |
-->refundFailureReason |
String |
否 |
2退票失败,需要填写失败原因 |
请求示例
{ "orderId":12345678901, "outOrderId":23456789012 }
返回示例
返回成功: { "code": 0, "message": "已部分核销,无法退票", "localizedMsg": "已部分核销,无法退票", "data": { "orderId":12345678901, "refundStatus":2 "refundFailureReason":"重复购买" } }
返回失败: { "code": 28402, "localizedMsg": "无权访问该数据", "message": "no access to the data" }
API名称: taobao.travel.ticket.order.refund
接口文档:https://open.taobao.com/api.htm?docId=50646&docType=2
必接,用来同步数据状态
接口方法定义:com.alitrip.travel.pontus.qimen.service.TicketService#searchOrder
订单查询接口,返回完整的订单信息,包括退款状态(如有申请退款)和凭证二维码信息(图片或图片url)。
请求参数
字段 | 类型 | 必填 | 长度(字节) | 说明 |
orderId |
Long |
是 |
|
飞猪订单id |
outOrderId |
String |
否 |
50 |
三方订单编号,试单失败,查询不会有外部订单号 |
返回参数
字段 | 类型 | 必填 |
说明 |
code |
Integer |
是 |
返回码 0-success |
message |
String |
否 |
返回信息 |
localizedMsg |
String |
否 |
本地化返回信息 |
data |
Object |
是 |
返回对象 |
-->orderId |
Long |
是 |
飞猪订单编号 |
-->outOrderId |
String |
是 |
第三方订单编号 |
-->confirmCode |
String |
否 |
确认码(用户核销的凭证,一般为数字或字母组合)。已经迁移到voucherInfos 中 |
-->outOrderStatus |
Integer |
是 |
订单状态(1正常/2取消) |
-->outOrderPayStatus |
Integer |
是 |
支付状态 (1已支付/2未支付/3部分支付) |
-->refundStatus |
Integer |
否 |
1. 已退款(相当于退款回调的同意退款) 2. 已驳回(退款回调的拒绝退款) 3. 审核中(需要审核,会回调),其中1和2是不会回调,3会回调。 未退款则返回null |
-->refundFailureReason |
String |
否 |
refundStatus取值1、2时代表退票失败,需要填写失败原因。 否则返回null |
-->voucherInfos |
List<object> |
是 |
凭证信息列表 |
凭证信息
字段 | 类型 | 必填 |
说明 |
type |
Integer |
是 |
凭证类型: 1:1码1刷(3张成人票3个码) 2:1码多刷(3张成人票1个码) |
sendStatus |
Integer |
是 |
凭证发送状态(1已发送/0未发送) |
useStatus |
Integer |
是 |
凭证使用状态(0未使用/1已经使用/2部分使用) |
ticketAvailableTimes |
Integer |
是 |
每张票可使用次数
|
ticketUsageNums |
Integer |
是 |
票已使用数量 |
confirmCode |
String |
是 |
确认码(用户核销的凭证,一般为数字或字母组合) |
url |
String |
否 |
凭证URL(二维码图片url) |
supportCode |
String |
否 |
辅助码(一般为数字或字母组合) |
请求示例
{ "orderId":12345678901, "outOrderId":"2345678901" }
返回示例
返回成功: { "code": 0, "message": "", "localizedMsg": "", "data": { "orderId": false, "outOrderId": "111", "outOrderStatus": 1, "outOrderPayStatus": 1, "voucherInfos": [{ "type": 1, "sendStatus": 1, "useStatus": 1, "ticketAvailableTimes": 2, "ticketUsageNums": 1, "confirmCode": "123456", "img": [01010101001], "url": "//image", "supportCode": "123445" }] } }
返回失败: { "code": 28402, "localizedMsg": "无权访问该数据", "message": "no access to the data" }
接口方法定义:com.alitrip.travel.pontus.qimen.service.TicketService#heartbeat
请求参数-无
返回参数
字段 |
数据类型 |
说明 |
code |
Integer |
返回码 0-success为正常,其他情况都为异常 |
message |
String |
返回信息 |
localizedMsg |
String |
本地化返回信息 |
data |
Object |
返回对象 |
返回示例
{ "code": 0, "message": "" }
请求参数
字段 | 类型 | 必填 | 长度(字节) | 说明 |
accessKey |
String |
是 |
200 |
商家账号 |
accessSecret | String |
是 |
200 |
商家秘钥 |
fliggyAccessSecret |
String |
否 |
200 |
飞猪秘钥 |
返回参数
字段 |
类型 |
必填 |
说明 |
code |
Integer |
是 |
返回码 0-success |
message |
String |
否 |
返回信息, |
localizedMsg |
String |
否 |
本地化返回信息 |
请求示例
{ "accessKey":"sdsd", "accessSecret":"ddsfsd", "fliggyAccessSecret":"xxxx", }
返回示例
返回成功: { "code": 0 }
返回失败: { "code": 30001, "localizedMsg": "商家账号秘钥校验失败", "message": "no access" }
API名称:taobao.alitrip.travel.baseinfo.scenics.get
接口文档:https://fliggy.open.taobao.com/api.htm?docId=25781&docType=2
景点绑定用于商家管理(标准景点&商家景点绑定)
API名称:alitrip.ticket.scenic.bind
接口文档:https://fliggy.open.taobao.com/api.htm?docId=27946&docType=2
/**
* 成功返回
*/
SUCCESS(Boolean.TRUE, "0", "success", "成功",ErrorCodeTypeEnum.SUCCESS),
/**
* 系统级错误
*/
SERVICE_ERROR(Boolean.FALSE, "500", "System exception, please contact the administrator", "系统异常,请联系管理员",ErrorCodeTypeEnum.SYE_ERROR),
SENTINEL_LIMITING(Boolean.FALSE,"509","The system is busy, triggering current limit, please try again later", "系统繁忙,触发限流,请稍后重试!",ErrorCodeTypeEnum.SYE_ERROR),
GET_ALLOTMENT_EXCEPTION(Boolean.FALSE,"15002","get_allotment_exception","获取库存异常",ErrorCodeTypeEnum.SYE_ERROR),
DSL_NOT_FOUNT_SYSTEM_CONFIGURE(Boolean.FALSE, "15005", "dsl_not_fount_system_configure", "DSL未找到系统商配置信息或能力信息",ErrorCodeTypeEnum.SYE_ERROR),
HSF_TIMEOUT_EXCEPTION(Boolean.FALSE, "15007", "hsf_timeout_exception", "HSF超时请重试!",ErrorCodeTypeEnum.SYE_ERROR),
PARAMETER_CHECK_EXCEPTION(Boolean.FALSE, "20001", "parameter check exception", "参数校验异常",ErrorCodeTypeEnum.SYE_ERROR),
SUPPLIER_NOT_EXISTENT(Boolean.FALSE, "20002", "supplier not existent", "系统商不存在或不可用",ErrorCodeTypeEnum.SYE_ERROR),
SUPPLIER_CONFIG_SEARCH_EXCEPTION(Boolean.FALSE, "20004", "supplier config search exception", "获取系统商配置信息异常",ErrorCodeTypeEnum.SYE_ERROR),
SUPPLIER_ABILITY_NOT_EXISTENT(Boolean.FALSE, "20005", "supplier ability not existent", "系统商能力不存在或当前账号已经失效",ErrorCodeTypeEnum.SYE_ERROR),
SUPPLIER_DATA_NOT_EXISTENT(Boolean.FALSE, "20006", "supplier response data not existent", "系统商响应信息有误或为空",ErrorCodeTypeEnum.SYE_ERROR),
SELLER_NOT_EXIST(Boolean.FALSE,"20007","seller not exist","卖家账号未配置或未同步",ErrorCodeTypeEnum.SELLER_ERROR),
XML_BEAN_CONVERSION_EXCEPTION(Boolean.FALSE, "20008", "supplier response data not existent", "xml与bean转换异常",ErrorCodeTypeEnum.SYE_ERROR),
ENCRYPTION_EXCEPTION(Boolean.FALSE, "20009", "encryption error", "加密异常",ErrorCodeTypeEnum.SYE_ERROR),
CORDING_EXCHANGE_EXCEPTION(Boolean.FALSE,"20010","cording exchange exception","编码转换异常",ErrorCodeTypeEnum.SYE_ERROR),
TOKEN_EXPIRE(Boolean.FALSE,"20011","token expire","token已过期或已失效",ErrorCodeTypeEnum.SYE_ERROR),
CONFIRM_IMG_CONVERSION_EXCEPTION(Boolean.FALSE,"20012","confirm img exception","确认码转二维码转换异常",ErrorCodeTypeEnum.SYE_ERROR),
GENERATE_SIGNATURE_ERROR(Boolean.FALSE,"20015","generate signature error","生成签名异常",ErrorCodeTypeEnum.SYE_ERROR),
DATE_FORMAT_CONVERSION_ERROR(Boolean.FALSE,"20016","date_format_conversion_error","日期格式转换异常",ErrorCodeTypeEnum.SYE_ERROR),
RESPONSE_CONTENT_DECRYPT_EXCEPTION(Boolean.FALSE,"20017","response content decrypt exception","响应内容解密异常",ErrorCodeTypeEnum.SYE_ERROR),
DSL_GET_PARAM_ERROR(Boolean.FALSE,"20021","DSL get param error","DSL获取参数异常",ErrorCodeTypeEnum.SYE_ERROR),
DSL_CONFIG_ERROR(Boolean.FALSE,"20022","DSL config error","DSL参数配置错误",ErrorCodeTypeEnum.SYE_ERROR),
SUPPLIER_SERVICE_PARAM_EMPTY(Boolean.FALSE,"20023","supplier service param empty","自定义中间层未初始化SET",ErrorCodeTypeEnum.SYE_ERROR),
/**
* 直连前置参数校验或卖家维度错误 业务错误 例如断言抛出 或者 resultException抛出 需要通知交易 建议以40开头
* TODO 没有涵盖的业务提示自行添加
*/
SELLER_ACCOUNT_UNAUTHORIZED_OR_CONFIG_ERROR(Boolean.FALSE, "40001", "seller_account_unauthorized_or_config_error", "商家账号未授权或配置错误",ErrorCodeTypeEnum.SELLER_ERROR),
SUPPLIER_ACCOUNT_NOT_CONFIGURED(Boolean.FALSE, "40002", "Account_information_of_system_provider_not_configured", "未配置对应的系统商账户信息",ErrorCodeTypeEnum.SELLER_ERROR),
THE_KEY_AND_COOPERATION_ID_DO_NOT_EXIST_OR_THE_SPLICING_IS_ILLEGAL(Boolean.FALSE, "40003", "The_key_and_cooperation_Id_do_not_exist_or_the_splicing_is_illegal", "密钥和合作ID不存在或拼接不合法",ErrorCodeTypeEnum.BIZ_ERROR),
COMMODITY_PURCHASE_LIMIT(Boolean.FALSE, "40004", "commodity purchase limit", "商品限购",ErrorCodeTypeEnum.SELLER_ERROR),
ORDER_NUMBER_CANNOT_BE_EMPTY(Boolean.FALSE, "40006", "Order_number_cannot_be_empty", "订单件数不许为空",ErrorCodeTypeEnum.BIZ_ERROR),
EXTERNAL_ORDER_NUMBER_IS_EMPTY(Boolean.FALSE, "40007", "External_order_number_is_empty", "外部订单号不可为空",ErrorCodeTypeEnum.BIZ_ERROR),
THE_NATURE_OF_THE_TICKET_CANNOT_BE_EMPTY(Boolean.FALSE, "40009", "The_nature_of_the_ticket_cannot_be_empty", "票性质不许为空",ErrorCodeTypeEnum.BIZ_ERROR),
THE_START_AND_END_TIME_OF_THE_TICKET_IS_EMPTY(Boolean.FALSE, "40010", "The_start_and_end_time_of_the_ticket_is_empty", "场次票开始结束时间为空",ErrorCodeTypeEnum.BIZ_ERROR),
TICKET_ID_IS_EMPTY(Boolean.FALSE, "40011", "Ticket_ID_is_empty", "票品ID不可为空",ErrorCodeTypeEnum.BIZ_ERROR),
REAl_NAME_SYSTEM_IS_EMPTY(Boolean.FALSE, "40012", "real_name_system_is_empty", "实名制字段不能为空",ErrorCodeTypeEnum.BIZ_ERROR),
ITEMCODE_FORMAT_ERROR(Boolean.FALSE, "40014", "itemCode format error", "商品编码格式错误",ErrorCodeTypeEnum.SELLER_ERROR),
SCENIC_NOT_EXIST(Boolean.FALSE,"40018","scenic not exist","查询健康码获取景区信息失败",ErrorCodeTypeEnum.BIZ_ERROR),
SEARCH_HEALTH_CODE_FAIL(Boolean.FALSE,"40019","search health code fail","查询健康码失败",ErrorCodeTypeEnum.BIZ_ERROR),
SESSION_ID_IS_EMPTY(Boolean.FALSE,"40021","session id is empty","场次id不许为空",ErrorCodeTypeEnum.BIZ_ERROR),
ORDER_NUMBER_IS_EMPTY(Boolean.FALSE, "40022", "order_number_is_empty", "飞猪订单号不可为空",ErrorCodeTypeEnum.BIZ_ERROR),
SUPPLIER_SELLER_STATUS_FAILED(Boolean.FALSE,"40023","The merchant account status is invalid, please contact the operator","商家账号状态失效,请联系运营人员",ErrorCodeTypeEnum.BIZ_ERROR),
/**
* 日期区域
*/
START_DATE_OR_END_DATE_FORMAT_ERROR(Boolean.FALSE, "41001", "start_date_or_end_date_format_error", "开始日期或者结束日期格式有误",ErrorCodeTypeEnum.BIZ_ERROR),
/**
* 联系人出行人区域
*/
CONTACT_CERTIFICATE_ID_OR_TYPE_EMPTY(Boolean.FALSE, "42002", "contact_certificate_id_or_type_empty", "联系人证件号或者证件类型为空",ErrorCodeTypeEnum.SELLER_ERROR),
TRAVELER_CERTIFICATE_ID_OR_TYPE_EMPTY(Boolean.FALSE, "42003", "traveler_certificate_id_or_type_empty", "出行人证件号或者证件类型为空",ErrorCodeTypeEnum.SELLER_ERROR),
TRAVELER_INFORMATION_CANNOT_BE_EMPTY_UNDER_REAL_NAME_SYSTEM(Boolean.FALSE, "42004", "Traveler_information_cannot_be_empty_under_real_name_system", "实名制下出行人信息不许为空",ErrorCodeTypeEnum.SELLER_ERROR),
WRONG_NUMBER_OF_TRAVELERS(Boolean.FALSE, "42005", "wrong_number_of_travelers", "出行人数有误",ErrorCodeTypeEnum.BIZ_ERROR),
UNSUPPORTED_CERTIFICATE_TYPE_OR_EMPTY(Boolean.FALSE, "42006", "Unsupported_certificate_type_or_empty", "不支持的证件类型或为空",ErrorCodeTypeEnum.SELLER_ERROR),
TRAVELER_NOT_EXIST(Boolean.FALSE, "42007", "traveler_not_exist", "出行人信息不存在",ErrorCodeTypeEnum.BIZ_ERROR),
/**
* 价格库存区域
*/
PRICE_UNIT_IS_EMPTY(Boolean.FALSE, "43001", "price unit is empty", "价格信息为空",ErrorCodeTypeEnum.SELLER_ERROR),
PRODUCT_SEARCH_EXCEPTION(Boolean.FALSE, "43002", "The product inventory or price queried by the system vendor does not exist", "系统商查询产品库存或价格不存在",ErrorCodeTypeEnum.BIZ_ERROR),
ERROR_IN_PRICE_VERIFICATION(Boolean.FALSE, "43003", "Error_in_price_verification", "价格校验有误",ErrorCodeTypeEnum.BIZ_ERROR),
/**
* 系统商返回信息有误 业务通知 一般情况为相应数据有误或为空 需要联系系统商解决 建议50开头
* TODO 正向链路
*
*/
SUPPLIER_RESPONSE_NOT_EXISTENT(Boolean.FALSE,"50001","supplier response data not existent","系统商响应数据不存在",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SUPPLIER_RESPONSE_TYPE_ERROR(Boolean.FALSE,"50002","supplier response type error","系统商响应数据类型有误",ErrorCodeTypeEnum.SUPPLIER_ERROR),
GET_TOKEN_RESOLUTION_EXCEPTION(Boolean.FALSE,"50003","Get_token_resolution_exception","获取token解析异常",ErrorCodeTypeEnum.SUPPLIER_ERROR),
ABNORMAL_ORDER_STATUS_RETURNED(Boolean.FALSE,"50005","Abnormal_order_status_returned","系统商返回订单状态不存在",ErrorCodeTypeEnum.SUPPLIER_ERROR),
TIME_FORMAT_CONVERSION_FAILED(Boolean.FALSE,"50007","Time_format_conversion_failed","时间格式转换失败",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SYSTEM_VENDOR_RESPONSE_DATA_JSON_TO_BEAN_EXCEPTION(Boolean.FALSE,"50008","System_vendor_response_data_JSON_to_bean_exception","系统商响应数据json to bean异常",ErrorCodeTypeEnum.SUPPLIER_ERROR),
OUT_SESSION_ID_IS_EMPTY(Boolean.FALSE, "50009", "out_session_id_is_empty", "系统商响应外部场次id为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
OUT_ORDER_ID_IS_EMPTY(Boolean.FALSE, "50010", "out_order_id_is_empty", "系统商响应外部订单id为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SYSTEM_QUOTIENT_STATUS_HTTP_RESPONSE_SUCCESS(Boolean.FALSE,"50011","System_quotient_status_HTTP_response_not_success","http状态响应非成功",ErrorCodeTypeEnum.SUPPLIER_ERROR),
RESPONSE_ORDER_STATUS_ERROR(Boolean.FALSE, "50012", "response order status error", "系统商响应外部订单状态有误",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SHENDA_SYSTEM_EXCEPTION(Boolean.FALSE,"50013","shenda system exception","深大系统异常{}",ErrorCodeTypeEnum.SUPPLIER_ERROR),
TICKET_ID_EMPTY(Boolean.FALSE,"50014","ticket_id_empty","票id为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
RESPONSE_CERTIFICATE_EMPTY(Boolean.FALSE,"50015","response certificate empty","系统商响应凭证信息为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
MERCHANT_ACCOUNT_TO_DISABLE(Boolean.FALSE,"50016","merchant_account_to_disable","商家账号以停用请联系商家进行处理",ErrorCodeTypeEnum.SELLER_ERROR),
HTTP_CLIENT_RESPONSE_ERROR(Boolean.FALSE,"50021","http_client_response_error","httpClient响应状态有误",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SYSTEM_PROVIDER_REQUEST_TIMEOUT(Boolean.FALSE, "50022", "System_provider_request_timeout", "系统商请求超时!",ErrorCodeTypeEnum.SYE_ERROR),
SYSTEM_PROVIDER_REQUESTS_IO_EXCEPTION(Boolean.FALSE, "50023", "System_provider_requests_IO_exception", "系统商请求IO异常!",ErrorCodeTypeEnum.SYE_ERROR),
SYSTEM_PROVIDER_REQUESTS_RESPONSE_EXCEPTION(Boolean.FALSE, "50024", "System_provider_requests_IO_exception", "系统商请求响应异常!",ErrorCodeTypeEnum.SYE_ERROR),
QUERY_OUT_ORDER_INFORMATION_EXCEPTION(Boolean.FALSE, "50025", "query outOrder information exception", "外部订单查询不存在",ErrorCodeTypeEnum.SYE_ERROR),
ORDER_CREATE_FAIL(Boolean.FALSE, "50026", "order create fail in supplier", "系统商侧订单创建失败",ErrorCodeTypeEnum.SYE_ERROR),
/**
* 系统商返回信息类型的 正常业务返回 不需要做任何特殊操作 建议60开头
*/
PLEASE_DO_NOT_REPEAT_THE_APPOINTMENT(Boolean.FALSE, "60001", "please do not repeat the appointment", "已有预约记录,请勿重复预约",ErrorCodeTypeEnum.NORMAL_ERROR),
ORDER_IS_PROCESSING(Boolean.FALSE, "60002", "order is processing", "订单正在处理中,请稍后重试",ErrorCodeTypeEnum.NORMAL_ERROR),
NO_REFUNDS_ARE_ALLOWED_FOR_UNPAID_OR_USED_ORDERS(Boolean.FALSE, "60003", "no_refunds_are_allowed_for_unpaid_or_used_orders", "订单未支付或者已使用订单不允许退款",ErrorCodeTypeEnum.BIZ_ERROR),
INCOMPATIBLE_RESTRICTION_RULES(Boolean.FALSE,"60019","incompatible restriction rules","订单不符合商品限购规则",ErrorCodeTypeEnum.SELLER_ERROR),
CERTIFICATETYPE_OUT_RESTRICTION(Boolean.FALSE,"60020","certificateType out restriction","证件不符合限购规则",ErrorCodeTypeEnum.SELLER_ERROR),
CERTIFICATETYPE_REPEAT(Boolean.FALSE,"60021","certificateType repeat","证件号重复",ErrorCodeTypeEnum.BIZ_ERROR),
HEALTH_CODE_VERIFICATION_FAILED(Boolean.FALSE,"60043","health code verification failed","健康码校验未通过",ErrorCodeTypeEnum.SYE_ERROR),
ORDER_ALREADY_CREATE(Boolean.FALSE,"61001","order already create","在系统商侧订单已经预约过",ErrorCodeTypeEnum.SYE_ERROR),
/**
* 业务异常 需特殊处理
*/
PRODUCT_INFORMATION_EXCEPTION(Boolean.FALSE, "65001", "product information exception", "产品信息异常",ErrorCodeTypeEnum.SELLER_ERROR),
QUERY_ORDER_INFORMATION_EXCEPTION(Boolean.FALSE, "65002", "query order information exception", "直连订单查询不存在",ErrorCodeTypeEnum.SYE_ERROR),
OUT_OF_STOCK_EXCEPTION(Boolean.FALSE, "65003", "The inventory of this product is insufficient on that day, please select another date.", "该产品当日库存不足,请选择其它日期。",ErrorCodeTypeEnum.SELLER_ERROR),
INSUFFICIENT_ACCOUNT_DEPOSIT_EXCEPTION(Boolean.FALSE, "65004", "The account balance of the merchant is insufficient, please choose other goods to buy!", "商家账号余额不足,请选择其它商品购买!",ErrorCodeTypeEnum.SELLER_ERROR),
ITEMCODE_NOT_FOUND(Boolean.FALSE, "65005", "Product code does not exist or has been taken off the shelf or not authorized", "商品编码不存在或已下架或未授权",ErrorCodeTypeEnum.SELLER_ERROR),
THE_ORDER_HAS_BEEN_CANCELLED_AND_CANNOT_BE_PAID_PLEASE_TRY_AGAIN_LATER(Boolean.FALSE, "65006", "The order has been cancelled and cannot be paid. Please try again later", "订单已经取消,不能进行支付,请您稍后再试",ErrorCodeTypeEnum.SELLER_ERROR),
ORDER_DOES_NOT_EXIST_PLEASE_TRY_AGAIN_LATER(Boolean.FALSE, "65007", "Order does not exist, please try again later", "订单不存在,请稍后再试",ErrorCodeTypeEnum.SELLER_ERROR),
ERROR_OR_BLANK_IN_OBTAINING_VOUCHER_INFORMATION(Boolean.FALSE, "70001", "error_or_blank_in_obtaining_voucher_information", "获取凭证信息有误或为空",ErrorCodeTypeEnum.BIZ_ERROR),
/**
* 回调链路异常
*/
API_NOT_FOUND(Boolean.FALSE, "70002", "api not found", "该系统商没有此能力",ErrorCodeTypeEnum.SYE_ERROR),
SUPPLIER_CALLBACK_DATA_NOT_EXISTENT(Boolean.FALSE,"70003","supplier callback data not existent","系统商回调数据为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
THE_CALLBACK_DATA_IS_NOT_STANDARDIZED(Boolean.FALSE,"70004","The_callback_data_is_not_standardized","系统商回调通知数据不规范",ErrorCodeTypeEnum.SUPPLIER_ERROR),
NOTIFY_METHOD_NOT_EXIST(Boolean.FALSE, "70005", "notify_method_not_exist", "无对应的回调通知方法",ErrorCodeTypeEnum.SUPPLIER_ERROR),
NOTICE_EXTRACT_AK_EXCEPTION(Boolean.FALSE, "70006", "notice extract ak error", "系统商回调通知参数提取ak有误",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SUPPLIER_INVALID_CALLBACK_TYPE(Boolean.FALSE,"70007","supplier invalid callback type","系统商回调类型不合法",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SUPPLIER_URL_CONFIGURATION_ERROR(Boolean.FALSE,"70008","supplier invalid callback type","系统商回调url配置有误",ErrorCodeTypeEnum.SUPPLIER_ERROR),
METHOD_NOT_EXIST(Boolean.FALSE, "70009", "method_not_exist", "无对应的方法",ErrorCodeTypeEnum.SYE_ERROR),
/**
* 退款回调异常
*/
REFUND_NOTICE_PARAM_UNAPPROVENUM_EMPTY(Boolean.FALSE, "72001", "refund_notice_param_unapprovenum_empty", "系统商退款通知不同意退数量为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
REFUND_NOTICE_PARAM_APPROVENUM_EMPTY(Boolean.FALSE, "72002", "refund_notice_param_approvenum_empty", "系统商退款通知同意退数量为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
REFUND_NOTICE_PARAM_SUBORDERNOS_EMPTY(Boolean.FALSE, "72003", "refund_notice_param_subordernos_empty", "系统商退款通知子订单为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
REFUND_NOTICE_PARTIAL_REFUND_NOT_ALLOWED(Boolean.FALSE, "72004", "refund_notice_partial_refund_not_allowed", "系统商退款通知部分退不被允许",ErrorCodeTypeEnum.SUPPLIER_ERROR),
REFUND_NOTICE_PARAM_ORDERID_OR_OUTORDERID_EMPTY(Boolean.FALSE, "72005", "refund_notice_order_param_order_id_or_out_order_id_is_empty", "系统商退款通知参数订单或者外部订单id为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
REFUND_REJECTION_REASON_CANNOT_BE_EMPTY(Boolean.FALSE,"72006","refund_rejection_reason_cannot_be_empty","退款拒绝原因不许为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
NOTIFY_REFUND_EXCEPTION(Boolean.FALSE, "72007", "notify refund exception", "退款回调服务异常",ErrorCodeTypeEnum.SYE_ERROR),
/**
* 核销回调异常
*/
VERIFY_NOTICE_PARAM_ORDERID_OR_OUTORDERID_EMPTY(Boolean.FALSE, "74001", "verify_notice_param_order_id_or_out_order_id_is_empty", "系统商核销通知参数订单id或者外部订单id为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
VERIFY_NOTICE_PARAM_VERIFICATIONNUM_EMPTY(Boolean.FALSE, "74002", "verify_notice_param_verification_num_is_empty", "系统商核销通知参数核销数量为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
VERIFY_NOTICE_PARAM_VOUCHERINFO_IS_EMPTY(Boolean.FALSE,"74003","verify_notice_param_voucherinfo_is_empty","系统商核销通知凭证信息为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
VERIFY_NOTICE_CERTIFICATE_ID_EMPTY(Boolean.FALSE,"74004","verify notice param certificateId is empty","系统商核销通知参数证件号为空",ErrorCodeTypeEnum.SUPPLIER_ERROR),
VERIFY_NOTICE_CHECK_SIGN_ERROR(Boolean.FALSE, "74005", "verify notice check sign error", "系统商核销回调验签失败",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SUPPLIER_VERIFY_FAILURE(Boolean.FALSE,"74006","supplier verify failure","系统商核销失败-{}",ErrorCodeTypeEnum.SUPPLIER_ERROR),
VERIFY_MODIFY_ORDER_ERROR(Boolean.FALSE,"74007","verify modify order error","核销修改订单信息失败",ErrorCodeTypeEnum.SYE_ERROR),
NOTIFY_VERIFY_EXCEPTION(Boolean.FALSE, "74008", "parameter check exception", "订单核销异常",ErrorCodeTypeEnum.SYE_ERROR),
VERIFICATION_NOTIFY_TFC_EXCEPTION(Boolean.FALSE, "74009", "verification notify tfc exception", "核销回调履约服务异常",ErrorCodeTypeEnum.SYE_ERROR),
EXCEPTION_IN_WRITE_OFF_MESSAGE_OF_BARLEY_SDK_SUBSCRIPTION(Boolean.FALSE,"74010","Exception_in_write_off_message_of_barley_SDK_subscription","sdk订阅核销消息异常",ErrorCodeTypeEnum.SUPPLIER_ERROR),
SIGN_CHECK_FAILED(Boolean.FALSE, "74011", "sign check failed", "回调验签参数校验失败",ErrorCodeTypeEnum.SYE_ERROR),
/**
* 发码回调异常
*/
CALLBACK_CREATE_TFC_EXCEPTION(Boolean.FALSE, "76001", "callback create tfc exception", "发码回调履约服务异常",ErrorCodeTypeEnum.SYE_ERROR),
SEND_METAQ_EXCEPTION(Boolean.FALSE,"80001","send metaq exception","发送metaq消息异常",ErrorCodeTypeEnum.SYE_ERROR),
SEARCH_REDIS_EXCEPTION(Boolean.FALSE,"80002","search redis exception","未查询到异常信息",ErrorCodeTypeEnum.SYE_ERROR),
SEARCH_ORDER_EXCEPTION(Boolean.FALSE,"80003","search order exception","调用travelBC查询订单信息异常",ErrorCodeTypeEnum.SYE_ERROR),
/**
* 未知错误 兜底返回 99999
*/
UNKNOWN_ERROR(Boolean.FALSE,"99999","unknown error","未知错误",ErrorCodeTypeEnum.UNKNOWN_ERROR);