创建支付分订单API

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


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

接口说明

适用对象:微信支付分

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

请求方式:POST

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


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

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


请求参数

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

金额 amount int 条件选填 此付费项目总金额,大于等于0,单位为分,等于0时代表不需要扣费,只能为整数,详见支付金额。如果填写了“付费项目名称”,则amount或description必须填写其一,或都填。
示例值:40000
计费说明 description string(30) 条件选填 描述计费规则,不超过30个字符,超出报错处理。如果填写了“付费项目名称”,则amount或description必须填写其一,或都填。
示例值:就餐人均100元,服务费:100/小时
付费数量 count uint32 付费项目的数量。
特殊规则:数量限制100,不填时默认1。
示例值:4
+后付费商户优惠 post_discounts array query后付费商户优惠列表,最多包含30条商户优惠。
如果传入,用户侧则显示此参数。
参数名 变量 类型 必填 描述
优惠名称 name string(20) 条件选填 优惠名称说明;name和description若填写,则必须同时填写,优惠名称不可重复描述。
示例值:满20减1元
优惠说明 description string(30) 条件选填 优惠使用条件说明。
name和description若填写,则必须同时填写。
示例值:不与其他优惠叠加
优惠数量

count

uint32

优惠的数量。
特殊规则:数量限制100,不填时默认1
示例值:2
+服务时间段 time_range object query 服务时间范围
参数名 变量 类型 必填 描述
服务开始时间 start_time string(14) 用户端展示用途。
用户下单时确认的服务开始时间(比如用户今天下单,明天开始接受服务,这里指的是明天的服务开始时间)。
支持三种格式:yyyyMMddHHmmss、yyyyMMdd和 OnAccept
● 传入20091225091010表示2009年12月25日9点10分10秒。
● 传入20091225默认认为时间为2009年12月25日
● 传入OnAccept表示用户确认订单成功时间为【服务开始时间】。
根据传入时间精准度进行校验
1)若传入时间精准到秒,则校验精准到秒:【服务开始时间】>【商户调用创建订单接口时间
2)若传入时间精准到日,则校验精准到日:【服务开始时间】>=【商户调用创建订单接口时间】
示例值:20091225091010
服务开始时间备注 start_time_remark string(20) 服务开始时间备注说明,服务开始时间有填时,可填写服务开始时间备注,不超过20个字符,超出报错处理。
示例值:开始租借日期
预计服务结束时间 end_time string(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(20) 预计服务结束时间备注说明,预计服务结束时间有填时,可填写预计服务结束时间备注,不超过20个字符,超出报错处理。
示例值:结束租借时间
+服务位置 location object query服务位置信息
如果传入,用户侧则显示此参数。
参数名 变量 类型 必填 描述
服务开始地点 start_location string(50) 开始使用服务的地点,不超过50个字符,超出报错处理。
【建议】
   1、用户下单时【未确定】服务结束地点,不填写。
   2、服务在同一地点开始和结束,不填写。
   3、用户下单时【已确定】服务结束地点,填写。
示例值:嗨客时尚主题展餐厅
预计服务结束位置 end_location string(50) 条件选填 1、结束使用服务的地点,不超过50个字符,超出报错处理 。
2、填写了服务开始地点,才能填写服务结束地点。
示例值:嗨客时尚主题展餐厅
+订单风险金 risk_fund object query订单风险金信息
参数名 变量 类型 必填 描述
风险金名称 name string(64) 枚举值:
【先免模式】(评估不通过可交押金)可填名称为
DEPOSIT:押金
ADVANCE:预付款
CASH_DEPOSIT:保证金
【先享模式】(评估不通过不可使用服务)可填名称为
ESTIMATE_ORDER_COST:预估订单费用
示例值:DEPOSIT
风险金额 amount int 1、数字,必须>0(单位分)。
2、风险金额≤每个服务ID的风险金额上限。
3、当商户优惠字段为空时,付费项目总金额≤服务ID的风险金额上限 (未填写金额的付费项目,视为该付费项目金额为0)。
4、完结金额可大于、小于或等于风险金额。详细可见QA关于订单风险金额问题
示例值:10000
风险说明 description string(30) 文字,不超过30个字。
示例值:就餐的预估费用
商户数据包 attach string(256) query商户数据包可存放本订单所需信息,需要先urlencode后传入。 当商户数据包总长度超出256字符时,报错处理。
示例值:Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald
商户回调地址 notify_url string(255) query商户接收用户确认订单和付款成功回调通知的地址。
示例值:https://api.test.com
用户标识 openid string(128) 条件选填 query微信用户在商户对应appid下的唯一标识。
免确认订单:必填
需确认订单:不填
示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
是否需要用户确认 need_user_confirm bool query枚举值:
false:免确认订单
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(32) 调用接口提交的公众账号ID。
示例值:wxd678efh567hg6787
商户号 mchid string(32) 调用接口提交的商户号。
示例值:1230000109
商户服务订单号 out_order_no string(32) 调用接口提交的商户服务订单号。
示例值:1234323JKHDFE1243252
服务ID service_id string(32) 调用该接口提交的服务ID。
示例值:500001
服务信息 service_introduction string(20) 服务信息,用于介绍本订单所提供的服务。
示例值:某某酒店
服务订单状态 state string(32)

表示当前单据状态。

枚举值:
1、CREATED:商户已创建服务订单
2、DOING:服务订单进行中
3、DONE:服务订单完成
4、REVOKED:商户取消服务订单
5、EXPIRED:服务订单已失效,"商户已创建服务订单"状态超过1小时未变动,则订单失效
示例值:CREATED

订单状态说明 state_description string (32) 对服务订单"进行中"状态的附加说明。
1、USER_CONFIRM:用户确认
2、MCH_COMPLETE:商户完结
示例值:MCH_COMPLETE
+后付费项目 post_payments array 后付费项目列表,最多包含100条付费项目。
如果传入,用户侧则显示此参数。
参数名 变量 类型 必填 描述
付费项目名称 name string(20) 不超过20个字符,超出报错处理。
示例值:就餐费用, 服务费
金额 amount int 条件选填 此付费项目总金额,大于等于0,单位为分,等于0时代表不需要扣费,只能为整数,详见支付金额。 如果填写了“付费项目名称”,则amount或description必须填写其一,或都填。
示例值:40000
计费说明 description string(30) 条件选填 描述计费规则,不超过30个字符,超出报错处理。
示例值:就餐人均100元,服务费:100/小时
付费数量 count uint32 付费项目的数量。
示例值:4
+后付费商户优惠 post_discounts array 后付费商户优惠,最多包含30条付费项目。
如果传入,用户侧则显示此参数。
参数名 变量 类型 必填 描述
优惠名称 name string(20) 优惠名称说明。
示例值:满20减1元
优惠说明 description string(30) 优惠使用条件说明。
如果填写了name(优惠名称)和description(优惠说明)其中一个字段内容,则另一个字段也必须填写。
示例值:不与其他优惠叠加
优惠金额 amount int 优惠金额,只能为整数,详见支付金额
示例值:100
优惠数量 count uint32 优惠的数量。
特殊规则:数量限制100,不填时默认1。
示例值:2
+订单风险金 risk_fund object 订单风险金信息
参数名 变量 类型 必填 描述
风险金名称 name string(64) 枚举值:
【先免模式】(评估不通过可交押金)可填名称为
DEPOSIT:押金
ADVANCE:预付款
CASH_DEPOSIT:保证金
【先享模式】(评估不通过不可使用服务)可填名称为
ESTIMATE_ORDER_COST:预估订单费用
示例值:DEPOSIT
风险金额 amount uint32 1、整数,必须>0(单位分)。
2、风险金额≤每个服务ID的风险金额上限。
3、当商户优惠字段为空时,付费项目总金额≤服务ID的风险金额上限 (未填写金额的付费项目,视为该付费项目金额为0)。
4、完结金额可大于、小于或等于风险金额。详细可见QA关于订单风险金额问题
示例值:10000
风险说明 description string(30) 文字,不超过30个字。
示例值:就餐的预估费用
+服务时间段 time_range object 服务时间范围
参数名 变量 类型 必填 描述
服务开始时间 start_time string(14) 用户端展示用途。
用户下单时确认的服务开始时间(比如用户今天下单,明天开始接受服务,这里指的是明天的服务开始时间)。
支持三种格式:yyyyMMddHHmmss、yyyyMMdd和 OnAccept
● 传入20091225091010表示2009年12月25日9点10分10秒。
● 传入20091225默认认为时间为2009年12月25日
● 传入OnAccept表示用户确认订单成功时间为【服务开始时间】。
根据传入时间精准度进行校验
1)若传入时间精准到秒,则校验精准到秒:【服务开始时间】>【商户调用创建订单接口时间】
2)若传入时间精准到日,则校验精准到日:【服务开始时间】>=【商户调用创建订单接口时间】
示例值:20091225091010
服务开始时间备注 start_time_remark string(20) 服务开始时间备注说明,服务开始时间有填时,可填写服务开始时间备注,不超过20个字符,超出报错处理。
示例值:开始租借日期
预计服务结束时间 end_time string(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(20) 预计服务结束时间备注说明,预计服务结束时间有填时,可填写预计服务结束时间备注,不超过20个字符,超出报错处理。
示例值:结束租借日期
+服务位置 location object 服务使用信息。
如果传入,用户侧则显示此参数。
参数名 变量 类型 必填 描述
服务开始地点 start_location string(50) 开始使用服务的地点,不超过50个字符,超出报错处理。
【建议】
 1、用户下单时【未确定】服务结束地点,不填写。
 2、服务在同一地点开始和结束,不填写。
 3、用户下单时【已确定】服务结束地点,填写。
示例值:嗨客时尚主题展餐厅
服务结束位置 end_location string(50) 结束使用服务的地点,不超过50个字符,超出报错处理。
示例值:嗨客时尚主题展餐厅
商户数据包 attach string(256) 商户数据包,可存放本订单所需信息,需要先urlencode后传入,总长度不大于256字符,超出报错处理。
示例值:Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald
商户回调地址 notify_url string(255) 商户接收用户确认订单或扣款成功回调通知的地址。
示例值:https://api.test.com
微信支付服务订单号 order_id string(64) 微信支付服务订单号,每个微信支付服务订单号与商户号下对应的商户服务订单号一一对应。
示例值:15646546545165651651
跳转微信侧小程序订单数据 package string(300) 用于跳转到微信侧小程序订单数据,跳转到微信侧小程序传入。
示例值: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 订单已完成 当前状态无需操作

版本说明

关闭
V1.2
2019.12.27
1. 服务时间段新增时间备注字段,时间添加精准校验

V1.1
2019.09.26
1. 商户优惠新增优惠数量字段

V1.0
2019.08.23
1. 创建支付分订单接口上线