合单下单-JS支付API

通过合单下单-JS支付合并用户多个订一起付款

使用合单支付接口, 用户只输入一次密码, 即可完成多个订单的支付。

目前最多一次可支持 50 笔订单进行合单支付。

接口说明

请求参数

  • path 指该参数需在请求 URL 传参
  • query 指该参数需在请求 JSON 传参
参数类型必填参数名/描述/示例值
combine_appidstring(32)合单商户 appid 合单发起方的 appid。
wxd678efh567hg6787
combine_mchidstring(32)合单商户号 合单发起方商户号。
1900000109
combine_out_trade_nostring(32)合单商户订单号 合单支付总订单号1
P20150806125346
↪scene_infoobject场景信息 支付场景信息描述
↪sub_ordersarray子单信息 最多支持子单条数: 50
↪combine_payer_infoobject支付者 支付者信息
time_startstring(14)交易起始时间 订单生成时间2
2019-12-31T15:59:60+08:00
time_expirestring(14)交易结束时间 订单失效时间2
notify_urlstring(256)通知地址 步通知回调地址3
https://yourapp.com/notify
limit_paystring(32)指定支付方式 指定支付方式
no_debit

场景信息

参数类型必填参数名/描述/示例值
device_idstring(16)商户端设备号 终端设备号(门店号或收银设备 ID)。特殊规则: 长度最小 7 个字节
POS1:1
payer_client_ipstring(45)用户终端 IP 用户端实际 ip 格式: ip(ipv4+ipv6)
14.17.22.32

子单信息

参数类型必填参数名/描述/示例值
mchidstring(32)子单商户号 子单发起方商户号, 必须与发起方 appid 有绑定关系。
1900000109
attachstring(128)附加信息 附加数据, 在查询 API 和支付通知中原样返回, 可作为自定义参数使用。
深圳分店
↪amountobject订单金额
out_trade_nostring(32)子单商户订单号 商户系统内部订单号4
20150806125346
sub_mchidstring(32)二级商户号 二级商户商户号, 由微信支付生成并下发。
1900000109
detailstring(6000)商品详情 商品详细描述(商品列表)
profit_sharingbool是否指定分账 是否指定分账 true: 是 false: 否
true
descriptionstring(128)商品描述 商品简单描述。需传入应用市场上的 APP 名字-实际商品名称, 例如: 天天爱消除-游戏充值。
腾讯充值中心-QQ 会员充值
↪settle_infoObject结算信息

订单金额

参数类型必填参数名/描述/示例值
total_amountint64标价金额 子单金额, 单位为分。
100
currencystring(8)标价币种 符合 ISO 4217 标准的三位字母代码, 人民币: CNY。
CNY

结算信息

参数类型必填参数名/描述/示例值
profit_sharingbool是否指定分账 是否分账, 与外层 profit_sharing 同时存在时, 以本字段为准。true: 是 false: 否
true
subsidy_amountint64补差金额 SettleInfo.profit_sharing 为 true 时, 该金额才生效。
10

支付者

参数类型必填参数名/描述/示例值
openidstring(128)用户标识 使用合单 appid 获取的对应用户 openid。是用户在商户 appid 下的唯一标识。
oUpF8uMuAJO_M2pxb1Q9zNjWeS6o

请求示例

{
  "combine_out_trade_no": "1217752501201407033233368018",
  "combine_mchid": "1230000109",
  "scene_info": {
    "device_id": "POS1:1",
    "payer_client_ip": "14.17.22.32"
  },
  "sub_orders": [
    {
      "mchid": "1230000109",
      "attach": "深圳分店",
      "amount": {
        "total_amount": 10,
        "currency": "CNY"
      },
      "out_trade_no": "20150806125346",
      "sub_mchid": "1900000109",
      "detail": "",
      "profit_sharing": null,
      "description": "腾讯充值中心-QQ 会员充值"
    }
  ],
  "combine_payer_info": {
    "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"
  },
  "time_start": "2018-06-08T10:34:56+08:00",
  "time_expire": "2018-06-08T10:34:56+08:00",
  "notify_url": "https://yourapp.com/notify",
  "limit_pay": ["no_debit"]
}

返回参数

参数类型必填参数名/描述/示例值
prepay_idstring(64)预支付交易会话标识 数字和字母5
wx201410272009395522657a690389285100

返回示例

正常示例

{
  "prepay_id": "wx201410272009395522657a690389285100"
}

错误码 公共错误码

状态码错误码描述/解决方案
202USERPAYING用户支付中, 需要输入密码
等待 5 秒, 然后调用被扫订单结果查询 API, 查询当前订单的不同状态, 决定下一步的操作
403TRADE_ERROR交易错误
因业务原因交易失败, 请查看接口返回的详细信息
500SYSTEMERROR系统错误
系统异常, 请用相同参数重新调用
401SIGN_ERROR签名错误
请检查签名参数和方法是否都符合签名算法要求
403RULELIMIT业务规则限制
因业务规则限制请求频率, 请查看接口返回的详细信息
400PARAM_ERROR参数错误
请根据接口返回的详细信息检查请求参数
403OUT_TRADE_NO_USED商户订单号重复
请核实商户订单号是否重复提交
404ORDERNOTEXIST订单不存在
请检查订单是否发起过交易
400ORDER_CLOSED订单已关闭
当前订单已关闭, 请重新下单
500OPENID_MISMATCHopenid 和 appid 不匹配
请确认 openid 和 appid 是否匹配
403NOTENOUGH余额不足
用户帐号余额不足, 请用户充值或更换支付卡后再支付
403NOAUTH商户无权限
请商户前往申请此接口相关权限
400MCH_NOT_EXISTS商户号不存在
请检查商户号是否正确
500INVALID_TRANSACTIONID订单号非法
请检查微信支付订单号是否正确
400INVALID_REQUEST无效请求
请根据接口返回的详细信息检查
429FREQUENCY_LIMITED频率超限
请降低请求接口频率
500BANKERROR银行系统异常
银行系统异常, 请用相同参数重新调用
400APPID_MCHID_NOT_MATCHappid 和 mch_id 不匹配
请确认 appid 和 mch_id 是否匹配
403ACCOUNTERROR账号异常
用户账号异常, 无需更多操作

  1. 要求 32 个字符内, 只能是数字、大小写字母及_-|\*@ , 且在同一个商户号下唯一。 ↩︎

  2. 遵循 rfc3339 标准格式, 格式为 YYYY-MM-DDTHH:mm:ss+TIMEZONE, YYYY-MM-DD 表示年月日, T 出现在字符串中, 表示 time 元素的开头, HH:mm:ss 表示时分秒, TIMEZONE 表示时区(+08:00 表示东八区时间, 领先 UTC 8 小时, 即北京时间)。例如: 2015-05-20T13:29:35+08:00 表示, 北京时间 2015 年 5 月 20 日 13 点 29 分 35 秒。 ↩︎

  3. 接收微信支付异步通知回调地址, 必须为直接可访问的 URL, 不能携带参数。 ↩︎

  4. 商户系统内部订单号, 要求 32 个字符内, 只能是数字、大小写字母_-|*@ , 且在同一个商户号下唯一。 特殊规则: 最小字符长度为 6 ↩︎

  5. 微信生成的预支付会话标识, 用于后续接口调用使用。 ↩︎


最后修改 April 12, 2020: 整理文档 (f36b91e)