创单结单合并API

最新更新时间:2020.04.23 版本说明


该接口适用于无需微信支付分做订单风控判断的业务场景,在服务完成后,通过该接口对用户进行免密代扣。

注意:

• 限制条件:【免确认订单模式】,用户已授权状态下,可调用该接口。


特别提醒:创单结单合并接口暂未对外开放,如有需要请咨询对接的微信支付运营人员,申请开通调用权限。

接口说明

适用对象:直连商户

请求URL:https://api.mch.weixin.qq.com/payscore/serviceorder/direct-complete

请求方式:POST

接口规则:https://wechatpay-api.gitbook.io/wechatpay-api-v3


path 指该参数为路径参数

query 指该参数需在请求URL传参

body 指该参数需在请求JSON传参


请求参数

参数名 变量 类型[长度限制] 必填 描述
商户服务订单号 out_order_no string[1,32] body 商户系统内部服务订单号(不是交易单号),要求此参数只能由数字、大小写字母_-|*组成,且在同一个商户号下唯一。详见[商户订单号]。
示例值:1234323JKHDFE1243252
公众账号ID appid string[1,32] body 微信公众平台分配的与传入的商户号建立了支付绑定关系的appid,可在公众平台查看绑定关系,此参数需在本系统先进行配置。
示例值:wxd678efh567hg6787
用户标识 openid string[1,128] body 微信用户在商户对应appid下的唯一标识。
示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
服务ID service_id string[1,32] body 该服务ID有本接口对应产品的权限。
示例值:500001
服务信息 service_introduction string[1,20] body 服务信息,用于介绍本订单所提供的服务 ,当参数长度超过20个字符时,报错处理。
示例值:某某酒店
+付费项目 post_payments array body 付费项目列表,最多包含100条付费项目。
参数名 变量 类型[长度限制] 必填 描述
付费项目名称 name string[1,20] 付费项目名称不能重复,当参数长度超过20个字符时,报错处理。
示例值:就餐费用, 服务费

金额 amount int64 1、此付费项目总金额,大于等于0,单位为分等于0时代表不需要扣费。
2、未填写金额的付费项目,默认该付费项目金额为0。
示例值:40000
计费说明 description string[1,30] 描述计费规则,不超过30个字符,超出报错处理。
示例值:就餐人均100元,服务费:100/小时
付费数量 count uint32 付费项目的数量,只能为整数,不填时默认1个。。
特殊规则:数量限制100,不填时默认1。
示例值:4
+商户优惠 post_discounts array body 付费商户优惠列表,最多包含30条商户优惠。
参数名 变量 类型[长度限制] 必填 描述
优惠名称 name string[1,20] 1、商户优惠项目名称,不超过20个字符。
2、优惠项目名称不可重复。
示例值:满20减1元
优惠说明 description string[1,30] 1、优惠使用条件说明,不超过30个字符。
示例值:不与其他优惠叠加
优惠金额 amount uint64 1、商户优惠项目金额,大于等于0,单位为分。
示例值:100
优惠数量 count uint32 优惠的数量,不填时默认为1个。
特殊规则:数量限制100,不填时默认1
示例值:2
+服务时间段 time_range object body 服务时间范围
参数名 变量 类型[长度限制] 必填 描述
服务开始时间 start_time string[1,14] 【用户端展示用途】
用户下单时确认的服务开始时间。
支持两种格式:
“yyyyMMddHHmmss”和“yyyyMMdd”:
• 传入20091225091010表示2009年12月25日9点10分10秒
• 传入20091225默认认为时间为2009年12月25日0点0分0秒
【服务开始时间】<【商户调用创单结单合并接口时间】
示例值:20091225091010
服务开始时间备注 start_time_remark string[1,20] 服务开始时间备注说明,服务开始时间有填时,可填写服务开始时间备注,不超过20个字符,超出报错处理。
示例值:备注1
服务结束时间 end_time string[1,14] 用户端展示用途,支持两种格式:yyyyMMddHHmmss和yyyyMMdd
• 传入20091225091010表示2009年12月25日9点10分10秒。
• 传入20091225默认认为时间为2009年12月25日
1、【服务结束时间】>【服务开始时间】
2、【服务结束时间】≤【商户调用创单结单合并接口时间】
示例值:20091225121010
服务结束时间备注 end_time_remark string[1,20] 预计服务结束时间备注说明,预计服务结束时间有填时,可填写预计服务结束时间备注,不超过20个字符,超出报错处理。
示例值:备注2
+服务位置 location object body 服务位置信息
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
服务开始地点 start_location string[1,50] 1、开始使用服务的地点. 不超过50个字符,超出报错处理。
示例值:嗨客时尚主题展餐厅
服务结束地点 end_location string[1,50] 1、实际结束使用服务的地点. 不超过50个字符,超出报错处理。
【建议】
服务在同一地点开始和结束时,不传入该字段。
示例值:嗨客时尚主题展餐厅
总金额 total_amount uint64 1、金额:数字,必须≥0(单位:分)
2、总金额 =(完结付费项目1…+完结付费项目n)-(完结商户优惠项目1…+完结商户优惠项目n)
3、总金额上限:总金额≤“服务风险金额”
示例值:50000
微信支付服务分账标记 profit_sharing bool 分账标记,默认为false,枚举值:
false:不分账
true:分账
示例值:false
订单优惠标记 goods_tag string(32) 订单优惠标记,详见《代金券或立减金优惠》参数。
示例值:goods_tag1
商户数据包 attach string[1,256] body 商户数据包可存放本订单所需信息,需要先urlencode后传入。 当商户数据包总长度超出256字符时,报错处理。
示例值:Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald
商户回调地址 notify_url string[1,255] body 商户接收扣款成功回调通知的地址,服务需要收款时此参数必填;服务无需收款时此参数不填。
示例值:https://api.test.com

