完结支付分订单API

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


完结微信支付分订单。用户使用服务完成后,商户可通过此接口完结订单。

特别说明

• 完结接口调用成功后,微信支付将自动发起免密代扣。 若扣款失败,微信支付将自动再次发起免密代扣(按照一定频次),直到扣成功为止。

接口说明

适用对象:直连商户

请求URL:https://api.mch.weixin.qq.com/v3/payscore/serviceorder/{out_order_no}/complete

请求方式:POST

前置条件:服务订单状态为“进行中”且订单状态说明需为[USER_CONFIRM:用户确认]

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


path 指该参数为路径参数

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

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

请求参数

参数名 变量 类型[长度限制] 必填 描述
商户服务订单号 out_order_no string[1,32] path 商户系统内部服务订单号(不是交易单号),与创建订单时一致
示例值:1234323JKHDFE1243252
公众账号ID appid string[1,32] body 微信公众平台分配的与传入的商户号建立了支付绑定关系的appid,可在公众平台查看绑定关系,此参数需在本系统先进行配置。
示例值:wxd678efh567hg6787
服务ID service_id string[1,32] body 服务订单的主键,唯一定义此资源的标识
示例值:500001
+后付费项目 post_payments array body 后付费项目列表,最多包含100条付费项目
参数名 变量 类型[长度限制] 必填 描述
付费项目名称 name string[1,20] 相同订单号下不能出现相同的付费项目名称,当参数长度超过20个字符时,报错处理。
示例值:就餐费用, 服务费
金额 amount int64 此付费项目总金额,大于等于0,单位为分,等于0时代表不需要扣费,只能为整数,详见支付金额
示例值:40000
计费说明 description string[1,30] 描述计费规则,不超过30个字符,超出报错处理
示例值:就餐人均100元,服务费:100/小时
付费数量 count uint32 付费项目的数量
特殊规则:数量限制100,不填时默认1
示例值:4
+后付费商户优惠 post_discounts array body 后付费商户优惠列表,最多包含30条商户优惠
如果传入,用户侧则显示此参数
参数名 变量 类型[长度限制] 必填 描述
优惠名称 name string[1,20] 优惠名称说明
示例值:满20减1元
优惠说明 description string[1,30] 优惠使用条件说明
示例值:不与其他优惠叠加
优惠金额 amount int64 条件选填 优惠金额,单位为分,只能为整数,详见支付金额。 同时,若填写了优惠名称,则优惠金额必填
示例值:100
优惠数量 count uint32 优惠的数量
特殊规则:数量限制100,不填时默认1
示例值:2
总金额 total_amount int64 body 1、金额:数字,必须≥0(单位:分),只能为整数,详见支付金额
2、总金额 =(完结付费项目1…+完结付费项目n)-(完结商户优惠项目1…+完结商户优惠项目n)
3、总金额上限
  1)【评估不通过:交押金】模式:总金额≤创单时填写的“订单风险金额”
  2)【评估不通过:拒绝】模式:总金额≤“每个服务ID的风险金额上限”
示例值:50000
+服务时间段 time_range object 条件选填 body 服务时间范围,创建订单未填写服务结束时间,则完结的时候,服务结束时间必填
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
服务开始时间 start_time string[1,14] 用户端展示用途
用户下单时确认的服务开始时间(比如用户今天下单,明天开始接受服务,这里指的是明天的服务开始时间).
1、不能比【商户使用创建订单时间】早;
2、不能比【商户使用完结订单时间】晚。
3、根据传入时间精度进行校验,若传入时间精确到秒,则校验精确到秒;若传入时间精确到日,则校验精确到日。
4、要求时间格式必须与首次传入格式保持一致,在一致前提下可修改。
支持三种格式:“yyyyMMddHHmmss”、“yyyyMMdd” 和 “OnAccept”。
● 传入20091225091010表示2009年12月25日9点10分10秒
● 传入20091225默认认为时间为2009年12月25日
● 传入OnAccept表示用户确认订单成功时间为【服务开始时间】
【服务开始时间】不能早于调用接口时间。
【建议】
   实际服务开始时间与创建订单填写的“服务开始时间”一致时,不填写
示例值:20091225091010
服务开始时间备注 start_time_remark string[1,20] 服务开始时间备注说明。
1、服务开始时间有填时,可填写服务开始时间备注
2、若与【服务开始时间备注】不一致,则以【实际服务开始时间备注】为准,不超过20个字符,超出报错处理。
示例值:出账日
服务结束时间 end_time string[1,14] 条件选填 创建订单未填写服务结束时间,则完结的时候,服务结束时间必填
1、【实际服务结束时间】>【服务开始时间】。
2、不能比【商户使用完结订单时间】晚。
3、要求时间格式必须与首次传入格式保持一致,在一致前提下可修改。
4、若创建时,服务开始时间为格式3=OnAccept,则完结时间默认精确到秒级。
用户端展示用途,支持两种格式:yyyyMMddHHmmss和yyyyMMdd
  1. ● 传入20091225091010表示2009年12月25日9点10分10秒
  2. ● 传入20091225默认认为时间为2009年12月25日
