预下单扩展点
开发环境
http://dev-cn.your-api-server.com
开发环境
http://dev-cn.your-api-server.com
POST
/api/v2/create_order
通过模板组件发起下单时,抖音开平交易系统会请求开发者服务,将下单信息传递给开发者服务。详见交易系统接入流程。
msg 字段
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
order_id | string | 是 | 抖音开平侧生成的订单号 |
goods | Array | 是 | 商品信息,详情见goods字段 |
total_amount | int64 | 是 | 订单总价格,单位分 用户实付金额 = total_amount - discount |
discount | int64 | 是 | 订单折扣,单位分 |
cp_extra | string | 否 | 预下单时开发者定义的透传信息 |
create_order_time | int64 | 是 | 订单创建时间,13 位时间戳,单位毫秒 |
open_id | string | 是 | 用户 OpenID |
phone_num | string | 否 | 用户手机号 |
contact_name | string | 否 | 联系人姓名 |
app_id | string | 是 | 小程序id |
union_id | string | 否 | 用户的 UnionID |
delivery_type | int | 是 | 抖音码/三方码类型: 0:三方码,开发者自行处理券码生成及展示,通过 push_delivery 接口推送核销状态。 1:抖音码,开平负责生券,开发者使用核销组件展示,使用验券准备和验券接口核销。 |
price_calculation_detail | object | 否 | 营销算价结果信息,详情见字段描述 |
goods 字段
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
img_url | string | 是 | 商品图片链接 |
title | string | 是 | 商品标题 |
sub_title | string | 否 | 商品副标题 |
labels | string | 是 | 商品标签,对应 POI 多门店 SPU 同步的 sub_title,例如:随时退|免预约|提前 3 日预约 (“|”是中文类型) |
date_rule | string | 是 | 券的可用时间(目前仅用于展示),例如:“周一至周五可用”、“非节假日可用” |
origin_price | int64 | 是 | 商品原价,单位分 |
price | int64 | 是 | 商品去掉折扣后的单价,单位分 |
quantity | int64 | 是 | 购买的商品数量 |
poi_id | string | 否 | 对应门店的 POI ID |
goods_id | string | 是 | 商品 ID |
item_order_id_list | Array | 是 | item_order_id 列表,id 个数与 quantity 一致 |
goods_id_type | int32 | 是 | 商品 ID 类别, 1:POI 商品 2:非 POI 商品 |
item_order_info_list | Array | 是 | item_order 相关信息,详情见item_order_info字段 |
item_order_info 字段
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
item_order_id | string | 是 | item 单 ID |
price | int64 | 是 | 商品优惠后价格 |
price_calculation_detail 字段说明
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
calculation_type | int32 | 是 | 算价维度类型 1: 计算到goods层 2: 计算到item层 |
goods_discount_detail | Array | 否 | goods层算价结果信息,详情见字段描述 |
order_discount_detail | object | 否 | order层算价结果信息,详情见字段描述 |
item_discount_detail | Array | 否 | item层算价结果信息,详情见字段描述 |
说明:
1、订单原价total_amount,订单总优惠total_discount_amount
-
- total_amount = sum(goods_calculation_result_info.total_amount) = sum(item_calculation_result_info.total_amount)
- total_discount_amount=order_total_discount_amount + goods_total_discount_amount,订单总优惠金额=商品维度的优惠金额+订单维度的优惠金额
2、calculation_type表示计算优惠分摊的类型
-
- calculation_type=1,将优惠分摊到goods层,请求体包含order_calculation_result_info,goods_calculation_result_info,
- calculation_type=2,将优惠分摊到item层,请求体包含order_calculation_result_info,goods_calculation_result_info,item_calculation_result_info
3、order_calculation_result_info,goods_calculation_result_info,item_calculation_result_info表达的是优惠分摊逻辑。order, goods, item代表订单的三层结构,order有N个goods,每个goods有M个item(M表示份数),item表示单份商品。订单总优惠金额 = order层的优惠聚合 = goods层的优惠聚合 = item层的优惠聚合
4、举个例子,一笔订单购买2杯奶茶,总价100元,使用80-10活动和星冰乐单品立减5元优惠券,实付金额85元,表达分摊的逻辑如下
-
- 订单总优惠金额 total_discount_amount =1500,单位[分]
- order层,order_calculation_result_info,order_total_discount_amount=1000,goods_total_discount_amount=500
- goods层,goods_calculation_result_info数组长度为1,goods[0].total_discount_amount=1500
- item层,item_calculation_result_info数组长度为2,items[0].total_discount_amount=750,items[1].total_discount_amount=750
order_discount_detail 字段说明
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
order_total_discount_amount | number | 是 | 订单维度总优惠金额,单位分 |
goods_total_discount_amount | number | 是 | 商品(sku)维度总优惠金额,单位分 |
marketing_detail_info | Array | 否 | 营销明细,详情见字段描述 |
goods_discount_detail
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
goods_id | string | 是 | 商品 id |
quantity | number | 是 | 购买数量 |
total_amount | number | 是 | 商品总价,单位分 |
discount_amount | number | 是 | 该商品总优惠金额 该商品的实付金额 = total_amount - discount_amount |
marketing_detail_info | Array | 否 | 营销明细,详情见字段描述 |
item_discount_detail 字段说明
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
goods_id | string | 是 | 商品 id |
total_amount | number | 是 | 商品总价,单位分 |
discount_amount | number | 是 | 单份商品总优惠金额 单份商品的实付金额 = total_amount - discount_amount |
marketing_detail_info | Array | 否 | 营销明细,详情见字段描述 |
marketing_detail_info 字段说明
说明:
-
marketing_detail_info在order,goods,item三个层级都有,区别是它表示某个营销项在这一层级分摊的优惠金额。比如一笔订单购买2杯奶茶,总价100元,使用优惠券A满100-10元,实付90元。优惠券A会出现在3个层级的marketing_detail_info里
-
-
- 在order层,detailA.discount_amount=1000,单位[分]
- 在goods层,detailA.discount_amount=1000,
- 在item层,由于优惠分摊到两份商品上,detailA1.discount_amount=500,detailA1.discount_amount=500
-
-
discount_range,表示优惠的维度,举个例子
-
- 星冰乐单品5折券属于商品维度优惠,discount_range=2
- 订单满200-20属于订单维度优惠,discount_range=1
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
id | string | 是 | 营销 ID(用户身份 ID、优惠券 ID、积分 ID 或者活动 ID) |
type | number | 是 | 营销类型, 1:用户身份 2:优惠券 3:积分 4:活动 |
discount_amount | number | 是 | 该营销策略优惠金额,单位分 |
title | string | 是 | 营销名称 |
note | string | 否 | 营销备注 |
discount_range | number | 是 | 营销适用维度: 1:订单维度 2:商品维度 |
subtype | string | 否 | 营销子类型 |
value | i64 | 否 | 不同 type 含义不同,比如 type 为 4 时指积分值 |
kind | number | 是 | 营销类别 1:商家 2:平台 |
creator_type | number | 是 | 创建人类型 1:抖音平台 2:抖音来客—商家 3:小程序商家 |
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location --request POST 'http://dev-cn.your-api-server.com/api/v2/create_order?timestamp=1345678901234&nonce=iuy987q4htafreqw' \
--header 'Content-Type: application/json' \
--data-raw '{
"version": "2.0",
"msg": "序列化后的json字符串",
"type": "pre_create_order"
}'
响应示例响应示例
{
"err_no": 0,
"err_tips": "success",
"data": {
"out_order_no": "89876867867087",
"pay_expire_seconds": 300,
"order_entry_schema": {
"path": "page/refundDetail/xxx",
"params": "{\"id\": 1}"
},
"order_valid_time": [
{
"goods_id": "xxx",
"valid_start_time": 1682407227000,
"valid_end_time": 1682407228000
}
],
"order_goods_info": [
{
"goods_id": "xxx"
}
]
}
}
请求参数
Query 参数
timestamp
string
必需
示例值:
1345678901234
nonce
string
必需
示例值:
iuy987q4htafreqw
Header 参数
Content-Type
string
必需
示例值:
application/json
Body 参数application/json