接口描述
业务通过统一下单接口可以发起任意三方支付渠道的支付订单。业务系统不必关心该如何调用三方支付,统一下单接口会根据业务系统选择的支付渠道ID,选择对应支付渠道的支付产品,发起下单请求,然后响应给业务系统支付请求所需参数。
业务流程
接口链接
测试URL地址:http://api.xxpay.org/api/pay/create_order
注意:以上测试地址为XxPay官方提供,可通过测试商户,去三方支付渠道下单。
测试商户:
mchId | ReqKey | ResKey |
---|---|---|
20001223 | M86l522AV6q613Ii4W6u8K48uW8vM1N6bFgyv769220MdYe9u37N4y7rI5mQ | Hpcl522AV6q613KIi46u6g6XuW8vM1N8bFgyv769770MdYe9u37M4y7rIpl8 |
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
商户ID | mchId | 是 | String(30) | 20001222 | 支付中心分配的商户号 |
商户订单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 商户生成的订单号 |
渠道ID | channelId | 是 | String(24) | WX_JSAPI | 见支付渠道参数 |
币种 | currency | 是 | String(3) | cny | 三位货币代码,人民币:cny |
支付金额 | amount | 是 | int | 100 | 支付金额,单位分 |
客户端IP | clientIp | 否 | String(32) | 210.73.10.148 | 客户端IP地址 |
设备 | device | 否 | String(64) | ios10.3.1 | 客户端设备 |
支付结果回调URL | notifyUrl | 是 | String(200) | http://shop.xxpay.org/notify.htm | 支付结果回调URL |
商品主题 | subject | 是 | String(64) | xxpay测试商品1 | 商品主题 |
商品描述信息 | body | 是 | String(256) | xxpay测试商品描述 | 商品描述信息 |
扩展参数1 | param1 | 否 | String(64) | 支付中心回调时会原样返回 | |
扩展参数2 | param2 | 否 | String(64) | 支付中心回调时会原样返回 | |
附加参数 | extra | 是 | String(512) | {“openId”:”o2RvowBf7sOVJf8kJksUEMceaDqo”} | 特定渠道发起时额外参数,见下面说明 |
签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
extra参数说明
当请求参数channelId = WX_JSAPI
(微信公众号支付)时,openId参数必填,对应用户所在微信公众号的openId。
{"openId":"o2RvowBf7sOVJf8kJksUEMceaDqo"}
当请求参数channelId = WX_NATIVE
(微信原生扫码支付)时,productId参数必填,对应业务系统定义的商品ID。
{"productId":"120989823"}
当请求参数channelId = ALIPAY_WAP
(支付宝WAP支付)时,可传参数ali_show_url,表示用户付款中途退出返回商户网站的地址。不传默认地址为:www.xxpay.org。
{"ali_show_url":"http://www.xiaoshuding.com"}
当请求参数channelId = ALIPAY_PC
(支付宝PC支付)时,可传参数qr_pay_mode、qrcode_width。
{"qr_pay_mode":"4", "qrcode_width":"200"}
qr_pay_mode:扫码支付的方式,支持前置模式和跳转模式(4:直接显示二维码,2:跳转模式)默认为4。
qrcode_width:当qr_pay_mode=4时,该参数生效,表示二维码宽度。
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
返回状态码 | retCode | 是 | String(16) | SUCCESS | SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看resCode来判断 |
返回信息 | retMsg | 否 | String(128) | 签名失败 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 |
以下字段在retCode为SUCCESS的时候有返回
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
业务结果 | resCode | 是 | String(16) | SUCCESS | SUCCESS/FAIL |
错误代码 | errCode | 否 | String(32) | SYSTEMERROR | 错误码 |
错误代码描述 | errCodeDes | 否 | String(128) | 系统错误 | 结果信息描述 |
以下字段在retCode和resCode都为SUCCESS的时候有返回
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
支付订单号 | payOrderId | 是 | String(32) | 20160427210604000490 | 支付中心生成的订单号 |
预支付标识 | prepayId | 否 | String(64) | wx201410272009395522657a690389285100 | 第三方支付公司返回的预支付标识 |
跳转第三方支付URl | payUrl | 否 | String(200) | http://url | 支付中心生生成跳转第三方支付页面的URL地址 |
跳转第三方支付方法 | payAction | 否 | String(20) | POST | 跳转第三方支付页面要求的方法 |
跳转第三方支付参数 | payParams | 否 | String(500) | 该字段不参与签名,当payAction=POST时,该参数有值,JSON格式数据,跳转第三方支付页面需要传递的参数 | |
签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
当请求参数channelId=WX_JSAPI
(微信公众号支付)时,回JSON格式数据,如:
{
"sign": "24F5916D6B1AB64918B3BF7250693813",
"payOrderId": "P2016081612553098759124940",
"retCode": "SUCCESS",
"retMsg": "",
"resCode": "SUCCESS",
"prepayId": "wx201608161255321fc59e085b0578219742",
"payParams": {
"appId": "wx0ab67caf7f591834",
"timeStamp": 1471323332,
"signType": "MD5",
"package": "prepay_id=wx201608161255321fc59e085b0578219742",
"nonceStr": "08s06nujam43aot3tbl555lavvydl178",
"paySign": "21E6BF4984030DBD2DB191F676A47DA2"
}
}
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
微信签名 | paySign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名算法,调取微信支付时用到的签名值 |
应用ID | appId | 是 | String(32) | wx8888888888888888 | 微信开放平台审核通过的应用APPID |
签名算法 | signType | 是 | String(32) | 1900000109 | 签名算法,暂支持MD5 |
扩展字段 | package | 是 | String(128) | prepay_id=wx201608161255321fc59e085b0578219742 | 扩展字段 |
随机字符串 | nonceStr | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位 |
时间戳 | timeStamp | 是 | String(10) | 1412000000 | 时间戳,10位 |
当请求参数channelId=WX_NATIVE
(微信公众号扫码支付)时,回JSON格式数据,如:
{
"sign": "3424ED83034B20CF17961720FE272A94",
"payOrderId": "pay2016081613050939023127932",
"retCode": "SUCCESS",
"retMsg": "",
"codeUrl": "weixin://wxpay/bizpayurl?pr=sHYHnns",
"resCode": "SUCCESS",
"payItemId": "6020007",
"prepayId": "wx20160816130510b9688b1a720825571177"
}
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
二维码链接 | codeUrl | 否 | String(200) | weixin://wxpay/s/Anp43md | 可将该参数值生产二维码展示 |
当请求参数channelId=WX_APP
(微信APP支付),返回JSON格式数据,如:
{
"sign": "37343EE31A118185337D0ECA502B33D5",
"payOrderId": "pay2016081611532546033924463",
"retCode": "SUCCESS",
"retMsg": "",
"resCode": "SUCCESS",
"prepayId": "wx2016081611532915ae15beab0167893571",
"payParams": {
"sign": "159ABABAE6F8A0F4641A34A38251E7BB",
"timestamp": 1471319614,
"noncestr": "mhctew72bf3kfrr4jmv79zigbpgrmv5h",
"partnerid": "1367655402",
"prepayid": "wx2016081611532915ae15beab0167893571",
"package": "Sign=WXPay",
"appid": "wxa095d1d71c33c151"
}
}
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
微信签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名算法,调取微信支付时用到的签名值 |
应用ID | appid | 是 | String(32) | wx8888888888888888 | 微信开放平台审核通过的应用APPID |
商户号 | partnerid | 是 | String(32) | 1900000109 | 微信支付分配的商户号 |
扩展字段 | package | 是 | String(128) | Sign=WXPay | 暂填写固定值Sign=WXPay |
随机字符串 | noncestr | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位 |
时间戳 | timestamp | 是 | String(10) | 1412000000 | 时间戳,10位 |