点餐订单信息同步(服务商)
应用场景
当点餐订单状态发生变化时,都上传全量的订单明细。
1、用户在扫码点餐小程序/h5页面中下单时,上报用户的下单信息,此时status为CREATE_DEAL
2、确定支付成功后上报用户的支付信息,此时status为PAY_SUCCESS
接口说明
接口url | https://api.mch.weixin.qq.com/v3/catering/orders/sync-status |
---|---|
请求方式 |
POST |
接口规则 |
本接口使用微信支付V3版接口规则 |
前置条件
无
请求参数
变量名 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
sp_mchid | String(32) | 是 | 1900000109 | 微信支付分配的服务商商户号 |
sub_mchid | String(32) | 是 | 1900000100 | 微信支付分配子商户商户号 |
sp_appid | String(32) | 是 | wx8888888888888888 | 服务商在微信公众平台申请服务号对应的APPID |
sub_appid | String(32) | 否 | wx8888888888888888 | 子商户在微信公众平台申请服务号对应的APPID |
out_shop_no | String(32) | 是 | 6895 | 商户旗下门店的唯一编号 |
openid | String(32) | 否 | oYobu0Dmn6Tdod ZnFWKOEkqoRbI8 | 用户标识,用户在服务商appid下的openid。 openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。 |
sub_openid | String(32) | 否 | oYobu0Dmn6Tdod ZnFWKOEkqoRbI8 | 用户子标识,用户在子商户appid下的openid。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。 |
login_token | String(256) | 是 | 071oYFSN19sCH31AyNSN15QDSN1oYFSA | 微信用户登录接口返回的登录票据
公众号,填写页面授权access_token,详细参考; 小程序,填写session_key,详细参考。 |
order_entry | String(256) | 是 | http://www.example.com | 点餐入口,公众号:点餐页面完整URL 小程序:点餐页面path路径 |
total_amount | int | 是 | 1000 | 总价,单位为分 |
discount_amount | int | 是 | 100 | 优惠金额,单位为分 |
user_amount | int | 是 | 900 | 实际支付金额,单位为分 |
status | String(32) | 是 | CREATE_DEAL | 订单状态,取值如下: CREATE_DEAL—用户下单; PAY_SUCCESS—支付完成,结账成功; |
action_time | String(64) | 是 | 2018-06-08T10:34:56+08:00 | 状态发生变化的时间,格式为rfc3339格式,如2018-06-08T10:34:56+08:00 代表北京时间2018年06月08日10时34分56秒 |
pay_time | String(64) | 否 | 2018-06-08T10:34:56+08:00 | 支付时间,格式为rfc3339格式,如2018-06-08T10:34:56+08:00 代表北京时间2018年06月08日10时34分56秒(status为PAY_SUCCESS时必填) |
transaction_id | String(64) | 否 | 1009660380201506130728806387 | 支付订单号(status为PAY_SUCCESS时必填) |
out_trade_no | String(64) | 否 | 20150806125346 | 服务商系统内部支付订单号(status为PAY_SUCCESS时必填) |
out_order_no | String(64) | 是 | 20150806125346 | 服务商系统内部订单号 |
dish_list | JsonArray | 是 | [{ "out_dish_no":"1", "name":"清汤锅底", "price":6000, "unit":"BY_SHARE", "count":1, "discount":100, "type":"FAST_FOOD", "priority":1, "properties": {"taste":"辣","cuisine":"炒","main_material":"猪肝","ingredients":"青椒|辣椒|葱|八角","others":"有机|农家"} }] |
详见dish_list对象列表 |
out_table_no | String(16) | 否 | 1 | 桌位号 |
people_count | int | 否 | 2 | 消费人数 |
dish_list对象列表:
变量名 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
out_dish_no | String(48) | 是 | 1 | 商户菜品ID |
name | String(128) | 是 | 清汤锅底 | 菜品名称 |
price | int | 是 | 1 | 菜品单价,单位为分 |
unit | String(16) | 是 | BY_SHARE | 菜品单位,BY_SHARE-按份 BY_WEIGHT-按重量 |
count | Float | 是 | 1.5 | 菜品数量,保留小数点后2位有效数字 |
discount | int | 否 | 100 | 菜品折扣,百分值,8折填80 |
type | String(32) | 否 | FAST_FOOD | 菜品分类,如等。详见参数规定《菜品类型列表》 |
priority | int | 否 | 1 | 当前菜品在服务商平台的顺序,值越小越靠前,取值(1~100) |
properties | object | 否 | 菜品属性,详见参数规定《菜品属性列表》 |
properties对象列表
变量名 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
taste | String(128) | 是 | 辣 | 口味,取值参考参数规定中的“菜品属性”taste字段,可额外补充 |
cuisine | String(128) | 是 | 炒 | 做法,取值参考参数规定中的“菜品属性”cuisine字段,可额外补充 |
main_material | String(128) | 是 | 猪肝 | 主料,取值参考参数规定中的“菜品属性”main_material字段,可额外补充,以竖线(|)分隔 |
ingredients | String(128) | 是 | 青椒|辣椒|葱|八角 | 配料,取值参考参数规定中的“菜品属性”ingredients字段,可额外补充,以竖线(|)分隔 |
others | String(128) | 否 | 有机|农家 | 其他,取值参考参数规定中的“菜品属性”others字段,可额外补充,以竖线(|)分隔 |
请求包体样例:
{
"sp_mchid": "1900009231",
"sub_mchid": "1900000100",
"sp_appid": "wxab8acb865bb1637e",
"order_entry": "/index/order",
"sub_appid": "wx8888888888888888",
"out_shop_no": "32432",
"openid": "oHkLxt8uweSK05Xb8zGY3KzmUBn8",
"sub_openid": "oHkLxt8uweSK05Xb8zGY3KzmUBn8",
"login_token": "071oYFSN19sCH31AyNSN15QDSN1oYFSA",
"total_amount": 1000,
"discount_amount": 100,
"user_amount": 900,
"status": "CREATE_DEAL",
"action_time": "2018-06-08T10:34:56+08:00",
"pay_time": "2018-06-08T10:34:56+08:00",
"transaction_id": "1009660380201506130728806387",
"out_trade_no": "20150806125346",
"out_order_no": "20150806125346",
"dish_list": [{
"out_dish_no": "1",
"name": "小鸡炖蘑菇",
"price": 6000,
"unit": "BY_SHARE",
"count": 1,
"discount": 100,
"type": "FAST_FOOD",
"priority": 1,
"properties": {
"taste": "辣",
"cuisine": "炒",
"main_material": "猪肝",
"ingredients": "青椒 | 辣椒 | 葱 | 八角 ",
"others": "有机 | 农家"
}
}],
"people_count": 1
}
返回结果
异常返回
变量名 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
code | String(32) | 是 | PARAM_ERROR | 错误码,枚举值见错误码列表 |
message | String(256) | 是 | 参数格式校验错误 | 返回信息,如非空,为错误原因,比如签名失败,参数为空等 |
detail | Object | 是 | {
"field":"unit", "value":"BYSHARE", "issue":"currency code is invalid", "location":"body" } |
具体错误情况,见下面说明 |
detail对象列表:
变量名 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
field | String | 是 | unit | 错误的参数名 |
value | String | 是 | BYSHARE | 错误的值 |
issue | String | 是 | currency code is invalid | 具体错误情况 |
location | String | 是 | body | body:错误参数位于请求body的JSON中;
url:错误参数位于请求url中 query:错误参数位于请求的querystring中 |
应答样例:
{
"code": "PARAM_ERROR",
"message": "参数错误",
"detail":"{
"field":"sp_mchid"
"value":"",
"issue":"sp_mchid is empty",
"location":"body"
}
}
正常返回:
无数据(Http状态码为204)
常见问题
常见QA详见:微信点餐订单信息同步常见技术问题
错误码
参见错误码列表