点餐订单信息同步(服务商)

应用场景

当点餐订单状态发生变化时,都上传全量的订单明细。

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)

常见问题

错误码