基础支付
JSAPI支付
APP支付
H5支付
Native支付
小程序支付
合单支付
付款码支付
经营能力
微信支付分(公共API)
微信支付分(免确认预授权模式)
微信支付分(需确认模式)
支付即服务
行业方案
智慧商圈
微信支付分停车服务
电子发票
营销工具
代金券
商家券
委托营销
支付有礼
小程序发券插件
H5发券
图片上传(营销专用)
现金红包
资金应用
商家转账到零钱
分账
风险合规
消费者投诉2.0
其他能力
清关报关
图片上传
视频上传
微信支付平台证书

创建支付分订单API

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


用户申请使用服务时,商户可通过此接口申请创建微信支付分订单。


注意:

•免确认模式下创单成功返回的state是DOING:进行中;state_description:USER_CONFIRM:用户确认。

•如免确认模式下返回的是CREATED:商户已创建服务订单,则为创单失败。

•API参数涉及时间参数时需注意,可能由于商户时钟系统和微信支付分时钟系统,取当前时间存在一定误差。可能导致在API调用出现失败情况。因此商户在传入时间参数时需预留一定误差时间

接口说明

适用对象:直连商户

请求URL:https://api.mch.weixin.qq.com/v3/payscore/serviceorder

请求方式:POST


path 指该参数为路径参数

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

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


请求参数

参数名 变量 类型[长度限制] 必填 描述
商户服务订单号 out_order_no string[1,32] body 商户系统内部服务订单号(不是交易单号),要求此参数只能由数字、大小写字母_-|*组成,且在同一个商户号下唯一。详见[商户订单号]。
示例值:1234323JKHDFE1243252
应用ID appid string[1,32] body 微信为调用商户分配的公众账号ID,接口传入的appid应该为公众号的appid和小程序的appid(在mp.weixin.qq.com申请的)或APP的appid(在open.weixin.qq.com申请的)。
校验规则:
1、该appid需要与调用接口的商户号(即请求头中的商户号)有绑定关系,若未绑定,可参考该指引完成绑定(商家商户号与AppID账号关联管理);
2、该appid需要在支付分系统中先进行配置
示例值:wxd678efh567hg6787
服务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 条件选填 此付费项目总金额,大于等于0,单位为分,等于0时代表不需要扣费,只能为整数。如果填写了“付费项目名称”,则amount或description必须填写其一,或都填。
示例值:40000
计费说明 description string[1,30] 条件选填 描述计费规则,不超过30个字符,超出报错处理。如果填写了“付费项目名称”,则amount或description必须填写其一,或都填。
示例值:就餐人均100元,服务费:100/小时
付费数量 count int32 付费项目的数量。
特殊规则:数量限制100,不填时默认1。
示例值:4
+后付费商户优惠 post_discounts array body后付费商户优惠列表,最多包含30条商户优惠。
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
优惠名称 name string[1,20] 条件选填 优惠名称说明;name和description若填写,则必须同时填写,优惠名称不可重复描述。
示例值:满20减1元
优惠说明 description string[1,30] 条件选填 优惠使用条件说明。
name和description若填写,则必须同时填写。
示例值:不与其他优惠叠加
优惠数量

count

int32

优惠的数量。
特殊规则:数量限制100,不填时默认1
示例值:2
+服务时间段 time_range object body 服务时间范围
参数名 变量 类型[长度限制] 必填 描述
服务开始时间 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] 服务开始时间备注说明,服务开始时间有填时,可填写服务开始时间备注,不超过20个字符,超出报错处理。
示例值:开始租借日期
预计服务结束时间 end_time string[1,14] 用户端展示用途,支持两种格式:yyyyMMddHHmmss和yyyyMMdd
  1. ● 传入20091225091010表示2009年12月25日9点10分10秒。
  2. ● 传入20091225默认时间为2009年12月25日
根据传入时间精准度进行校验
1、若传入时间精准到秒,则校验精准到秒:
1)【预计服务结束时间】>【服务开始时间】
2)【预计服务结束时间】>【商户调用接口时间+1分钟】
2、若传入时间精准到日,则校验精准到日:
1)【预计服务结束时间】>=【服务开始时间】
2)【预计服务结束时间】>=【商户调用接口时间】
建议
   1、用户下单时【未确定】服务结束时间,不填写。
   2、用户下单时【已确定】服务结束时间,填写。