【建议】
   实际服务结束实际和预计服务结束时间一致时,不填写
示例值:20091225121010
服务结束时间备注 end_time_remark string[1,20] 服务结束时间备注说明。
1、服务结束时间有填时,可填写服务结束时间备注
2、若与【服务结束时间备注】不一致,则以【实际服务结束时间备注】为准,不超过20个字符,超出报错处理。
示例值:结束租借时间
+服务位置 location object body 服务位置
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
服务结束位置 end_location string[1,50] 条件选填 结束使用服务的地点,不超过50个字符,超出报错处理 。 创建订单传入了【服务开始地点】,此项才能填写
【建议】
   1、预计结束地点为空时,实际结束地点与开始地点相同,不填写
   2、预计结束地点不为空时,实际结束地点与预计结束地点相同,不填写
示例值:嗨客时尚主题展餐厅
微信支付服务分账标记 profit_sharing bool body 完结订单分账接口标记。分账开通流程,详见
false:不分账,默认:false
true:分账。
示例值:false
订单优惠标记 goods_tag string(32) body 订单优惠标记,代金券或立减金优惠的参数,说明详见代金券或立减金优惠
示例值:goods_tag

请求示例


{
  "appid": "wxd678efh567hg6787",
  "service_id": "500001",
  "post_payments": [
    {
      "name": "就餐费用服务费",
      "amount": 4000,
      "description": "就餐人均100元服务费:100/小时",
      "count": 1
    }
  ],
  "post_discounts":[
  {
    "name": "满4000减100元",
    "description": "不与其他优惠叠加",
    "amount": 100
  }
  ],
  "total_amount": 3900,
  "time_range": {
    "start_time": "20091225091010",
    "end_time": "20091225121010"
  },
  "location": {
    "end_location": "嗨客时尚主题展餐厅"
  },
  "profit_sharing": false
}
    
