API开发文档简介
本文阅读对象:使用 聚合支付 商户自服务系统的技术架构师、研发工程师、系统运维工程师。通过本文档,商户可了解 聚合支付 接入的技术、接入的产品业务、接入的流程、接入规范等信息,以便于商户顺利完成接入工作。
商户流程
商户侧流程
根据用户是否需要输入支付密码可分为:免密模式和验密模式。
免密支付流程
验密支付流程
场景交互与免密模式相同,不同的是在商户调用支付接口发起支付请求之后,支付后台提示用户输入密码确认支付,商户系统再轮询调用查询订单接口来确认当前用户是否已经支付成功。撤销逻辑:对于未支付成功的订单会关闭,所以不能继续支付;对于支付成功的订单会退款,所以存在一定的风险。
签名算法
签名生成的通用步骤如下:
第一步,将请求的参数按照key_1=value_1&key_2=value2的形式进行排列生成签名原串,排列时需要注意:
1.参数的排放顺序按照首字母进行升序排列.
2.除文档中明确标注不参与签名的参数外,所有值不为空的参数均需参与签名。
第二步,使用RSA加密得到sign值sign。
验签方法:RSAUtils.verify(verify(byte[] data, String publicKey, String sign)
签名方法:RSAUtils.sign(byte[] data, String privateKey)
获取签名原串的方法:SignUtils.genSignData(JSONObject jsonObject)
返回结果验签只需要验签data数据,code,msg,success,exception不参与签名验签。
请参考:RSA公钥/私钥/签名工具包
创建支付订单接口
地址: /api/fy/gateway/unifiedPayment/createPay
HTTP请求方式:POST
返回ContentType类型:application/json
请求头说明
名称 必填 类型 默认值 备注
Content-Type true string application/json
输入参数说明
参数名称 必填 参数位置 类型 默认值 备注
service true 普通参数 string unified_pay 接口名称
version true 普通参数 string 接口版本
partner_id true 普通参数 string 商户号
_input_charset true 普通参数 string UTF-8 参数编码字符集
sign true 普通参数 string 签名
sign_type true 普通参数 string RSA 签名方式
return_url false 普通参数 string 处理完请求后,当前页面自动跳转到商户网站里指定页面的http路径
memo false 普通参数 string 备注 说明信息
request_no true 普通参数 string 商户请求号:商户发起请求的,建议用时间戳唯一编号
auth_code true 普通参数 string 授权码 通过扫码枪/声波获取设备获取的支付宝/微信/银联付款码
amount true 普通参数 string 交易金额
instcode true 普通参数 string 机构编码:参考机构编码
inst_id true 普通参数 string 一级代理商机构编号(其下级代理商继承该编号),
用于保护代理商权益,以及核算代理商交易量
如机构编号Instid和商户号partner_id没有归属关系,
返回错误信息:
机构编号与商户号不存在归属关系,不能交易
body false 普通参数 string 商品描述
goods true 普通参数 string "goods": [{"goods_name": "商品名称","count": 2,"goods_price": 3,"goods_code": 4} ]
注释
count类型number ,
goods_price类型number ,
goods_code类型string
以上为必传且不能为空
notify_url false 普通参数 string 主动通知商户网站里指定的页面http路径。
extension false 普通参数 string 扩展参数
请求示例:
{
    "amount": "0.01",
    "extension": "",
    "instcode": "SWFTPAY",
    "orderid": "202405220917019297503",
    "_input_charset": "UTF-8",
    "request_no": "202405220917019297503",
    "auth_code": "289553676715009490",
    "version": "1.0",
    "inst_id": "114",
    "goods": [{"count":1,"goodsCode":"123457","goodsName":"支付宝测试调试支付接口","goodsPrice":0.01}],
    "body": "支付侧信息描述",
    "partner_id": "200000000035",
    "service": "unified_pay",
    "sign_type": "RSA",
    "sign":"ZbFihvezdW1nhpThydcxWVtAgYMK95532BblL63PrL4Y04n/1i8T5SMBng6n3aJogN0ufbnQ+AvFDgk/BoJZpTUBnB+g88mwOv9OAs1MkNCD2k1VOTvsBC32XPmx4nWNtdsyUl5qsVol8jilrZnc0DZA3iyhsyBmxX5yFcH6y7M="
}
返回数据说明:
参数名称 参数类型 是否必填 参数说明
code string true 编码
msg string true 信息
success boolean true 成功标识表示,接口调用是否成功,并不表明业务处理结果
exception string false 异常
data object true 返回数据对象
└inputCharset string true 商户网站使用的编码格式,如utf-8、gbk、gb2312等。
└memo string false 备注
└result boolean true 受理状态 表明业务处理结果 不可空 true, false
└sign string true 接口签名
└tradeNo string true 第三方交易订房(微信或者支付宝订单)
└signType string true 商户网站使用的编码格式,如utf-8、gbk、gb2312等。
└partnerId string true 商户号
└exception string false 扩展信息
└htmlForm string false 支付表单(网银支付,支付宝PC等会返回该参数)
└payStatus string true 支付订单状态:S-处理成功,R-提交成功(已提交到机构,等待结果返回),I-处理中(可能出现提交异常,结果待确认 返回调用方 机构支付已提交),F-机构支付明确失败
└resultMessage string true 返回结果信息
└originalOrderNo string true 原始支付订单号
└plantOrderNo string true 聚合支付平台订单号
└errorMessage string false 返回错误码
└errorCode string false 返回错误原因
正确返回示例:
{
    "data": {
        "inputCharset": "UTF-8",
        "memo": null,
        "result": true,
        "sign": "ohgsnnSNKWiubAkiYQHtEJafvJdADC4VI/YjbLKPdnbE+5QcVEYK8xwmz+Vzde3SD0oDxHYf9W1UEP+FPaY9UPFfIs1TGWiY00XCBkJFo5EHSc0ZgqnvfdR786JRMX6lW85p7AtwklyDP5nGTa55UB7yDrAl2ubwtle8WBWdNxk=",
        "signType": "RSA",
        "partnerId": "200000000003",
        "exception": null,
        "htmlForm": null,
        "payStatus": "S",
        "resultMessage": "返回成功",
        "originalOrderNo": "202403270917019297388",
        "plantOrderNo": "20240428222005009699",
        "tradeNo": "187550047370202404282130801314",
        "errorMessage": null,
        "errorCode": null
},
"code": "200",
"msg": "成功",
"success": true,
"exception": null
}
错误返回示例:
{
    "data": null,
    "code": "ILLEGAL_SIGN",
    "msg": "验签未通过",
    "success": false,
    "exception": null
}
支付订单查询接口
地址: /api/fy/gateway/query/payResult
HTTP请求方式:POST
返回ContentType类型:application/json
请求头说明
名称 必填 类型 默认值 备注
Content-Type true string application/json
输入参数说明
参数名称 必填 参数位置 类型 默认值 备注
service true 普通参数 string unified_pay_query 接口名称
version true 普通参数 string 接口版本
partner_id true 普通参数 string 商户号
_input_charset true 普通参数 string UTF-8 参数编码字符集
sign true 普通参数 string 签名
sign_type true 普通参数 string RSA 签名方式
memo false 普通参数 string 备注 说明信息
request_no true 普通参数 string 商户支付订单号(支付时候的订单号)
请求示例:
{
    "extension": "",
    "instcode": "SWFTPAY",
    "_input_charset": "UTF-8",
    "request_no": "202405220917019297503",
    "version": "1.0",
    "partner_id": "200000000035",
    "service": "unified_pay_query",
    "sign_type": "RSA",
    "sign":"RaYrYSkY5NHkilRTlPeV6didGBnk3zcl0zJQwd63QqHnmRzoxlY4jZxYSdu1Q6VVkcj9NouJ7g4GT4Sh5dWMDc6G4MyO9e6jteN5gQQyweKQF6B5GcHKnVszdaOzBAEaxTpS5dWmX3EjT1UYoJIe5WAvE8n9evWZet+WoiReeYI="
}
返回数据说明:
参数名称 参数类型 是否必填 参数说明
code string true 编码
msg string true 信息
success boolean true 成功标识表示,接口调用是否成功,并不表明业务处理结果
exception string false 异常
data object true 返回数据对象
└signType string true 签名类型
└sign string true 签名
└partnerId string true 商户号
└outerTradeNo string true 商户网站唯一订单号
└innerTradeNo string true 聚合支付交易号
└result boolean true 受理状态 表明业务处理结果 不可空 true, false
└payStatus string true 支付状态:支付成功(S),支付失败(F),支付处理中(I)订单已关闭(C)
└tradeNo string true 第三方支付订单号(微信、支付宝订单号)
└errorMessage string false 返回错误码
└errorCode string false 返回错误原因
└memo string false 备注
└inputCharset string true 商户网站使用的编码格式,如utf-8、gbk、gb2312等。
正确返回示例:
{
    "data": {
        "inputCharset": "UTF-8",
        "memo": null,
        "result": true,
        "sign": "GGVOzcadd5SsiunJhgQszVTb9Epzguy2ONm6eQA5+Xyl4qLtyOEmZe/UomGoSNxLAX2CauTyRAMh8y/WnfbTBq+WNy2vSVp0HxBKPLYedqR/iLUD1GExEPFqe5T7JEkCRFZmppSbwSlSNeLJTM/PD8rVvSgUF3lSglhZtGI21vY=",         "signType": "RSA",
        "partnerId": "200000000035",
        "exception": null,
        "outerTradeNo": "202405220917019297503",
        "innerTradeNo": "20240522212154836144",
        "payStatus": "S",
        "errorMessage": null,
        "errorCode": null,
        "tradeNo": "101520021587202405222587309560"
    },
    "code": "200",
    "msg": "成功",
    "success": true,
    "exception": null
}
错误返回示例:
{
    "data": null,
    "code": "ILLEGAL_SIGN",
    "msg": "验签未通过",
    "success": false,
    "exception": null
}
创建退款订单接口
地址: /api/fy/gateway/unifiedPayment/refund
HTTP请求方式:POST
返回ContentType类型:application/json
请求头说明
名称 必填 类型 默认值 备注
Content-Type true string application/json
输入参数说明
参数名称 必填 参数位置 类型 默认值 备注
service true 普通参数 string unified_refund_pay 接口名称
version true 普通参数 string 接口版本
partner_id true 普通参数 string 商户号
_input_charset true 普通参数 string UTF-8 参数编码字符集
sign true 普通参数 string 签名
sign_type true 普通参数 string RSA 签名方式
return_url false 普通参数 string 处理完请求后,当前页面自动跳转到商户网站里指定页面的http路径
memo false 普通参数 string 备注 说明信息
request_no true 普通参数 string 商户退款请求号:商户发起请求的订单号,建议用时间戳唯一编号
orig_outer_trade_no true 普通参数 string 第三方支付订单一取支付接口中返回的tradeNo
refund_amount true 普通参数 string 退款金额
notify_url false 普通参数 string 主动通知商户网站里指定的页面http路径。
extension false 普通参数 string 扩展参数
请求示例:
{
    "refund_amount": "0.01",
    "extension": "",
    "instcode": "SWFTPAY",
    "_input_charset": "UTF-8",
    "request_no": "202405220917019297415",
    "orig_outer_trade_no": "101520021587202405222587309560",
    "notify_url": "http://api.yiranpay.xyz/facade/api/yiranpay/channelpay/notify/resultNotify",
    "version": "1.0",
    "partner_id": "200000000035",
    "service": "unified_refund_pay",
    "sign_type": "RSA",
    "sign":"SOt0LuJ8vKUdK+kMQiBdj/Dcg1fXiD+gNdSuDWw1JqQ4uww4QWjmb0UWnifAHPBbjZgd4C29ebj36AIFt0FuU4UbYOPTSJ3nA1ezHAInWUpFVRwcuktQF1kYUmrCUHRsGBIuf/wgr769tAQ9yvRCPfLC5WlAvFZ5p8UVT1EL5ZE="
}
返回数据说明:
参数名称 参数类型 是否必填 参数说明
code string true 编码
msg string true 信息
success boolean true 成功标识表示,接口调用是否成功,并不表明业务处理结果
exception string false 异常
data object true 返回数据对象
└signType string true 签名类型
└sign string true 签名
└partnerId string true 商户号
└channelPayNo string true 商户网站唯一订单号
└instOrderNo string true 聚合支付交易号
└result boolean true 受理状态 表明业务处理结果 不可空 true, false
└payStatus string true S:处理成功,R:已提交到机构,等待结果返回,I:处理中,F:处理失败
└resultMessage string true 返回信息
└refundAmount string true 退款金额
└errorMessage string false 返回错误码
└errorCode string false 返回错误原因
└memo string false 备注
└inputCharset string true 商户网站使用的编码格式,如utf-8、gbk、gb2312等。
正确返回示例:
{
    "data": {
        "inputCharset": "UTF-8",
        "memo": null,
        "result": true,
        "sign": "pbCtx+SnKXOTXLUUcjPMBbXVEFRZyXG3CH2zlV7KN+o5Pc5q0OqxTwX+g4Z7QqiP0EpysY/AQLtLX6bVSrc/6V50quN2g4T4XOWq7qU/yk8Da5gPjEhwHs7C1JUIjvuWje0YS4qOVuMsuaaM/9bxlCDWndFAtkHMv6ngWHeIyIY=",
        "signType": "RSA",
        "partnerId": "200000000035",
        "exception": null,
        "payStatus": "S",
        "resultMessage": "处理成功,支付成功",
        "fundsChannel": "SWFTPAY10101",
        "channelPayNo": "20240522225405011350",
        "instOrderNo": "20240522225405011350",
        "instPayTime": "2024-05-23 15:47:04",
        "refundAmount": 0.01,
        "currencyCode": null
    },
    "code": "200",
    "msg": "成功",
    "success": true,
    "exception": null
}
错误返回示例:
{
    "data": null,
    "code": "ILLEGAL_SIGN",
    "msg": "验签未通过",
    "success": false,
    "exception": null
}
退款订单查询接口
地址: /api/fy/gateway/query/refunPayResult
HTTP请求方式:POST
返回ContentType类型:application/json
请求头说明
名称 必填 类型 默认值 备注
Content-Type true string application/json
输入参数说明
参数名称 必填 参数位置 类型 默认值 备注
service true 普通参数 string unified_refpay_query 接口名称
version true 普通参数 string 接口版本
partner_id true 普通参数 string 商户号
_input_charset true 普通参数 string UTF-8 参数编码字符集
sign true 普通参数 string 签名
sign_type true 普通参数 string RSA 签名方式
memo false 普通参数 string 备注 说明信息
refun_request_no true 普通参数 string 商户退款的订单号(退款时生成的订单号)
请求示例:
{
    "extension": "",
    "instcode": "SWFTPAY",
    "_input_charset": "UTF-8",
    "refun_request_no": "202405220917019297415",
    "version": "1.0",
    "partner_id": "200000000035",
    "service": "unified_refpay_query",
    "sign_type": "RSA",
    "sign":"gfdQ0k2E+EIbMwVaXQs7MpINzCt56w5c4qy4wQ0Munh8p2F1aMBmAOpbynq3zlFTPxuF+pmIvAgt4H5sqau/3u6WzzmmlNO95WvbDS6b6KN7W2mxdTAJL+DpFoJVGeo4HzXyzSayo5ovu2wpGpl7Z972Bmh3Mnst8ozrbC4lOG0="
}
返回数据说明:
参数名称 参数类型 是否必填 参数说明
code string true 编码
msg string true 信息
success boolean true 成功标识表示,接口调用是否成功,并不表明业务处理结果
exception string false 异常
data object true 返回数据对象
└signType string true 签名类型
└sign string true 签名
└partnerId string true 商户号
└outerTradeNo string true 商户网站唯一订单号
└innerTradeNo string true 聚合支付交易号
└result boolean true 受理状态 表明业务处理结果 不可空 true, false
└payStatus string true 支付状态:已支付(S),支付失败(F),支付处理中(I)订单已关闭(C)
└tradeNo string true 第三方支付订单号(微信、支付宝订单号)
└errorMessage string false 返回错误码
└errorCode string false 返回错误原因
└memo string false 备注
└inputCharset string true 商户网站使用的编码格式,如utf-8、gbk、gb2312等。
正确返回示例:
{
    "data": {
        "inputCharset": "UTF-8",
        "memo": null,
        "result": true,
        "sign": "pcLzTq8WYJrLQ/es3I/YjTz9M9ZZWKnMk3RxQTd48zex3+GC54PTBtUuohljJnkWsGtGQK4Q6kij+k/UI1q49EUlq5Dft71PHt3rL2PB2pogt6DOR/n6KckW7E6FPXtRrbxdogXKw6SEUlDtd4/qoXZo734hBYAXorl2y9E9qzU=",
        "signType": "RSA",
        "partnerId": "200000000035",
        "exception": null,
        "outerTradeNo": "202405220917019297415",
        "innerTradeNo": "20240522225405993064",
        "payStatus": "S",
        "errorMessage": null,
        "errorCode": null,
        "tradeNo": null
    },
    "code": "200",
    "msg": "成功",
    "success": true,
    "exception": null
}
错误返回示例:
{
    "data": null,
    "code": "ILLEGAL_SIGN",
    "msg": "验签未通过",
    "success": false,
    "exception": null
}
聚合支付机构编码(instcode)
机构编码 机构名称
WFTPAY 皖付通支付
HWCPAY 汇旺财支付
SWFTPAY 威富通支付
ALIPAY 支付宝支付
WXPAY 微信支付
接口返回错误码
Code Msg
INST_ID_ILLEGAL_ARGUMENT 机构编号与商户号不存在归属关系,不能交易
ILLEGAL_PRODUCT_AUTH 该商户没有该产品权限,请先申请产品权限
PAY_CHANNEL_ERROR 支付渠道错误
BAR_CODE_NETWORK_ERROR 网络异常,请检查网络环境后再试!
BIDDING_FAIL 调用签约失败
CHANNEL_NO_DATE_ERROR 未找到可用渠道数据
ILLEGAL_AMOUNT_FORMAT 金额格式错误
ILLEGAL_REFUND_AMOUNT 退款金额信息错误
ILLEGAL_ACCESS_SWITCH_SYSTEM 商户不允许访问该类型的接口
TRADE_PAY_MATCH_ERROR 交易与支付金额不匹配
TRADE_AMOUNT_MATCH_ERROR 交易内金额不匹配
MOBILE_NOT_EXIST 用户手机号不存在
TRADE_DATA_MATCH_ERROR 交易信息有误
OPERATOR_ID_NOT_EXIST 操作员Id不存在
ILLEGAL_PAY_METHOD 支付方式未授权
ILLEGAL_PAY_ERROR 支付方式错误
ILLEGAL_DATE_FORMAT 日期格式错误
ILLEGAL_OUTER_TRADE_NO 交易订单号不存在
DUPLICATE_REQUEST_NO 重复的请求号
PARTNER_ID_NOT_EXIST 商户Id不存在
MEMBER_ID_NOT_EXIST 用户MemberId不存在
USER_ACCOUNT_NOT_EXIST 用户账号不存在
ILLEGAL_NO_INTEFACE_AUTH 该商户没有权限访问【XXXXXXX】接口,请联系管理员添加权限
ILLEGAL_NO_IP_WHITE IP不在白名单,请联系管理员添加白名单
ILLEGAL_ARGUMENT_SIGN_ISNULL 参数校验未通过,必填字段未填写,签名为空
ILLEGAL_ARGUMENT_SIGN_TYPE_ISNULL 参数校验未通过,必填字段未填写,签名方式为空
ILLEGAL_ARGUMENT_INPUT_CHARSET_ISNULL 参数校验未通过,必填字段未填写,参数编码字符集为空
ILLEGAL_ARGUMENT_PARNTER_ID_ISNULL 参数校验未通过,必填字段未填写,商户号为空
ILLEGAL_ARGUMENT_VERSION_ISNULL 参数校验未通过,必填字段未填写,接口版本为空
ILLEGAL_ARGUMENT_SERVICE_ISNULL 参数校验未通过,必填字段未填写,服务接口名称为空
ILLEGAL_SERVICE 服务接口不存在
ILLEGAL_ARGUMENT 参数校验未通过
ILLEGAL_SIGN 验签未通过
ILLEGAL_SIGN_TYPE 签名类型不正确