示例值:20091225121010
预计服务结束时间备注 end_time_remark string[1,20] 预计服务结束时间备注说明,预计服务结束时间有填时,可填写预计服务结束时间备注,不超过20个字符,超出报错处理。
示例值:结束租借时间
+服务位置 location object body服务位置信息
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
服务开始地点 start_location string[1,50] 开始使用服务的地点,不超过50个字符,超出报错处理。
【建议】
   1、用户下单时【未确定】服务结束地点,不填写。
   2、服务在同一地点开始和结束,不填写。
   3、用户下单时【已确定】服务结束地点,填写。
示例值:嗨客时尚主题展餐厅
预计服务结束位置 end_location string[1,50] 条件选填 1、结束使用服务的地点,不超过50个字符,超出报错处理 。
2、填写了服务开始地点,才能填写服务结束地点。
示例值:嗨客时尚主题展餐厅
+订单风险金 risk_fund object body订单风险金信息
参数名 变量 类型[长度限制] 必填 描述
风险金名称 name string[1,64] 枚举值:
【先免模式】(评估不通过可交押金)可填名称为
DEPOSIT:押金
ADVANCE:预付款
CASH_DEPOSIT:保证金
【先享模式】(评估不通过不可使用服务)可填名称为
ESTIMATE_ORDER_COST:预估订单费用
示例值:DEPOSIT
风险金额 amount int64 1、数字,必须>0(单位分)。
2、风险金额≤服务ID的风险金额上限。
3、当商户优惠字段为空时,付费项目总金额≤服务ID的风险金额上限 (未填写金额的付费项目,视为该付费项目金额为0)。
4、完结订单的总金额和风险金额的关系。
    1)【评估不通过:交押金】模式:总金额≤创单时填写的“订单风险金额”
    2)【评估不通过:拒绝】模式:总金额≤“每个服务ID的风险金额上限”
示例值:10000
风险说明 description string[1,30] 文字,不超过30个字。
示例值:就餐的预估费用
商户数据包 attach string[1,256] body商户数据包可存放本订单所需信息,需要先urlencode后传入。 当商户数据包总长度超出256字符时,报错处理。
注意:创单接口的商户数据包和支付分订单的对账单中返回的商户数据包实际上是不一致的,只和查单、回调中返回的商户数据包一致。
示例值:Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald
商户回调地址 notify_url string[1,255] body商户接收用户确认订单和付款成功回调通知的地址。
示例值:https://api.test.com
用户标识 openid string[1,128] 条件选填 body微信用户在商户对应appid下的唯一标识。
免确认订单:必填
需确认订单:不填
获取用户openid指引
示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
是否需要用户确认 need_user_confirm bool body枚举值:
false:免确认订单
true:需确认订单
默认值true
示例值:true

请求示例


{
  "out_order_no": "1234323JKHDFE1243252",
  "appid": "wxd678efh567hg6787",
  "service_id": "500001",
  "service_introduction": "某某酒店",
  "post_payments": [
    {
      "name": "就餐费用服务费",
      "amount": 4000,
      "description": "就餐人均100元服务费:100/小时",
      "count": 1
    }
  ],
  "post_discounts": [
    {
      "name": "满20减1元",
      "description": "不与其他优惠叠加"
    }
  ],
  "time_range": {
    "start_time": "20091225091010",
    "end_time": "20091225121010"
  },
  "location": {
    "start_location": "嗨客时尚主题展餐厅",
    "end_location": "嗨客时尚主题展餐厅"
  },
  "risk_fund": {
    "name": "ESTIMATE_ORDER_COST",
    "amount": 10000,
    "description": "就餐的预估费用"
  },
  "attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald",
  "notify_url": "https://api.test.com",
  "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
  "need_user_confirm": true
}
    
