供第三方商户对接使用 — 版本 3.0
商户接入前需获取以下信息(请联系管理员开通):
| 参数 | 说明 |
|---|---|
| 商户号 (mchId) | 平台分配的唯一商户编号 |
| 商户密钥 (key) | 用于签名校验,可在商户后台查看或修改 |
所有接口均采用统一的签名算法,规则如下:
| 传输方式 | HTTP(生产环境建议 HTTPS) |
| 请求方式 | POST/JSON,请求头:Content-Type: application/json |
| 字符编码 | UTF-8 |
| 签名算法 | MD5(32位,不区分大小写) |
| 金额单位 | 人民币分,参数值不能带小数 |
第一步:将所有非空参数值的参数(不含 sign)按参数名 ASCII 码从小到大排序(字典序),使用 URL 键值对格式拼接成字符串。
第二步:在拼接字符串末尾追加 &key=商户密钥,对该字符串进行 MD5 运算,得到 32 位签名值(不区分大小写)。
sign 参数不参与签名假设请求参数如下:
{
"mchId": "10001",
"productId": "8001",
"outTradeNo": "SH20260308001",
"amount": 10000,
"reqTime": 1772956800000,
"notifyUrl": "https://www.example.com/notify",
"returnUrl": "https://www.example.com/return"
}
待签名字符串(参数名字典序排列):
amount=10000&mchId=10001¬ifyUrl=https://www.example.com/notify&outTradeNo=SH20260308001&productId=8001&reqTime=1772956800000&returnUrl=https://www.example.com/return&key=YOUR_SECRET_KEY
对上述字符串执行 md5() 得到 32 位密文,即为 sign 的值。
产品ID即我方通道类型(通道编码),商户在创建订单时需传入对应的 productId 参数。具体可用产品ID以接口返回或客服提供为准,联系客服获取即可。
https://www.lubankeji.fyi/payment/api/product_list
HTTP GET,无需签名,返回当前启用的通道类型列表(product_id 即通道类型编码,product_name 为名称,remark 为备注):
{
"code": 0,
"data": [
{ "product_id": "defaultpay", "product_name": "默认支付", "remark": "" },
{ "product_id": "kuaijie", "product_name": "快捷支付", "remark": "" }
]
}
商户业务系统通过统一下单接口发起支付收款订单,支付网关会根据商户传入的产品ID选择对应的支付方式完成支付下单,并返回对应的支付参数。
本接口支持两种返回形态:链接形态(返回 payUrl,引导用户访问链接完成支付)与 payData 形态(部分通道如银行卡转账会返回 payData、payDataType,内容可能为银行卡信息等 JSON 字符串,商户解析后展示给用户)。
https://www.lubankeji.fyi/payment/api/pay/v2/unifiedOrder
POST/JSON Content-Type: application/json 字符编码:UTF-8
| 参数 | 字段名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| mchId | 商户号 | 是 | string | 10001 | 商户号 |
| productId | 产品ID | 是 | string | 8001 | 产品ID,见产品ID列表 |
| outTradeNo | 商户订单号 | 是 | string | SH20260308001 | 商户生成的订单号,仅限字母和数字,长度 16~33 位 |
| amount | 支付金额 (单位: 分) | 是 | int | 10000 | 支付金额 (单位: 分),例如 10000 即为 100.00 元 |
| reqTime | 请求时间 | 是 | long | 1772956800000 | 请求接口时间,13位时间戳 |
| notifyUrl | 异步通知地址 | 是 | string | https://test.com/notify | 支付结果异步回调URL,只有传了该值才会发起回调 |
| returnUrl | 跳转通知地址 | 否 | string | https://test.com/return | 支付结果同步跳转通知URL |
| userId | 商户用户ID | 否 | string | USER_001 | 商户用户ID,最大32个字符 |
| userName | 商户用户姓名 | 否 | string | 小明 | 商户侧用户姓名(如付款人姓名),可选;有值时参与签名 |
| userIp | 商户用户IP | 否 | string | 1.1.1.1 | 商户用户IP,支持IPV6 |
| sign | 签名 | 是 | string | f52ab92457b1a97c... | 签名值,不参与签名 |
| 参数 | 字段名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| code | 返回状态码 | 是 | int | 0 | 网关返回码:0=成功,其他失败 |
| message | 返回信息 | 是 | string | success | 具体错误原因 |
| 以下是 data 数据说明,其非空值的参数都参与签名 | |||||
| mchId | 商户号 | 是 | string | 10001 | 商户号 |
| tradeNo | 支付订单号 | 是 | string | PAY20260308... | 返回支付系统订单号 |
| outTradeNo | 商户订单号 | 是 | string | SH20260308001 | 返回商户传入的订单号 |
| amount | 订单金额 (单位: 分) | 是 | int | 10000 | 订单金额 (单位: 分) |
| payUrl | 支付地址 | 见说明 | string | https://... 或 "" | 无 payDataType 时为支付跳转 URL;有 payDataType 时为空字符串 |
| payData | 支付数据 | 否 | string | 见下方示例 | 与 payDataType 配套,内容格式由 payDataType 决定 |
| payDataType | 支付数据类型 | 否 | string | bankCard | 枚举值见下方说明。存在时使用 payData;不存在时使用 payUrl |
| sign | 签名 | 是 | string | f52ab924... | 对 data 内非空数据签名(含 payData、payDataType 时一并参与) |
{
"code": 0,
"message": "success",
"data": {
"mchId": "10001",
"tradeNo": "PAY20260308123456",
"outTradeNo": "SH20260308001",
"amount": 10000,
"payUrl": "https://pay.example.com/cashier/abc123",
"sign": "f52ab92457b1a97c1dbbc794de8dea8e"
}
}
{
"code": 0,
"message": "success",
"data": {
"mchId": "10001",
"tradeNo": "PAY20260308123456",
"outTradeNo": "SH20260308001",
"amount": 10000,
"payUrl": "",
"payData": "{\"accNo\":\"6222031512008267248\",\"accName\":\"池贤贵\",\"bankName\":\"工商银行\"}",
"payDataType": "bankCard",
"sign": "a1b2c3d4..."
}
}
| 值 | 含义 | payData 格式 | 商户处理方式 |
|---|---|---|---|
bankCard | 银行卡转账信息 | JSON 字符串,含 accNo(银行卡号)、accName(户名)、bankName(开户行) | 解析 JSON 后展示卡号、户名、开户行,引导用户转账 |
(不存在) — 当响应中无 payDataType 字段时,表示链接形态,商户使用 payUrl 跳转完成支付 | |||
{
"code": -1,
"message": "验证签名不正确"
}
当订单支付成功时,支付网关会向商户系统发起回调通知。如果商户系统没有正确返回,支付网关会延迟再次通知。
SUCCESS 或 OK 字符串(不区分大小写),平台将不再通知。state=1 表示订单支付成功,并判断 payAmount 是否与订单金额一致。
POST/JSON Content-Type: application/json 字符编码:UTF-8
请求URL:该URL是通过【统一下单API】中提交的参数 notifyUrl 设置。
| 参数 | 字段名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| mchId | 商户号 | 是 | string | 10001 | 商户号 |
| productId | 产品ID | 是 | string | 8001 | 产品ID |
| tradeNo | 支付订单号 | 是 | string | PAY20260308... | 返回支付系统订单号 |
| outTradeNo | 商户订单号 | 是 | string | SH20260308001 | 返回商户传入的订单号,仅限字母和数字,长度 16~33 位 |
| amount | 订单金额 (单位: 分) | 是 | int | 10000 | 订单金额 (单位: 分) |
| payAmount | 实际支付金额 (单位: 分) | 是 | int | 10000 | 实际支付金额 (单位: 分),请用这个金额上分 |
| state | 订单状态 | 是 | int | 1 | 订单状态:0-待支付,1-成功 |
| createTime | 订单创建时间 | 是 | string | 2026/03/08 12:00:00 | 格式:yyyy/MM/dd HH:mm:ss |
| payTime | 订单支付时间 | 是 | string | 2026/03/08 12:00:05 | 格式:yyyy/MM/dd HH:mm:ss |
| sign | 签名 | 是 | string | f52ab924... | 签名值,不参与签名 |
签名方法与请求签名一致:所有非空参数(不含 sign)按参数名字典序排序后拼接,追加 &key=商户密钥,做 MD5。
商户收到通知后,请验证签名并处理业务逻辑,然后返回 SUCCESS 或 OK(不区分大小写)。
商户通过该接口查询订单,支付网关会返回订单最新的数据。
https://www.lubankeji.fyi/payment/api/pay/queryOrder
POST/JSON Content-Type: application/json 字符编码:UTF-8
| 参数 | 字段名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| mchId | 商户号 | 是 | string | 10001 | 商户号 |
| outTradeNo | 商户订单号 | 是 | string | SH20260308001 | 商户生成的订单号,仅限字母和数字,长度 16~33 位 |
| reqTime | 请求时间 | 是 | long | 1772956800000 | 请求接口时间,13位时间戳 |
| sign | 签名 | 是 | string | f52ab924... | 签名值,不参与签名 |
| 参数 | 字段名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| code | 返回状态码 | 是 | int | 0 | 网关返回码:0=成功,其他失败 |
| message | 返回信息 | 是 | string | success | 具体错误原因 |
| 以下是 data 数据说明,其非空值的参数都参与签名 | |||||
| mchId | 商户号 | 是 | string | 10001 | 商户号 |
| productId | 产品ID | 是 | string | 8001 | 产品ID |
| tradeNo | 支付订单号 | 是 | string | PAY20260308... | 返回支付系统订单号 |
| outTradeNo | 商户订单号 | 是 | string | SH20260308001 | 返回商户传入的订单号 |
| amount | 订单金额 (单位: 分) | 是 | int | 10000 | 订单金额 (单位: 分) |
| payAmount | 支付订单金额 (单位: 分) | 否 | int | 10000 | 订单支付金额 (单位: 分) |
| createTime | 下单时间 | 是 | string | 2026/03/08 12:00:00 | 下单时间,格式:yyyy/MM/dd HH:mm:ss |
| payTime | 支付成功时间 | 否 | string | 2026/03/08 12:00:05 | 支付成功时间,格式:yyyy/MM/dd HH:mm:ss |
| state | 订单状态 | 是 | int | 1 | 订单状态:0=待支付,1=支付成功,2=支付失败 |
| sign | 签名 | 否 | string | f52ab924... | 对 data 内数据签名 |
{
"code": 0,
"message": "success",
"data": {
"mchId": "10001",
"productId": "8001",
"tradeNo": "PAY20260308123456",
"outTradeNo": "SH20260308001",
"amount": 10000,
"payAmount": 10000,
"state": 1,
"createTime": "2026/03/08 12:00:00",
"payTime": "2026/03/08 12:00:05",
"sign": "f52ab92457b1a97c1dbbc794de8dea8e"
}
}
&key=商户密钥,再做 MD5(32位,不区分大小写)SUCCESS 或 OK(不区分大小写),否则平台将重试通知notifyUrl 和 returnUrl 必须为可公网访问的完整 URL