统一下单

接口描述

业务通过统一下单接口可以发起任意三方支付渠道的支付订单。业务系统不必关心该如何调用三方支付,统一下单接口会根据业务系统选择的支付渠道ID,选择对应支付渠道的支付产品,发起下单请求,然后响应给业务系统支付请求所需参数。

接口链接

URL地址:{payUrl}/api/pay/create_order

请求参数

字段名 变量名 必填 类型 示例值 描述
商户ID mchId String(30) 20001222 支付中心分配的商户号
应用ID appId String(30) wx390ee383939c4fb2 当支付产品为微信支付(公众号支付、小程序支付、H5支付、APP支付)时,如果传了该参数则微信服务商下单时subAppId使用该参数,如果支付产品为微信APP支付则该参数必传
支付产品ID productId String(24) 8001 8004微信公众号支付
8020微信条码支付
8023微信小程序支付
8008支付宝服务窗支付
8021支付宝条码支付
商户订单号 mchOrderNo String(30) 20160427210604000490 商户生成的订单号
支付金额 amount int 100 支付金额,单位分
币种 currency String(3) cny 三位货币代码,人民币:cny
客户端IP clientIp String(32) 210.73.10.148 客户端IP地址,当为微信公众号支付或微信小程序支付时该参数必传
设备 device String(64) ios10.3.1 客户端设备
异步回调地址 notifyUrl String(128) http://shop.xx.com/notify.htm 支付结果异步回调URL
同步请求地址 returnUrl String(128) http://shop.xx.com/return.htm 支付结果同步请求URL
订单失效时间 expiredTime int 7200 订单失效时间,单位秒,默认2小时.订单在(创建时间+失效时间)后失效
商品主题 subject String(64) xxpay测试商品1 商品主题
商品描述 body String(256) xxpay测试商品描述 商品描述信息
渠道用户ID channelUserId String(256) oIkQuwhPgPUgl-TvQ48_UUpZUwMs 指的是在支付通道测的用户ID,当为微信公众号或小程序支付时,该参数必填,指微信openID
是否jsapi的预下单模式 jsApiPreOrderMode int 0 是否jsapi的预下单模式 1.是, 0-否
预下单模式不直接生成payOrderId, 返回链接地址直接支付。
仅支持 微信公众号支付和支付宝服务窗支付 京东H5和云闪付扫一扫支付。
附加参数 extra String(512) 134586944573118714 特定渠道发起时额外参数,当为微信条码或支付宝条码支付时,该参数必填,指付款用户的条码值
扩展参数1 param1 String(64) 支付中心回调时原样返回
扩展参数2 param2 String(64) 支付中心回调时原样返回
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算法

响应结果

字段名 变量名 必填 类型 示例值 描述
返回状态码 retCode String(16) 0 0-处理成功,其他-处理有误,详见错误码
返回信息 retMsg String(128) 签名失败 具体错误原因,例如:签名失败、参数格式校验错误

以下字段在retCode=0 时有返回

字段名 变量名 必填 类型 示例值 描述
支付订单号 payOrderId String(30) P01201907231119090520000 返回支付系统订单号
支付方式 payMethod String(16) formJump 支付方式,目前包含两种: formJump-表单跳转,codeImg-二维码图片
支付表单地址 payUrl text <form name="punchout_form" method="post" action="https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.page.pay&sign=WWg59GEcTkMHYnE8fKRd%2F4fzFi"></form> …… payMethod=formJump时存在该参数; 一般为支付表单内容
支付跳转地址 payJumpUrl text 支付跳转地址,可直接重定向的URL
表单提交方式 payAction String(16) GET 指定表单提交方式: POST/GET
二维码地址 codeUrl String(16) https://qr.alipay.com/bax08687odiyi06c payMethod=codeImg时存在该参数; 二维码内容地址
二维码图片地址 codeImgUrl String(16) http://pay.xxpay.org/api/qrcode_img_get?url=https://qr.alipay.com/bax08687z006c&width=200&height=200 payMethod=codeImg时存在该参数; 二维码图片地址
支付自定义参数 payParams String(16) 支付自定义参数,当为app支付或小程序或公众号支付时,返回给客户端调起支付所需参数
是否需要查单 needQuery Boolean true 如果返回true则表示商户需要主动发起订单查询
当前订单状态 orderStatus String(16) 2 当前订单状态: -2:订单已关闭,0-订单生成,1-支付中,2-支付成功,3-业务处理完成,4-已退款
签名信息 sign String(128) CCD9083A6DAD9A2DA9F668C3D4517A84 签名信息

查询订单

接口描述

业务系统通过查询支付订单接口获取最新的支付订单状态,并根据状态结果进一步处理业务逻辑。

接口链接

URL地址:{payUrl}/api/pay/query_order

请求参数

字段名 变量名 必填 类型 示例值 描述
商户ID mchId String(30) 1000000010 支付中心分配的商户号
支付订单号 payOrderId String(30) P20160427210604000490 支付中心生成的订单号,与mchOrderNo二者传一即可
商户订单号 mchOrderNo String(30) 20160427210604000490 商户生成的订单号,与payOrderId二者传一即可
是否执行回调 executeNotify Boolean true 是否执行回调,如果为true,则支付中心会再次向商户发起一次回调,如果为false则不发起
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算法

