订单支付成功 Webhook
收藏
我的收藏调用路径
抖音 -> SaaS服务商
消息说明
- •用户下单并支付成功后,平台会推送此下单消息,消息体中包含订单详细信息,各技术服务商可据此消息同步生成订单。
- ◦即时单和预约单仅涉及到用户一次支付,下单消息下发时机为用户支付成功后。
- ◦先囤后约单涉及到用户一次支付囤券和二次支付约配送,下单消息下发时机为用户二次支付,即约配送后;
- •收货地址:如果是平台配送,会对收货地址进行脱敏处理;如果是商家自配送,则不对详细地址脱敏,且会传具体的经纬度、坐标系,以支持第三方平台帮商家发起配送;
- •商品结构:抖音团购配送的商品是团购套餐的形式,因此订单中的商品信息包含套餐信息和套餐内的具体菜品信息;
- •金额计算:接口中新增了「amount_info」,结构更清晰,后续请以这个结构下的金额信息为准。
对应申请能力
订单推送
Scope | life.capacity.order.notice | |||
权限要求 | | |||
回调场景 | |
请求头字段
字段 | 说明 |
Msg-Id | 同一实体下同一action的msg_id相同,服务商可根据msg_id对于消息去重 |
X-Douyin-Signature | 抖音侧签名,服务商可根据签名判断该消息是否来自抖音开放平台 |
Content-Type | 固定值application/json |
消息可能重复推送,请使用Msg_Id进行去重处理!
请求体字段示例
字段 | 类型 | 说明 |
Event | string | 消息类型,用于区分各类消息 |
ClientKey | string | 对应服务商平台或开发者平台中的APPID,应用ID |
Content | string | 消息内容,根据需要解析消息内容,不同类型的消息内容不同 |
log_id | string | 抖音内部日志id,可提供给抖音方便排查问题 |
- •event:life_takeout_order_pay_success
- •content内容
基础信息
字段 | 类型 | 说明 | 备注 | 最后改动时间 |
order | object | 订单基础信息 | | |
.order_id | string | 抖音订单号 | | |
.shop_number | string | 流水号 | | |
.is_book | int | 是否预订单,1表示即时单、2表示预订单 | 用户在抖音下单时候选择即时单/预订单 | |
.is_self_deliver | int | 是否商家自配送,0表示不是自配送、1表示自配送 | is_self_deliver = deliver_mode==1 | |
.sys_expect_time | string | 预计送达时间/用户期望送达时间(根据是否预订单),格式:起始时间戳(单位秒)- 截止时间戳(单位秒),示例:1669370006-1669371206 | 需要在订单卡片或小票上展示
| |
.remark | string | 用户备注 | [贺卡](鲜花品类)/[祝福语](蛋糕品类)+用户填写的祝福内容+[其他备注]+用户填写的备注信息 两者均有可能下发,可使用方括号内文本进行结构化分隔和提取 仅下发用户填写的备注信息时,不会下发“[其他备注]”文案 | 2023/05/18 |
.create_time | int64 | 下单时间戳,单位秒 | | |
.pay_time | int64 | 支付时间戳,单位秒 | 先囤后送单:取约配送的二次支付时间,不是买券的一次支付时间 即时单:订单和配送费在同一时间支付 | |
.deliver_mode | int32 | 配送方式,1-自配送; 7-平台配送 | | |
.table_ware | string | 餐具信息 | | |
.is_deliver_later | bool | 是否先囤后送单 true:是 false: 不是 | 先囤后送单部分业务规则
| |
.sku_type_num | int32 | 原始订单的整单商品种类数(原始订单含义见products字段) | | |
.sku_num | int32 | 原始订单的整单商品件数(原始订单含义见products字段) | | |
poi | object | 门店信息 | | |
.poi_id | string | 门店id | | |
.poi_name | string | 门店名称 | | |
merchant | object | 商家信息 | | |
.account_id | string | 商家id | 一个商家可以有多个门店。例如肯德基是一个商家,在不同城市有很多的门店 | |
.account_name | string | 商家名称 | | |
buyer_info | object | 下单人信息(仅鲜花、蛋糕品类) | | |
.buyer_phone | string | 下单人手机号(脱敏处理) | | |
.buyer_secret_number | string | 下单人虚拟号,格式为“11位手机号_分机号”,如18400872586_9580 | 即时单,订单完成后7.5小时内有效 预约单,用户下单后7天内有效 | |
.buyer_real_phone | string | 下单人真实手机号 | 11位手机号,仅当用户在下单时取消“号码保护”时下发 | |
receiver_info
字段 | 类型 | 说明 | 备注 | 示例 |
receiver_info | object | 收货人信息 | | 抖音侧: 消息下发: |
.receiver_name | string | 收货人姓名(脱敏处理) | | |
.receiver_phone | string | 收货人手机号(脱敏处理) | | |
.secret_number | string | 虚拟号,格式为“11位手机号_分机号”,如18400872586_9580 | 即时单,订单完成后7.5小时内有效 预约单,用户下单后7天内有效 | |
.receive_real_phone | string | 收货人真实手机号 | 11位手机号,仅当用户在下单时取消“号码保护”时下发 | |
.province | string | 收货省份 | 抖音用户侧显示的地址,可参考使用: city+district+town+location_name+door_plate_num 平台配送:下发脱敏详细地址; 自配送:下发非脱敏详细地址,以及地址经纬度、坐标系; | |
.city | string | 收货城市 | ||
.district | string | 收货区 | ||
.town | string | 收货乡镇 此字段会下发空值,不影响实际配送。后续有可能会酌情排期下发 | ||
.location_address | string | 详细地址,商家自配送单会展示,其他情况脱敏处理 | ||
.location_name | string | 详细地址后半部分 | ||
.door_plate_num | string | 门牌号 | ||
.lat | float | 收货地址纬度,商家自配送单会传,其他情况不传 | GCJ02坐标系 | |
.lng | float | 收货地址经度,商家自配送单会传,其他情况不传 | GCJ02坐标系 |
amount(历史遗留的订单信息,不建议使用)
字段 | 类型 | 说明 |
amount | object | 订单金额,不再使用 |
.pay_amount | int | 实付金额,单位分 |
.origin_amount | int | 原价,单位分 |
.merchant_discount_amount | int | 商户优惠金额, 单位分 |
.platform_discount_amount | int | 平台优惠金额,单位分 |
.product_origin_amount | int | 商品原金额,单位分,商品划线价 |
.pay_discount_amount | int | 支付优惠金额,单位分 |
.origin_deliver_fee | int | 原价配送费,单位分 |
.pay_deliver_fee | int | 实付配送费,单位分 |
amount_info(新的订单信息,结构更清晰)
字段 | 类型 | 说明 | 备注 |
amount_info | object | 新金额信息 | amount_info中的各字段,主要表达的是订单中各类金额的总和 |
订单相关信息(与C端订单展示可对应) | |||
.origin_amount | int32 | 订单原始金额,单位分 未计入任何折扣/补贴/优惠的订单金额 |
视角1 origin_amount=用户实付金额pay_amount+订单折扣金额discount_amount 视角2 origin_amount=订单内商品售卖金额sale_price+配送费原价 配送费原价指的是未计入任何配送费优惠金额的配送费,即
视角3 origin_amount=各子单原始金额总和(后续计划逐步废弃掉)
|
.pay_amount | int32 | 用户实付金额,单位分 用户实际支付了的包含了货款、配送费、以及各类折扣/补贴/优惠之后的最终金额 | |
.sale_price | int32 | 订单内商品售卖金额,单位分
| |
.product_origin_amount | int64 | 订单内商品划线金额,单位分
| |
.discount_amount | int32 | 订单折扣金额,单位分 包含商品、配送费、支付优惠等下列折扣列表中全部折扣的总和 | |
.discounts | list | 折扣列表 | |
..discount_type | int32 | 折扣类型 1. 优惠券(例如,满减券等) 2. 活动(例如,秒杀、商品立减等) 3. 支付优惠 | |
..discount_amount | int32 | 该类型折扣金额 | |
..merchant_discount_amount | int32 | 商家承担的该类型折扣金额 | |
..platform_discount_amount | int32 | 平台承担的该类型折扣金额 | |
商家预计收入相关信息 | |||
.estimated_order_income | int32 | 预计收入,单位分 用户下单(约配送)时预估计算得到的商家预计收入,有可能会跟着履约过程发生调整 | 统一公式(覆盖所有配送模式) 预计收入=商品售卖金额(收入)+ 用户需要支付的配送费(收入,自配) - 商家活动补贴(支出) - 佣金(支出) - 平台配送服务费(支出)-自配送服务费(支出) |
.activities_fee_amount | int32 | 商家活动补贴,单位分(商品、配送费等各项补贴的总和) | 商家承担的总活动支出,计算预计收入的过程值 |
.commission_amount | int32 | 佣金,单位分 佣金=平台佣金(即软件服务费)、达人佣金(包含纯达人佣金、达人机构佣金、撮合经纪服务商(即团长服务费)、服务商佣金等各项佣金的总和 | 商家承担的总佣金支出,计算预计收入的过程值 |
.platform_deliver_freight_fee | int32 | 平台配送服务费,单位分(仅平台配送) | 商家需要支付给平台的配送费,计算预计收入的过程值 |
.merchant_deliver_freight_fee | int32 | 自配送服务费,单位分(仅自配送) | 商家需要支付给平台的提现手续费等,计算预计收入的过程值 |
.freight_pay_amount | int32 | 用户需要支付的配送费,单位分(仅自配送) | 商家设置的向用户收取的配送费,未扣除配送费优惠,计算预计收入的过程值 |
sub_order_amount_infos | list | 子单金额信息 | |
子单相关信息 | | ||
.sub_order_type | int32 | 子单类型 100:商品 1:配送费 2:打包费 3:服务费(2、3暂时没有) | sub_order_amount_infos为amount_info更细粒度的值sum(sub_order_amount_infos) = amount_info 子单结构是历史遗留的概念 ,不建议使用,未来会适时考虑废弃掉 |
.sub_order_id | string | 子单id,类型为100时为item_id, 234为order_fee_id | |
.origin_amount | int32 | 原始金额,单位分 | |
.pay_amount | int32 | 实付金额,单位分 | |
.discount_amount | int32 | 折扣金额,单位分 | |
.discounts | list | 折扣列表 | |
..discount_type | int32 | 折扣类型 | |
..discount_amount | int32 | 金额 | |
..merchant_discount_amount | int32 | 商家优惠 | |
..platform_discount_amount | int32 | 平台优惠 | |
amount_info_after_refund | object | 部分退后留下的需履约订单的金额信息 约配送时剩余商品对应收入,与products_after_refund对应 | 没有发生约配送 前部分退情况下为null |
.sale_price | int32 | 商品售卖金额,单位分 | |
.estimated_order_income | int32 | 预计收入,单位分 | |
.activities_fee_amount | int32 | 商家活动补贴,单位分 | |
.commission_amount | int32 | 佣金,单位分 | |
.platform_deliver_freight_fee | int32 | 平台配送服务费,单位分(仅平台配送) | |
.merchant_deliver_freight_fee | int32 | 自配送服务费,单位分(仅商家自配送) | |
.freight_pay_amount | int32 | 用户需要支付的配送费,单位分(仅自配送) | |
订单内商品信息
字段 | 类型 | 说明 | 备注 | 最后改动时间 |
products | list<object> | 原始订单的商品信息(用户最初原始订单中的商品)
| | |
.product_id | string | 商品id | | |
.sku_id | string | skuid | | |
.out_id | string | 外部商品id | | |
.origin_amount | int64 | 商品售卖价 商家整体设置的套餐商品价格 多规格商品订单时,会体现用户选中某个规格后的加价结果 如果购买了多份商品,会体现多份之和 | | |
.product_origin_amount | int64 | 商品划线价 商家在菜品搭配中设置的各菜品priceX菜品数量的总和 多规格商品订单时,会体现用户选中某个规格后的加价结果 如果购买了多份商品,会体现多份之和 | | |
.product_name | string | 商品名称 | | |
.num | int | 商品份数 早期:仅允许一笔订单购买1种1份1件套餐商品; 23.8:新增的购物车能力,允许通过购物车一笔订单购买多件或多份套餐商品,最多不超过3件 23.9:允许一笔订单购买1种多份套餐商品,份数不超过2 | | |
.commodities | list<object> | 菜品搭配 | | |
..group_name | string | 菜品类型 | | |
..total_count | int | 此类型菜品总数(多规格组合商品时,该字段会下发-1,无业务含义) | | |
..option_count | int | 此类型可选菜品总数(多规格组合商品时,该字段会下发-1,无业务含义) | | |
..items | list<object> | 详细菜品列表 | | |
...name | string | 详细菜品名称 | | |
...count | int | 数量 | | |
...unit | string | 单位 | | |
...price | int | 价格,单位分 price代表1份菜品的单价 | | |
...product_id | string | 抖音单品ID | | |
...out_id | string | 外部单品ID | | |
...sku_id | string | 抖音商品ID | 无规格单品为-1 | |
...out_sku_id | string | 外部商品ID | 无规格单品为-1 | |
...sku_attr_list | list<object> | 规格属性(仅多规格商品订单,体现用户选中的规格信息) | | |
....attr_name | string | 规格属性名 | | |
....num | int | 规格属性数量 | | |
....product_id | string | 抖音加料ID | | |
....out_id | string | 外部加料ID | | |
products_after_refund | list<object> | 部分退后留下的商品信息(约配送时订单中的商品)
| 没有发生约配送前部分退情况下为null | |
.product_id | string | 商品id | | |
.sku_id | string | skuid | | |
.out_id | string | 外部商品id | | |
.origin_amount | int64 | 商品售卖价 商家整体设置的套餐商品价格 多规格商品订单时,会体现用户选中某个规格后的加价结果 如果购买了多份商品,会提现多份之和 | | |
.product_origin_amount | int64 | 商品划线价 商家在菜品搭配中设置的各菜品price的总和 多规格商品订单时,会体现用户选中某个规格后的加价结果 如果购买了多份商品,会提现多份之和 | | |
.product_name | string | 商品名称 | | |
.num | int | 商品份数 | | |
.commodities | list<object> | 菜品搭配 | | |
..group_name | string | 菜品类型 | | |
..total_count | int | 此类型菜品总数 | | |
..option_count | int | 此类型可选菜品总数 | | |
..items | list<object> | 详细菜品列表 | | |
...name | string | 详细菜品名称 | | |
...count | int | 数量 | | |
...unit | string | 单位 | | |
...price | int | 价格,单位分 | | |
...product_id | string | 抖音单品ID | | |
...out_id | string | 外部单品ID | | |
...sku_id | string | 抖音份量ID | 无规格单品为-1 | |
...out_sku_id | string | 外部份量ID | 无规格单品为-1 | |
...sku_attr_list | list<object> | 规格属性 | | |
...original_sku_id | string | 规格升级前抖音商品ID | | |
...original_out_sku_id | string | 规格升级前外部商品ID | | |
...original_price | int | 规格升级前价格 | | |
....attr_name | string | 规格属性名 | | |
....num | int | 规格属性数量 | | |
....product_id | string | 抖音加料ID | | |
....out_id | string | 外部加料ID | | |
....upgrade_price | int | 加料价格 | | |
约配送前退款信息
refund_infos | list<struct> | 退款信息(约配送前发生)没有发生约配送前部分退情况下为null |
.after_sale_id | string | 售后单id |
.refund_complete_time | int64 | 退款完成时间 |
.user_refund_amount | int64 | 退款金额 |
.products_refund | struct | 商品信息(本次部分退) |
..product_id | string | 商品id |
..product_name | string | 商品名称 |
.origin_amount | int64 | 商品售卖价 商家整体设置的套餐商品价格 多规格商品订单时,会体现用户选中某个规格后的加价结果 如果购买了多份商品,会提现多份之和 |
.product_origin_amount | int64 | 商品划线价 商家在菜品搭配中设置的各菜品price的总和 多规格商品订单时,会体现用户选中某个规格后的加价结果 如果购买了多份商品,会提现多份之和 |
..sku_id | string | skuid |
..num | int | 商品份数 |
..commodities | list | 菜品信息 |
...group_name | string | 商品组名 |
...total_count | int32 | 总数 |
...option_count | int32 | 选几 |
...items | list | 菜品信息 |
....name | string | 菜名 |
....price | int64 | 价格 |
....count | int64 | 总数 |
....unit | string | 单位 |
....desc | string | 描述 |
....item_tag | string | 标签 |
....attr_list | list | 属性列表 |
....sku_attr_list | list<object> | 规格属性 |
.....attr_name | string | 规格属性名 |
.....num | int | 规格属性数量 |
请求示例
{ "MsgId": "eac74157eccddb4a6860df8d25ba62d5", "Message": { "Event": "life_takeout_order_pay_success", "ClientKey": "awmxi5eirnxpvwli", "Content": "{\"order\":{\"order_id\":\"1000001703409282301\",\"shop_number\":\"65\",\"is_book\":1,\"sys_expect_time\":\"1688482522-1688483722\",\"remark\":\"\",\"create_time\":1688473588,\"pay_time\":1688479523,\"is_self_deliver\":1,\"deliver_mode\":1,\"table_ware\":\"无需餐具\",\"is_deliver_later\":true,\"is_multi_order\":false,\"sku_type_num\":1,\"sku_num\":2},\"merchant\":{\"account_id\":\"7109411084762613804\",\"account_name\":\"深圳汇艺谷网络科技有限公司\"},\"receiver_info\":{\"receiver_name\":\"马*跳先生\",\"receiver_phone\":\"178****3009\",\"secret_number\":\"18400740824_9949\",\"receive_real_phone\":\"\",\"province\":\"北京市\",\"city\":\"北京市\",\"district\":\"东城区\",\"town\":\"\",\"location_address\":\"北京火车站内2楼\",\"lat\":39.903906,\"lng\":116.42801,\"location_name\":\"麦当劳(北京站)\",\"door_plate_num\":\"\"},\"buyer_info\":{\"buyer_phone\":\"\",\"buyer_secret_number\":\"\",\"buyer_real_phone\":\"\"},\"amount\":{\"pay_amount\":600,\"origin_amount\":600,\"merchant_discount_amount\":0,\"platform_discount_amount\":0,\"product_origin_amount\":300,\"pay_discount_amount\":0,\"origin_deliver_fee\":200,\"pay_deliver_fee\":200},\"poi\":{\"poi_id\":\"6601126658655127565\",\"poi_name\":\"大食代(东方新天地店)\"},\"products\":[{\"product_id\":\"1768659392721949\",\"sku_id\":\"1768659392721949\",\"product_name\":\"美食-北京菜-单品-限购2\",\"num\":2,\"commodities\":[{\"group_name\":\"荤菜\",\"total_count\":1,\"option_count\":1,\"items\":[{\"name\":\"3\",\"count\":1,\"unit\":\"份\",\"price\":300}]}],\"ext_sku_id\":\"\",\"product_origin_amount\":600,\"origin_amount\":400}],\"amount_info\":{\"origin_amount\":600,\"pay_amount\":600,\"discount_amount\":0,\"sale_price\":400,\"estimated_order_income\":589,\"activities_fee_amount\":0,\"commission_amount\":10,\"platform_deliver_freight_fee\":0,\"merchant_deliver_freight_fee\":1,\"freight_pay_amount\":200,\"discounts\":null},\"sub_order_amount_infos\":[{\"origin_amount\":400,\"pay_amount\":400,\"discount_amount\":0,\"sale_price\":0,\"estimated_order_income\":0,\"activities_fee_amount\":0,\"commission_amount\":0,\"platform_deliver_freight_fee\":0,\"merchant_deliver_freight_fee\":0,\"freight_pay_amount\":0,\"discounts\":[{\"discount_type\":0,\"discount_amount\":0,\"merchant_discount_amount\":0,\"platform_discount_amount\":0}],\"sub_order_type\":100,\"sub_order_id\":\"800000000429829145613182301\"},{\"origin_amount\":200,\"pay_amount\":200,\"discount_amount\":0,\"sale_price\":0,\"estimated_order_income\":0,\"activities_fee_amount\":0,\"commission_amount\":0,\"platform_deliver_freight_fee\":0,\"merchant_deliver_freight_fee\":0,\"freight_pay_amount\":0,\"discounts\":null,\"sub_order_type\":1,\"sub_order_id\":\"800000000429878784015522301\"}],\"products_after_refund\":[{\"product_id\":\"1768659392721949\",\"sku_id\":\"1768659392721949\",\"product_name\":\"美食-北京菜-单品-限购2\",\"num\":1,\"commodities\":[{\"group_name\":\"荤菜\",\"total_count\":1,\"option_count\":1,\"items\":[{\"name\":\"3\",\"count\":1,\"unit\":\"份\",\"price\":300}]}],\"ext_sku_id\":\"\",\"product_origin_amount\":300,\"origin_amount\":200}],\"amount_info_after_refund\":{\"sale_price\":200,\"estimated_order_income\":394,\"activities_fee_amount\":0,\"commission_amount\":5,\"platform_deliver_freight_fee\":0,\"merchant_deliver_freight_fee\":1,\"freight_pay_amount\":200}}" }