请求示例


{
  "post_payments" : [ {
    "amount" : 40000,
    "name" : "就餐费用服务费",
    "count" : 4,
    "description" : "就餐人均100元服务费:100/小时"
  }, {
    "amount" : 2000,
    "name" : "就餐费用服务费",
    "count" : 1,
    "description" : "就餐人均100元服务费:100/小时"
  } ],
   "service_introduction" : "某某酒店",
  "openid" : "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
  "profit_sharing" : false,
  "out_order_no" : "1234323JKHDFE1243252",
  "notify_url" : "https://api.test.com",
  "time_range" : {
    "start_time" : "20091225091010",
    "end_time_remark" : "备注2",
    "end_time" : "20091225121010",
    "start_time_remark" : "备注1"
  },
  "total_amount" : 50000,
  "goods_tag" : "goods_tag1",
  "service_id" : "500001",
  "appid" : "wxd678efh567hg6787",
  "location" : {
    "start_location" : "嗨客时尚主题展餐厅",
    "end_location" : "嗨客时尚主题展餐厅"
  },
  "attach" : "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald",
  "post_discounts" : [ {
    "amount" : 100,
    "name" : "满20减1元",
    "count" : 2,
    "description" : "不与其他优惠叠加"
  }, {
    "amount" : 100,
    "name" : "满20减1元",
    "count" : 2,
    "description" : "不与其他优惠叠加"
  } ]
}
    
{
JAVA示例代码
}
    

返回参数

参数名 变量 类型[长度限制] 必填 描述
公众账号ID appid string[1,32] 调用接口提交的公众账号ID。
示例值:wxd678efh567hg6787
商户号 mchid string[1,32] 调用接口提交的商户号。
示例值:1230000109
商户服务订单号 out_order_no string[1,32] 调用接口提交的商户服务订单号。
示例值:1234323JKHDFE1243252
服务ID service_id string[1,32] 调用该接口提交的服务ID。
示例值:500001
微信支付服务订单号 order_id string(128) 微信支付服务订单号,每个微信支付服务订单号与商户号下对应的商户服务订单号一一对应。
示例值:15646546545165651651
服务信息 service_introduction string[1,20] 服务信息,用于介绍本订单所提供的服务。
示例值:某某酒店
服务订单状态 state string[1,32]

表示当前单据状态。

枚举值:
1、DOING:服务订单进行中
2、DONE:服务订单完成
示例值:DOING

订单状态说明 state_description string (32) 对服务订单"进行中"状态的附加说明。
1、MCH_COMPLETE:商户完结
示例值:MCH_COMPLETE
+付费项目 post_payments array 付费项目列表,最多包含100条付费项目。
参数名 变量 类型[长度限制] 必填 描述
付费项目名称 name string[1,20] 不超过20个字符,超出报错处理。
示例值:就餐费用, 服务费
金额 amount int64 此付费项目总金额,大于等于0,单位为分,等于0时代表不需要扣费,只能为整数,详见支付金额示例值:40000
计费说明 description string[1,30] 描述计费规则,不超过30个字符,超出报错处理。
示例值:就餐人均100元,服务费:100/小时
付费数量 count uint32 付费项目的数量。
示例值:4
+付费商户优惠 post_discounts array 付费商户优惠,最多包含30条付费项目。
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
优惠名称 name string(20) 付费项目名称不能重复,当参数长度超过20个字符时,报错处理。
示例值:就餐费用, 服务费