响应结果

字段名 变量名 必填 类型 示例值 描述
返回状态码 retCode String(16) 0 0-处理成功,其他-处理有误,详见错误码
返回信息 retMsg String(128) 签名失败 具体错误原因,例如:签名失败、参数格式校验错误

以下字段在retCode=0 时有返回

字段名 变量名 必填 类型 示例值 描述
商户ID mchId String(30) 20001222 支付中心分配的商户号
应用ID appId String(30) wx390ee383939c4fb2 应用ID
支付产品ID productId String(24) 8001
支付订单号 payOrderId String(30) P01201907231119090520000 返回支付系统订单号
商户订单号 mchOrderNo String(30) 20160427210604000490 商户生成的订单号
支付金额 amount int 100 支付金额,单位分
币种 currency String(3) cny 三位货币代码,人民币:cny
订单状态 status String(3) 2 当前订单状态: -2:订单已关闭,0-订单生成,1-支付中,2-支付成功,3-业务处理完成,4-已退款
渠道用户ID channelUserId String 渠道用户ID
渠道订单号 channelOrderNo String wx20170910211043fb206e92260071822007 对应的第三方支付订单号
渠道数据包 channelAttach String 渠道数据包
支付成功时间 paySuccTime Long 1505049094262 支付成功时间,精确到毫秒
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算法

关闭订单

接口描述

业务系统通过关闭支付订单接口关闭支付订单,只有在支付中的订单才可以发起关闭。

接口链接

URL地址:{payUrl}/api/pay/close_order

请求参数

字段名 变量名 必填 类型 示例值 描述
商户ID mchId String(30) 1000000010 支付中心分配的商户号
支付订单号 payOrderId String(30) P20160427210604000490 支付中心生成的订单号,与mchOrderNo二者传一即可
商户订单号 mchOrderNo String(30) 20160427210604000490 商户生成的订单号,与payOrderId二者传一即可
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算法

响应结果

字段名 变量名 必填 类型 示例值 描述
返回状态码 retCode String(16) 0 0-处理成功,其他-处理有误,详见错误码
返回信息 retMsg String(128) 签名失败 具体错误原因,例如:签名失败、参数格式校验错误

以下字段在retCode=0 时有返回

字段名 变量名 必填 类型 示例值 描述
业务结果 resultCode String SUCCESS SUCCESS/FAIL
处理结果描述 resultMsg String 失败 失败
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算法

支付通知

接口描述

当订单支付成功时,支付中心会向商户的notifyUrl地址发起回调,通知订单状态。

接口链接

该链接是通过统一下单接口提交的参数notifyUrl设置,如果无法访问链接,业务系统将无法接收到支付中心的通知。

通知参数

字段名 变量名 必填 类型 示例值 描述
支付订单号 payOrderId String(30) P20160427210604000490 支付中心生成的订单号
商户ID mchId String(30) 20001222 支付中心分配的商户号
应用ID appId String(30) cbsgB1T0SL6tfflFYoBX 应用ID
支付产品ID productId String(24) 8001
商户订单号 mchOrderNo String(30) 20160427210604000490 商户生成的订单号
支付金额 amount int 100 支付金额,单位分
入账金额 income int 100 扣除费率后的入账金额,单位分
状态 status int 1 支付状态,0-订单生成,1-支付中,2-支付成功,3-业务处理完成
渠道订单号 channelOrderNo String(64) wx2016081611532915ae15beab0167893571 三方支付渠道订单号
扩展参数1 param1 String(64) 支付中心回调时原样返回
扩展参数2 param2 String(64) 支付中心回调时原样返回
支付成功时间 paySuccTime long 精确到毫秒
通知类型 backType int 1 通知类型,1-前台通知,2-后台通知
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算法

返回结果

业务系统处理后同步返回给支付中心,返回字符串 success 则表示成功,返回非success则表示处理失败,支付中心会再次通知业务系统。(通知频率为60/120/180/240/300,单位:秒)

注意:返回的字符串必须是小写,且前后不能有空格。

附录

支付产品

产品ID 产品名称
8004 微信公众号支付
8020 微信条码支付
8023 微信小程序支付
8008 支付宝服务窗支付
8021 支付宝条码支付

错误码

RetCode 描述
0 成功
9999 业务异常,具体错误详见RetMsg字段
0100 商户签名异常
0010 系统错误
0011 请使用post方法
0012 post数据为空
0013 签名错误
0014 参数错误
0015 商户不存在
0110 第三方超时
0111 第三方异常
0112 订单不存在
0113 订单已支付
0114 商品不存在
0115 价格不对
0116 物品数量不对
0117 过程返回255
0118 DB错误
0119 支付中心没有对应的渠道
0120 修改订单状态失败
文档更新时间: 2021-10-25 12:17   作者:大森林