同步服务订单信息API

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


由于收款商户进行的某些“线下操作”会导致微信支付侧的订单状态与实际情况不符。例如,用户通过线下付款的方式已经完成支付,而微信支付侧并未支付成功,此时可能导致用户重复支付。因此商户需要通过订单同步接口将订单状态同步给微信支付,修改订单在微信支付系统中的状态。

接口说明

适用对象:直连商户

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

请求方式:POST

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

前提条件:同步商户渠道收款成功信息时,即场景类型=“Order_Paid”,订单的状态需为[MCH_COMPLETE:商户完结订单]


path 指该参数为路径参数

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

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


请求参数

参数名 变量 类型[长度限制] 必填 描述
商户服务订单号 out_order_no string[1,32] path 商户系统内部订单号(不是交易单号),要求此参数只能由数字、大小写字母_-|*组成,且在同一个商户号下唯一,详见「商户订单号」,需要和创建订单的商户服务订单号一致。
示例值:1234323JKHDFE1243252
公众账号ID appid string[1,32] body 微信公众平台分配的与传入的商户号建立了支付绑定关系的appid,可在公众平台查看绑定关系。
此参数需在本系统先进行配置,并与创建订单时的appid保持一致。
示例值:wxd678efh567hg6787
服务ID service_id string[1,32] body 该服务ID有本接口对应产品的权限,需要与创建订单时保持一致。
示例值:500001
场景类型 type string[1,32] body 场景类型为“Order_Paid”,字符串表示“订单收款成功” 。
示例值:Order_Paid
+ 内容信息详情 detail  object body 场景类型为Order_Paid时,为必填项。
参数名 变量 类型[长度限制] 必填 描述
收款成功时间 paid_time string[1,14] 支付成功时间,支持两种格式:yyyyMMddHHmmss和yyyyMMdd

  1. ● 传入20091225091010表示2009年12月25日9点10分10秒。
  2. ● 传入20091225默认认为时间为2009年12月25日0点0分0秒。

用户通过其他方式付款成功的实际时间需满足条件:服务开始时间<调用商户完结订单接口的时间<用户通过其他方式付款成功的实际时间≤商户调用支付分订单同步接口的时间。
【服务开始时间】
1、当完结订单有填写【实际服务开始时间】时,【服务开始时间】=完结订单【实际服务开始时间】。
2、当完结订单未填写【实际服务开始时间】时,【服务开始时间】=创建订单【服务开始时间】
场景类型为Order_Paid时,必填。
支持两种格式:yyyyMMddHHmmss和yyyyMMdd
● 传入20091225091010表示2009年12月25日9点10分10秒。
● 传入20091225表示时间为2009年12月25日23点59分59秒。
注意:微信支付分会根据此时间更新用户侧的守约记录、负面记录信息;因此请务必如实填写用户实际付款成功时间,以免造成不必要的客诉。
示例值:20091225091210

请求示例


{
  "appid": "wxd678efh567hg6787",
  "service_id": "500001",
  "type": "Order_Paid",
  "detail": {
    "paid_time": "20091225091210"
  }
}
    
{
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] 服务信息,用于介绍本订单所提供的服务。
示例值:某某酒店
用户标识 openid string[1,128] 微信用户在商户对应appid下的唯一标识。
示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
服务订单状态 state string[1,32]

表示当前单据状态。

枚举值:
CREATED:商户已创建服务订单
DOING:服务订单进行中
DONE:服务订单完成
REVOKED:商户取消服务订单
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时代表不需要扣费,只能为整数,详见支付金额

如果填写了“付费项目名称”,则amount或description必须填写其一,或都填。
示例值:40000

计费说明 description string[1,30] 描述计费规则,不超过30个字符,超出报错处理。
示例值:就餐人均100元,服务费:100/小时
付费数量 count uint64 付费项目的数量。
示例值:4
+后付费商户优惠 post_discounts array 后付费商户优惠,最多包含30条付费项目。
参数名 变量 类型[长度限制] 必填 描述
优惠名称 name string[1,20] 优惠名称说明。
示例值:满20减1元
优惠说明 description string[1,30] 优惠使用条件说明。
如果填写了name(优惠名称)和description(优惠说明)其中一个字段内容,则另一个字段也必须填写。
示例值:不与其他优惠叠加
优惠金额 amount int64 优惠金额,只能为整数,详见支付金额
示例值:100
+订单风险金 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] 用户端展示用途。
用户下单时确认的服务开始时间(比如用户今天下单,明天开始接受服务,这里指的是明天的服务开始时间)。
支持三种格式:yyyyMMddHHmmss、yyyyMMdd和 OnAccept
● 传入20091225091010表示2009年12月25日9点10分10秒。
● 传入20091225默认认为时间为2009年12月25日。
● 传入OnAccept表示用户确认订单成功时间为【服务开始时间】。
【服务开始时间】不能早于调用接口时间。
根据传入时间精准度进行校验
1、若传入时间精准到秒,则校验精准到秒。
2、若传入时间精准到日,则校验精准到日。
示例值:20091225091010
服务开始时间备注 start_time_remark string[1,20] 服务开始时间备注说明。
1、服务开始时间有填时,可填写服务开始时间备注,不超过20个字符,超出报错处理。
示例值:开始租借日期
服务结束时间 end_time string[1,14] 用户端展示用途,支持两种格式:yyyyMMddHHmmss和yyyyMMdd
  1. ● 传入20091225091010表示2009年12月25日9点10分10秒。
  2. ● 传入20091225默认认为时间为2009年12月25日。