{
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
服务信息 service_introduction string[1,20] 服务信息,用于介绍本订单所提供的服务
示例值:某某酒店
服务订单状态 state string[1,32] 表示当前单据状态。
1、CREATED:商户已创建服务订单
2、DOING:服务订单进行中
3、DONE:服务订单完成
4、REVOKED:商户取消服务订单
5、EXPIRED:服务订单已失效,"商户已创建服务订单"状态超过30天未变动,则订单失效
示例值:CREATED
订单状态说明 state_description string[1,32] 对服务订单"进行中"状态的附加说明
USER_CONFIRM:用户确认
MCH_COMPLETE:商户完结
示例值:MCH_COMPLETE
商户收款总金额 total_amount int64 总金额,大于等于0的数字,单位为分,只能为整数,详见支付金额
此参数需满足:总金额=后付费项目金额之和-后付费商户优惠项目金额之和,且小于等于订单风险金额。取消订单时,该字段必须为0。
示例值:40000
+后付费项目 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[1,20] 优惠名称说明
示例值:满20减1元
优惠说明 description string[1,30] 优惠使用条件说明
示例值:不与其他优惠叠加
优惠金额 amount int64 优惠金额,只能为整数,详见支付金额
若填写了付费项目名称,此项必填。
示例值:100
优惠数量 count uint32 优惠的数量
特殊规则:数量限制100,不填时默认1
示例值:2
+订单风险金 risk_fund object 订单风险金信息
参数名 变量 类型[长度限制] 必填 描述
风险金名称 name string[1,64] 枚举值:
【先免模式】(评估不通过可交押金)可填名称为
DEPOSIT:押金
ADVANCE:预付款
CASH_DEPOSIT:保证金
【先享模式】(评估不通过不可使用服务)可填名称为
ESTIMATE_ORDER_COST:预估订单费用
示例值:ESTIMATE_ORDER_COST
风险金额 amount int64 1、数字,必须>0(单位分)
2、风险金额≤每个服务ID的风险金额上限
3、当商户优惠字段为空时,付费项目总金额≤服务ID的风险金额上限 (未填写金额的付费项目,视为该付费项目金额为0)
示例值:10000
风险说明 description string[1,30] 文字,不超过30个字
示例值:就餐的预估费用
+服务时间段 time_range object 服务时间范围;
如果传入,用户侧则显示此参数
参数名 变量 类型[长度限制] 必填 描述
服务开始时间 start_time string[1,14] 用户端展示用途
用户下单时确认的服务开始时间(比如用户今天下单,明天开始接受服务,这里指的是明天的服务开始时间).
1、不能比【商户使用创建订单时间】早;
2、不能比【商户使用完结订单时间】晚。
3、根据传入时间精度进行校验,若传入时间精确到秒,则校验精确到秒;若传入时间精确到日,则校验精确到日。
4、要求时间格式必须与首次传入格式保持一致,在一致前提下可修改。
支持三种格式:“yyyyMMddHHmmss”、“yyyyMMdd” 和 “OnAccept”。
● 传入20091225091010表示2009年12月25日9点10分10秒
● 传入20091225默认认为时间为2009年12月25日0点0分0秒
● 传入OnAccept表示用户确认订单成功时间为【服务开始时间】
【服务开始时间】不能早于调用接口时间。
【建议】
   实际服务开始时间与创建订单填写的“服务开始时间”一致时,不填写
示例值:20091225091010
服务开始时间备注 start_time_remark string[1,20] 服务开始时间备注说明。
1、服务开始时间有填时,可填写服务开始时间备注
2、若与【服务开始时间备注】不一致,则以【实际服务开始时间备注】为准。
示例值:开始租借日期
服务结束时间 end_time string[1,14] 条件选填 创建订单未填写服务结束时间,则完结的时候,服务结束时间必填
1、【实际服务结束时间】>【服务开始时间】。
2、不能比【商户使用完结订单时间】晚。
3、要求时间格式必须与首次传入格式保持一致,在一致前提下可修改。
4、若创建时,服务开始时间为格式3=OnAccept,则完结时间默认精确到秒级。
用户端展示用途,支持两种格式:yyyyMMddHHmmss和yyyyMMdd
  1. ● 传入20091225091010表示2009年12月25日9点10分10秒
  2. ● 传入20091225默认认为时间为2009年12月25日23点59分59秒
【建议】
   实际服务结束实际和预计服务结束时间一致时,不填写
示例值:20091225121010
服务结束时间备注 end_time_remark string[1,20] 服务结束时间备注说明。
1、服务结束时间有填时,可填写服务结束时间备注
2、若与【服务结束时间备注】不一致,则以【实际服务结束时间备注】为准。
示例值:结束租借日期
+服务位置 location object 服务使用信息;
如果传入,用户侧则显示此参数
参数名 变量 类型[长度限制] 必填 描述
服务开始地点 start_location string[1,50] 开始使用服务的地点,不超过50个字符,超出报错处理;
示例值:嗨客时尚主题展餐厅
服务结束位置 end_location string[1,50] 结束使用服务的地点,不超过50个字符,超出报错处理
示例值:嗨客时尚主题展餐厅
微信支付服务订单号 order_id string[1,64] 微信支付服务订单号,每个微信支付服务订单号与商户号下对应的商户服务订单号一一对应
示例值:15646546545165651651
是否需要收款 need_collection bool true:微信支付分代收款
false:无需微信支付分代收款
示例值:true

返回示例


{
  "appid": "wxd678efh567hg6787",
  "mchid": "1230000109",
  "out_order_no": "1234323JKHDFE1243252",
  "service_id": "500001",
  "service_introduction": "某某酒店",
  "state": "DOING",
  "state_description": "",
  "total_amount": 3900,
  "post_payments": [
    {
      "name": "就餐费用服务费",
      "amount": 1,
      "description": "就餐人均100元服务费:100/小时",
      "count": 1
    }
  ],
  "post_discounts": [
    {
      "name": "满4000减100元",
      "description": "不与其他优惠叠加",
      "amount": 100
    }
  ],
  "risk_fund": {
    "name": "ESTIMATE_ORDER_COST",
    "amount": 4000,
    "description": "就餐的预估费用"
  },
  "time_range": {
    "start_time": "20091225091010",
    "end_time": "20091225121010"
  },
  "location": {
    "start_location": "嗨客时尚主题展餐厅",
    "end_location": "嗨客时尚主题展餐厅"
  },
  "order_id": "15646546545165651651",
  "need_collection": true
}
                                

    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.5
2020.06.02
1. 去除前置条件
V1.4
2020.03.25
1. 请求字段新增订单优惠标识(goods_tag)字段
V1.3
2020.03.05
1. 服务订单状态,枚举值:EXPIRED “状态超过1小时未变动,则订单失效”调整为“ED 状态超过30天未变动,则订单失效”
V1.2
2019.12.27
1. 服务时间段新增时间备注字段,时间添加精准校验

技术咨询

反馈有奖