优惠说明 description string(30) 1、此付费项目总金额,大于等于0,单位为分等于0时代表不需要扣费。
2、未填写金额的付费项目,默认该付费项目金额为0。
示例值:40000
优惠金额 amount uint64 描述计费规则,不超过30个字符,超出报错处理。
示例值:就餐人均100元,服务费:100/小时
优惠数量 count uint64 付费项目的数量,只能为整数,不填时默认1个。。
特殊规则:数量限制100,不填时默认1。
示例值:4
+服务时间段 time_range object 服务时间范围
参数名 变量 类型[长度限制] 必填 描述
服务开始时间 start_time string[1,14] 用户端展示用途, 用户下单时确认的服务开始时间。
支持两种格式: “yyyyMMddHHmmss”和“yyyyMMdd”:
• 传入20091225091010表示2009年12月25日9点10分10秒
• 传入20091225默认认为时间为2009年12月25日0点0分0秒
【服务开始时间】<【商户调用创单结单合并接口时间】
示例值:20091225091010
服务开始时间备注 start_time_remark string[1,20] 服务开始时间备注说明,服务开始时间有填时,可填写服务开始时间备注,不超过20个字符,超出报错处理。
示例值:备注1
服务结束时间 end_time string[1,14] 用户端展示用途,支持两种格式:yyyyMMddHHmmss和yyyyMMdd
• 传入20091225091010表示2009年12月25日9点10分10秒。
• 传入20091225默认认为时间为2009年12月25日
1、【服务结束时间】>【服务开始时间】
2、【服务结束时间】≤【商户调用创单结单合并接口时间】
示例值:20091225121010
服务结束时间备注 end_time_remark string[1,20] 预计服务结束时间备注说明,预计服务结束时间有填时,可填写预计服务结束时间备注,不超过20个字符,超出报错处理。
示例值:备注2
+服务位置 location object 服务使用信息。
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
服务开始地点 start_location string[1,50] 开始使用服务的地点,不超过50个字符,超出报错处理。
示例值:嗨客时尚主题展餐厅
服务结束位置 end_location string[1,50] 1、实际结束使用服务的地点. 不超过50个字符,超出报错处理。
【建议】
服务在同一地点开始和结束时,不传入该字段。
示例值:嗨客时尚主题展餐厅
商户数据包 attach string[1,256] 商户数据包,可存放本订单所需信息,需要先urlencode后传入,总长度不大于256字符,超出报错处理。
示例值:Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald
商户回调地址 notify_url string[1,255] 商户接收扣款成功回调通知的地址。
示例值:https://api.test.com
总金额 total_amount uint64 1、金额:数字,必须≥0(单位:分)
2、总金额 =(完结付费项目1…+完结付费项目n)-(完结商户优惠项目1…+完结商户优惠项目n)
示例值:50000

返回示例


> 200 Response
{
  "post_payments" : [ {
    "amount" : 40000,
    "name" : "就餐费用服务费",
    "count" : 4,
    "description" : "就餐人均100元服务费:100/小时"
  }, {
    "amount" : 2000,
    "name" : "就餐费用服务费",
    "count" : 1,
    "description" : "就餐人均100元服务费:100/小时"
  } ],
  "mchid" : "1230000109",
  "service_introduction" : "某某酒店",
  "notify_url" : "https://api.test.com",
  "state_description" : "MCH_COMPLETE",
"out_order_no" : "1234323JKHDFE1243252",
  "time_range" : {
    "start_time" : "20091225091010",
    "end_time_remark" : "备注2",
    "end_time" : "20091225121010",
    "start_time_remark" : "备注1"
  },
  "total_amount" : 50000,
  "service_id" : "500001",
  "appid" : "wxd678efh567hg6787",
  "location" : {
    "start_location" : "嗨客时尚主题展餐厅",
    "end_location" : "嗨客时尚主题展餐厅"
  },
  "state" : "FINISHED",
  "attach" : "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald",
  "order_id" : "15646546545165651651",
  "post_discounts" : [ {
    "amount" : 100,
    "name" : "满20减1元",
    "count" : 2,
    "description" : "不与其他优惠叠加"
  }, {
    "amount" : 100,
    "name" : "满20减1元",
    "count" : 2,
    "description" : "不与其他优惠叠加"
  } ]
}
                                

    http://2323weixin.qq.com
                                

错误码公共错误码

状态码 错误码 描述 解决方案
500 SYSTEM_ERROR 系统错误 5开头的状态码都为系统问题,请使用相同参数稍后重新调用
400 PARAM_ERROR 参数错误 根据错误提示,传入正确参数
403 NO_AUTH 商户信息不合法 登录商户平台核对,传入正确信息
429 FREQUENCY_LIMITED 频率超限 请求量不要超过接口调用频率限制
400 INVALID_REQUEST 请求参数符合参数格式,但不符合业务规则 请确认相同单号是否使用了不同的参数
404 ORDER_NOT_ EXIST 订单不存在 确认入参,传入正确单据
400 INVALID_ORDER_STATE 单据状态错误 确认操作是否符合流程
400 ORDER_CANCELED 单据已取消 当前状态无需操作
400 ORDER_DONE 订单已完成 当前状态无需操作

版本说明

关闭
V1.0
2020.04.23
1. 创单结单合并接口上线

技术咨询

反馈有奖