根据传入时间精准度进行校验
1、若传入时间精准到秒,则校验精准到秒。
2、若传入时间精准到日,则校验精准到日。
示例值:20091225121010
服务结束时间备注 end_time_remark string[1,20] 服务结束时间备注说明,不超过20个字符,超出报错处理。
1、服务结束时间有填时,可填写服务结束时间备注
示例值:结束租借日期
+服务位置 location object 服务使用信息
参数名 变量 类型[长度限制] 必填 描述
服务开始地点 start_location string[1,50] 开始使用服务的地点,不超过50个字符,超出报错处理。
示例值:嗨客时尚主题展餐厅
服务结束位置 end_location string[1,50] 结束使用服务的地点,不超过50个字符,超出报错处理。
示例值:嗨客时尚主题展餐厅
商户数据包 attach string[1,256] 商户数据包,可存放本订单所需信息,需要先urlencode后传入,总长度不大于256字符,超出报错处理。
示例值:Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald
商户回调地址 notify_url string[1,255] 商户接收用户确认订单或扣款成功回调通知的地址。
示例值:https://api.test.com
微信支付服务订单号 order_id string[1,64] 微信支付服务订单号,每个微信支付服务订单号与商户号下对应的商户服务订单号一一对应。
示例值:15646546545165651651
是否需要收款 need_collection bool true:微信支付分代收款
false:无需微信支付分代收款
示例值:true
+收款信息 collection object 收款信息
参数名 变量 类型[长度限制] 必填 描述
收款状态 state string[1,32] USER_PAYING:待支付
USER_PAID:已支付
示例值:USER_PAID
总收款金额 total_amount int64 总金额,大于等于0的数字,单位为分,只能为整数,详见支付金额
此参数需满足:总金额=付费项目金额之和-商户优惠项目金额之和,且小于等于订单风险金额 。未使用服务、取消订单时,该字段必须为0。
示例值:50000
待收金额 paying_amount int64 等待用户付款金额,只能为整数,详见支付金额
示例值:40000
已收金额 paid_amount int64 用户已付款的金额,只能为整数,详见支付金额
示例值:10000
+收款明细列表 details array 收款明细列表
参数名 变量 类型[长度限制] 必填 描述
单笔收款金额 amount int64 单笔收款动作的金额,只能为整数,详见支付金额
示例值:10000
收款成功渠道 paid_type string[1,32] NEWTON:微信支付分
MCH:商户渠道
示例值:NEWTON
收款成功时间 paid_time string[1,14] 支付成功时间,支持两种格式:yyyyMMddHHmmss和yyyyMMdd
  1. ● 传入20091225091010表示2009年12月25日9点10分10秒。
  2. ● 传入20091225默认认为时间为2009年12月25日0点0分0秒。
示例值:20091225091210
微信支付交易单号 transaction_id string[1,200] 结单交易单号,等于普通支付接口中的transaction_id,可以使用该订单号在APP支付->API列表->查询订单申请退款。只有单据状态为USER_PAID,且收款成功渠道为支付分渠道,收款金额大于0,才会返回结单交易单号。
示例值:15646546545165651651

返回示例


{
  "appid": "wxd678efh567hg6787",
  "mchid": "1230000109",
  "service_id": "500001",
  "out_order_no": "1234323JKHDFE1243252",
  "service_introduction": "某某酒店",
  "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
  "state": "CREATED",
  "state_description": "MCH_COMPLETE",
  "total_amount": 3900,
  "post_payments": [
    {
      "name": "就餐费用服务费",
      "amount": 4000,
      "description": "就餐人均100元服务费:100/小时",
      "count": 1
    }
  ],
  "post_discounts": [
    {
      "name": "满20减1元",
      "description": "不与其他优惠叠加",
      "amount": 100
    }
  ],
  "risk_fund": {
    "name": "ESTIMATE_ORDER_COST",
    "amount": 10000,
    "description": "就餐的预估费用"
  },
  "time_range": {
    "start_time": "20091225091010",
    "end_time": "20091225121010"
  },
  "location": {
    "start_location": "嗨客时尚主题展餐厅",
    "end_location": "嗨客时尚主题展餐厅"
  },
  "attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald",
  "notify_url": "https://api.test.com",
  "order_id": "15646546545165651651",
  "need_collection": true,
  "collection": {
    "state": "USER_PAID",
    "total_amount": 3900,
    "paying_amount": 0,
    "paid_amount": 3900,
    "details": [
      {
        "amount": 10000,
        "paid_type": "NEWTON",
        "paid_time": "20091225091210",
        "transaction_id ": "15646546545165651651"
      }
    ]
  }
}
                                

    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.3
2020.03.05
1. 服务订单状态,枚举值:EXPIRED “状态超过1小时未变动,则订单失效”调整为“ED 状态超过30天未变动,则订单失效”
V1.2
2019.12.27
1. 服务时间段新增时间备注字段

技术咨询

反馈有奖