{
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:服务订单已失效
示例值:CREATED

订单状态说明 state_description string (32) 对服务订单"进行中"状态的附加说明。
1、USER_CONFIRM:用户确认
2、MCH_COMPLETE:商户完结
示例值:MCH_COMPLETE
+后付费项目 post_payments array 后付费项目列表,最多包含100条付费项目。
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
付费项目名称 name string[1,20] 相同订单号下不能出现相同的付费项目名称(付费项目名称为“商品信息”时除外,即可传入多条“商品信息”),当参数长度超过20个字符时,报错处理。
示例值:就餐费用, 服务费
金额 amount int64 条件选填 此付费项目总金额,大于等于0,单位为分,等于0时代表不需要扣费,只能为整数。如果填写了“付费项目名称”,则amount或description必须填写其一,或都填。
示例值:40000
计费说明 description string[1,30] 条件选填 描述计费规则,不超过30个字符,超出报错处理。如果填写了“付费项目名称”,则amount或description必须填写其一,或都填。
示例值:就餐人均100元,服务费:100/小时
付费数量 count int32 付费项目的数量。
示例值:4
+后付费商户优惠 post_discounts array 后付费商户优惠,最多包含30条付费项目。
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
优惠名称 name string[1,20] 优惠名称说明。
示例值:满20减1元
优惠说明 description string[1,30] 优惠使用条件说明。
如果填写了name(优惠名称)和description(优惠说明)其中一个字段内容,则另一个字段也必须填写。
示例值:不与其他优惠叠加
优惠金额 amount int64 优惠金额,只能为整数,详见支付金额
示例值:100
优惠数量 count int32 优惠的数量。
特殊规则:数量限制100,不填时默认1。
示例值:2
+订单风险金 risk_fund object 订单风险金信息
参数名 变量 类型[长度限制] 必填 描述
风险金名称 name string[1,64] 枚举值:
【先免模式】(评估不通过可交押金)可填名称为
DEPOSIT:押金
ADVANCE:预付款
CASH_DEPOSIT:保证金
【先享模式】(评估不通过不可使用服务)可填名称为
ESTIMATE_ORDER_COST:预估订单费用
示例值:DEPOSIT
风险金额 amount int64 1、数字,必须>0(单位分)。
2、风险金额≤服务ID的风险金额上限。
3、当商户优惠字段为空时,付费项目总金额≤服务ID的风险金额上限 (未填写金额的付费项目,视为该付费项目金额为0)。
4、完结订单的总金额和风险金额的关系。
    1)【评估不通过:交押金】模式:总金额≤创单时填写的“订单风险金额”
    2)【评估不通过:拒绝】模式:总金额≤“每个服务ID的风险金额上限”
示例值: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] 服务开始时间备注说明,服务开始时间有填时,可填写服务开始时间备注,不超过20个字符,超出报错处理。
示例值:开始租借日期
预计服务结束时间 end_time string[1,14] 用户端展示用途,支持两种格式:yyyyMMddHHmmss和yyyyMMdd
  1. ● 传入20091225091010表示2009年12月25日9点10分10秒。
  2. ● 传入20091225默认时间为2009年12月25日
根据传入时间精准度进行校验
1、若传入时间精准到秒,则校验精准到秒:
1)【预计服务结束时间】>【服务开始时间】
2)【预计服务结束时间】>【商户调用接口时间+1分钟】
2、若传入时间精准到日,则校验精准到日:
1)【预计服务结束时间】>=【服务开始时间】
2)【预计服务结束时间】>=【商户调用接口时间】
建议
   1、用户下单时【未确定】服务结束时间,不填写。
   2、用户下单时【已确定】服务结束时间,填写。
示例值:20091225121010
预计服务结束时间备注 end_time_remark string[1,20] 预计服务结束时间备注说明,预计服务结束时间有填时,可填写预计服务结束时间备注,不超过20个字符,超出报错处理。
示例值:结束租借日期
+服务位置 location object 服务使用信息。
如果传入,用户侧则显示此参数。
参数名 变量 类型[长度限制] 必填 描述
服务开始地点 start_location string[1,50] 开始使用服务的地点,不超过50个字符,超出报错处理。
【建议】
 1、用户下单时【未确定】服务结束地点,不填写。
 2、服务在同一地点开始和结束,不填写。
 3、用户下单时【已确定】服务结束地点,填写。
示例值:嗨客时尚主题展餐厅
服务结束位置 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
跳转微信侧小程序订单数据 package string[1,300] 用户跳转到微信侧小程序订单数据,需确认模式特有API中调起支付分-确认订单传入。该数据一小时内有效。
示例值:DJIOSQPYWDxsjdldeuwhdodwxasd_dDiodnwjh9we

返回示例


{
  "appid": "wxd678efh567hg6787",
  "mchid": "1230000109",
  "out_order_no": "1234323JKHDFE1243252",
  "service_id": "500001",
  "service_introduction": "某某酒店",
  "state": "CREATED",
  "state_description": "MCH_COMPLETE",
  "post_payments": [
    {
      "name": "就餐费用服务费",
      "amount": 4000,
      "description": "就餐人均100元服务费:100/小时",
      "count": 1
    }
  ],
  "post_discounts": [
    {
      "name": "满20减1元",
      "description": "不与其他优惠叠加"
    }
  ],
  "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",
  "package": " DJIOSQPYWDxsjdldeuwhdodwxasd_dDiodnwjh9we "
}
                                

    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 订单已完成 当前状态无需操作

技术咨询

文档反馈