(下行接口)第三方合作方调用此接口,创建外卖订单(该接口中的金额全部是分为单位)
HTTP请求方式:POST
HTTP请求头类型:Content-Type=application/json
URI: /open/v1/takeout/order/create
详情可查看【公共说明】中的公共参数模块
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
tpOrderId | String | 是 | 第三方订单号,门店下不能重复 |
needInvoice | Int | 否 | 是否需要发票, 1: 需要发票, 0:不需要发票,默认0 |
invoiceTitle | String | 否 | 发票抬头,需要发票时必传 |
invoicedAmount | String | 否 | 可开票金额,单位:分. 如果传入,则开票金额不能超过可开票金额 |
taxpayerId | String | 否 | 纳税人识别号,需要发票时必传 |
createTime | Long | 是 | 订单创建时间 |
status | Int | 否 | 订单状态, 已接受订单会直接触发云打印,1:待接单,2:已接单,默认1 |
remark | String | 否 | 订单备注,不支持emoji |
peopleCount | Int | 是 | 就餐人数 |
shop | Shop | 是 | 店铺信息 |
products | List<TakeoutProduct> | 是 | 商品信息 |
delivery | Delivery | 是 | 配送信息 |
payment | TakeoutPayment | 是 | 支付信息 |
customers | List<Customer> | 否 | 顾客信息 |
discountDetails | List<DiscountDetail> | 否 | 优惠明细 |
isPrint | Integer | 否 | 是否打印:1打印,0不打印,为空默认打印类型为9:打印消费清单 |
printTemplateTypes | Integer[] | 否 | 8:后厨单,9:消费清单,15:标签; 都通过printTemplateTypes参数传递进来(9:参数不传递默认打印); 传递了isPrint:1,printTemplateTypes不传递,认为不打印; printTemplateTypes传递非正常类型,不处理 |
thirdSerialNo | String | 否 | 第三方取餐号 |
Shop
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
shopIdenty | Long | 是 | 客如云门店ID |
tpShopId | String | 是 | 合作方商户id |
shopName | String | 是 | 合作方商户名称 |
TakeoutProduct
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
name | String | 是 | 商品名称 |
id | Long | 否 | 客如云商品ID,为空按名字+规格匹配,无法匹配则当网络菜品处理 |
parentUuid | String | 否 | 套餐的子菜或单菜加料的父级uuid(即开发者自定义的订单中菜品唯一标识),如果是套餐子菜或单菜加料才有此值,单菜此字段不传 |
uuid | String | 否 | 订单中菜品的唯一标识,开发者自定义。如果菜品有加料或子菜,才需要传入此值,单菜无加料此值不传 |
type | Integer | 是 | 菜品类型 : 菜品种类 0:单菜 1:套餐 2:加料。套餐子菜请填0 |
tpId | String | 是 | 合作方商品ID |
quantity | Int | 是 | 份数 |
unit | String | 否 | 菜品单位 |
price | Int | 是 | 商品单价,单位:分 |
packagePrice | Int | 是 | 餐盒单价,单位:分 |
packageQuantity | Int | 是 | 餐盒数量 |
totalFee | Int | 是 | 商品总额=(菜品单价 + 变价) * 商品数量,单位:分 |
properties | List<ProductProperty> | 否 | 商品规格属性 |
remark | String | 否 | 订单备注 |
ProductProperty
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
name | String | 是 | 菜品属性名称 |
id | Long | 否 | 菜品属性ID, 为空就匹配名字,名字也无法匹配则放到备注 |
type | Int | 是 | 属性类型1:做法 2:标签 3:备注 4:规格 |
reprice | Int | 是 | 变价, 单位:分,正数加价,负数减价,type为做法此字段必填 |
Delivery
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
expectTime | Long | 是 | 期望送达时间,自提预约取货,时间戳,精确到秒,为0则立即送餐 |
deliveryParty | Int | 是 | 配送方式,1:商家自配(商户自己配送或通过客如云接入的第三方配送平台),2:平台配送,3:自提 |
receiverName | String | 是 | 收货人姓名,不支持特殊表情 |
receiverPhone | String | 是 | 收货人电话 |
receiverGender | Int | 否 | 收货人性别,0:女,1:男,-1:未知,默认1 |
delivererName | String | 否 | 配送员 |
delivererPhone | String | 否 | 配送员电话 |
delivererAddress | String | 否 | 送货地址,商家自配送不能为空 |
coordinateType | Int | 否 | 经纬度类型,商家自配送不能为空,1:百度,2:高德 |
longitude | Double | 否 | 送餐地址经度(0~180),商家自配送不能为空 |
latitude | Double | 否 | 送餐地址维度(0~90),商家自配送不能为空 |
TakeoutPayment
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
memberId | Long | 否 | 会员customerId,对应登录会员与会员详情接口中的customerId(如果用会员支付,此字段必传) |
promotionId | String | 否 | 券id,只能支付方式是优惠券支付的时候,才填写 |
memberCardNumber | Int | 否 | 卡号 |
memberPassword | Int | 否 | 密码,需md5加密(如果要用会员余额支付,此字段必传) |
totalFee | Long | 是 | 订单总价,订单总价=商品总金额+餐盒费+配送费,单位:分 |
deliveryFee | Int | 是 | 配送费,单位:分 |
packageFee | Int | 是 | 餐盒费,餐盒费=餐盒数量 * 餐盒单价, 单位:分 |
discountFee | Int | 是 | 优惠总金额,优惠总金额=平台优惠总金额+商户优惠总金额,单位:分 |
platformDiscountFee | Int | 是 | 平台优惠总金额,单位:分 |
shopDiscountFee | Int | 是 | 传discountDetails时:商户优惠总金额=商家优惠+客如云优惠券总额,单位:分 不传discountDetails时: 商家优惠 |
shopFee | Int | 是 | 商户实收总价,订单来源方配送/平台配送商户实收=订单总价-商家承担优惠金额-服务费-配送费+补贴,商家自配送商户实收=订单总价-商家承担优惠金额-服务费+补贴,自提商户实收=订单总价-商家承担优惠金额-服务费+补贴,单位:分 注:若优惠金额>订单总价,该字段请传0 |
userFee | Int | 是 | 用户实付总价,用户实付=订单总价-优惠总金额,单位:分 注:若优惠金额>订单总价,该字段请传0 |
serviceFee | Int | 是 | 服务费(商户向平台支付的佣金等),单位:分 |
subsidies | Int | 是 | 平台补贴(第三方平台每单给与商家的补贴),单位:分 |
payType | Int | 是 | 支付方式 1:线下支付/货到付款 2:在线支付 3:会员卡余额 4:优惠券 |
Customer
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
id | Long | 否 | 会员customerId |
phoneNumber | String | 是 | 会员电话 |
name | String | 是 | 会员姓名,不支持表情符,请自行处理 |
gender | Int | 是 | 会员性别 |
DiscountDetail
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
discountType | Int | 是 | 优惠类型 1:客如云优惠券(目前仅支持代金券,并且优惠券金额必须要大于等于订单总价) 2:平台优惠 3:商家优惠 |
discountFee | Int | 是 | 优惠金额 |
promotionId | Long | 否 | 优惠活动或者优惠券id,如果优惠类型是优惠券必传 |
couponId | Long | 否 | 优惠券模板id, 如果优惠类型是优惠券必传 |
customerId | Long | 否 | 会员customerId, 如果优惠类型是优惠券必传,而且必须和DinnerOrderMember中至少一个id一致 |
description | String | 否 | 优惠描述 |
场景一:无加料无子菜的情况
{
"tpOrderId":"123123123131",
"needInvoice":1,
"invoiceTitle":"我要发票,这是抬头",
"createTime":1491906548372,
"peopleCount":1,
"remark":"呵呵",
"shop":{
"shopIdenty":247900001,
"tpShopId":"247900001",
"shopName":"南粉北面高攀路店面"
},
"products":[
{
"name":"土豆丝炒肉肉",
"id":298372,
"tpId":"24242",
"quantity":2,
"price":1,
"packagePrice":0,
"packageQuantity":2,
"totalFee":2,
"remark":"炒软一点"
}
],
"delivery":{
"expectTime":0,
"deliveryParty":1,
"receiverName":"12345678901",
"receiverPhone":"12345678901",
"receiverGender":1,
"delivererPhone":"13112222222",
"delivererAddress":"四川成都",
"coordinateType":1,
"longitude":88,
"latitude":110
},
"payment":{
"deliveryFee":0,
"packageFee":0,
"discountFee":0,
"platformDiscountFee":0,
"shopFee":2,
"userFee":2,
"serviceFee":0,
"subsidies":0,
"totalFee":2,
"payType":2
},
"isPrint": 1,
"printTemplateTypes":[9]
}
场景二:有加料的情况(如:点两份相同的奶茶,加料不同,那么两份奶茶的uuid需定义成不相同的,加料的商品中parentUuid分别填写需要加的奶茶的uuid)
{
"tpOrderId":"123123123131",
"needInvoice":1,
"invoiceTitle":"我要发票,这是抬头",
"createTime":1491906548372,
"peopleCount":1,
"remark":"呵呵",
"shop":{
"shopIdenty":247900001,
"tpShopId":"247900001",
"shopName":"南粉北面高攀路店面"
},
"products":[
{
"name": "满满鲜奶茶",
"id": 218063455586880512,
"tpId":"24242",
"uuid":12345,
"quantity":1,
"price":200,
"type":0,
"packagePrice":0,
"packageQuantity":0,
"totalFee":200,
"properties":[
{
"name":"五分甜",
"type":1,
"reprice":0
}, {
"name":"常温 ",
"type":1,
"reprice":0
}
]
},
{
"name": "满满鲜奶茶",
"id": 218063455586880512,
"tpId":"24242",
"uuid":123456,
"quantity":1,
"price":200,
"type":0,
"packagePrice":0,
"packageQuantity":0,
"totalFee":200,
"properties":[
{
"name":"五分甜",
"type":1,
"reprice":0
}, {
"name":"常温",
"type":1,
"reprice":0
}
]
},
{ "name": "加料1",
"id": "",
"tpId":"24242",
"parentUuid":123456,
"quantity":1,
"price":0,
"type":2,
"packagePrice":0,
"packageQuantity":0,
"totalFee":0},
{ "name": "配料1",
"id": "",
"tpId":"24242",
"parentUuid":12345,
"quantity":1,
"price":0,
"type":2,
"packagePrice":0,
"packageQuantity":0,
"totalFee":0}
],
"delivery":{
"expectTime":0,
"deliveryParty":1,
"receiverName":"12345678901",
"receiverPhone":"12345678901",
"receiverGender":1,
"delivererPhone":"13112222222",
"delivererAddress":"四川成都",
"coordinateType":1,
"longitude":88,
"latitude":110
},
"payment":{
"deliveryFee":0,
"packageFee":0,
"discountFee":0,
"platformDiscountFee":0,
"shopFee":400,
"userFee":400,
"serviceFee":0,
"subsidies":0,
"totalFee":400,
"payType":2
},
"isPrint": 1,
"printTemplateTypes":[9]
}
场景三:套餐有子菜的情况
{
"tpOrderId":"123123123131",
"needInvoice":1,
"invoiceTitle":"我要发票,这是抬头",
"createTime":1491906548372,
"peopleCount":1,
"remark":"呵呵",
"shop":{
"shopIdenty":247900001,
"tpShopId":"247900001",
"shopName":"南粉北面高攀路店面"
},
"products":[
{
"name": "满满鲜奶茶",
"id": 218063455586880512,
"tpId":"24242",
"uuid":12345,
"quantity":1,
"price":200,
"type":1,
"packagePrice":0,
"packageQuantity":0,
"totalFee":200,
"properties":[
{
"name":"五分甜",
"type":1,
"reprice":0
}, {
"name":"常温 ",
"type":1,
"reprice":0
}
]
},
{
"name": "满满鲜奶茶",
"id": 218063455586880512,
"tpId":"24242",
"uuid":123456,
"quantity":1,
"price":200,
"type":1,
"packagePrice":0,
"packageQuantity":0,
"totalFee":200,
"properties":[
{
"name":"五分甜",
"type":1,
"reprice":0
}, {
"name":"常温",
"type":1,
"reprice":0
}
]
},
{ "name": "加料1",
"id": "",
"tpId":"24242",
"parentUuid":123456,
"quantity":1,
"price":0,
"type":0,
"packagePrice":0,
"packageQuantity":0,
"totalFee":0},
{ "name": "配料1",
"id": "",
"tpId":"24242",
"parentUuid":12345,
"quantity":1,
"price":0,
"type":0,
"packagePrice":0,
"packageQuantity":0,
"totalFee":0}
],
"delivery":{
"expectTime":0,
"deliveryParty":1,
"receiverName":"12345678901",
"receiverPhone":"12345678901",
"receiverGender":1,
"delivererPhone":"13112222222",
"delivererAddress":"四川成都",
"coordinateType":1,
"longitude":88,
"latitude":110
},
"payment":{
"deliveryFee":0,
"packageFee":0,
"discountFee":0,
"platformDiscountFee":0,
"shopFee":400,
"userFee":400,
"serviceFee":0,
"subsidies":0,
"totalFee":400,
"payType":2
},
"isPrint": 1,
"printTemplateTypes":[9]
}
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
code | Int | 是 | 错误码;0:成功;其他详见错误码 |
message | String | 是 | 错误说明 |
messageUuid | String | 是 | 消息uuid |
result | Object | 否 | 返回业务参数 code !=0的情况下不返回业务参数 |
result
参数名 | 类型 | 是否必填 | 参数描述 |
---|---|---|---|
orderId | String | 是 | 开放平台订单id |
tradeId | String | 是 | 订单id |
serialNumber | int | 是 | 订单序号 |
pickUpNumber | String | 否 | 自定义取餐号 |
{
"result": {
"orderId": "ff0828bb91ba4dbd8cfb901657a393e6",
"tradeId": 268433446903745536,
"serialNumber": "70"
},
"code": 0,
"message": "成功[OK]",
"messageUuid": "b1d93c0b45b04ad6b056d64f22bc67d7",
"apiMessage": null
}