拉卡拉支付接口分账功能对接教程——从零到上线
一、什么是拉卡拉分账功能?
拉卡拉分账功能,是拉卡拉为平台型商户提供的一款自动化资金分配工具。简单说就是:
例如一个外卖平台:
↓
├─ 商家 A 分得:25 元(餐费)
├─ 平台分得:3 元(佣金)
└─ 骑手分得:2 元(配送费)
整个过程对消费者无感,对商户来说资金自动清分、T+1 到账。不需要人工对账,不需要手动转账,省时省力还减少差错。
二、接入前的准备工作
第一步:申请拉卡拉商户号
联系本站客服18056517119,提交营业执照、法人身份证、对公账户信息,申请成为拉卡拉特约商户。分账功能需要在商户资料中注明"开通分账结算"。
客服热线:95016(工作日 8:00-20:00)第二步:获取 API 密钥
拉卡拉会提供以下关键参数:
| 参数名 | 说明 | 示例值 |
|---|---|---|
merchant_no | 商户号 | 822290070110001 |
app_id | 应用ID(接入系统标识) | 2022022812345678 |
api_secret | API密钥(签名用,保密) | 4f3c8a2b9e1d... |
public_key | 拉卡拉公钥(验签用) | -----BEGIN ... |
api_secret 和私钥请保存在服务器端,不要明文暴露在客户端代码中。第三步:设置回调地址
在拉卡拉商户后台配置:
· 支付结果通知地址(notify_url)
· 分账结果通知地址(split_notify_url)
这两个 URL 必须是外网可访问的 HTTPS 地址。
三、分账业务流程全景图
以下是标准的拉卡拉分账对接流程:
│ 用户在平台 │ ──→ │ 平台服务端 │ ──→ │ 拉卡拉API │
│ 下单付款 │ │ 处理分账 │ │ 执行清算 │
└──────────┘ └──────────┘ └──────────┘
│ │ │
▼ ▼ ▼
支付凭证展示 组装分账参数 资金分配到各
给用户看 请求支付接口 方账户
关键节点:
用户下单
平台调用下单接口(携带分账标记)
拉卡拉冻结分账金额
用户支付成功
平台调用分账执行接口
资金解冻并分配到各方账户
各方收到到账通知
四、核心接口对接详解
4.1 下单接口(含分账标记)
请求地址:POST https://open.lakala.com/api/v3/pay/unifiedorder
数据格式:JSON
请求参数示例(简化):
| 参数 | 说明 |
|---|---|
split_mark = "Y" | 表示此笔交易需要分账 |
split_rule[].receiver_no | 必须是已在拉卡拉注册的子商户 |
amount 总和 | 须 = total_amount - 平台自己留存的金额 |
| 最大收款方 | 可分账给最多 10 个收款方 |
返回示例:
split_mark = "Y",这笔资金会立刻被冻结在拉卡拉监管户,不会立刻划拨到平台账户。用户支付成功后,拉卡拉会异步通知 notify_url。4.2 支付结果通知
用户支付成功后,拉卡拉会 POST 请求到你的 notify_url:
收到通知后你需要:
验证签名(用拉卡拉公钥验签)
验证 order_no 和金额是否匹配
更新订单状态为"已支付"
返回
"SUCCESS"(告诉拉卡拉不用再通知了)
4.3 分账执行接口
确认订单 OK 后(例如平台确认商家已接单),调用此接口执行分账:
请求地址:POST https://open.lakala.com/api/v3/split/execute
返回结果:
分账受理成功后,拉卡拉会异步执行资金清分,并将结果通知到 split_notify_url。
4.4 分账结果通知
分账执行完成后,拉卡拉通知你的 split_notify_url:
到这里,整笔分账完成。剩余平台留存的 500 元会在商户结算周期自动到账。
五、关键代码示例(Node.js)
5.1 签名工具函数
// 拉卡拉 API 签名算法(SHA256withRSA)
const crypto = require('crypto');
function generateSign(params, privateKey) {
// 1. 参数按字典序排序
const keys = Object.keys(params).sort();
const str = keys
.filter(k => params[k] !== '' && params[k] !== undefined && k !== 'sign')
.map(k => `${k}=${params[k]}`)
.join('&');
// 2. SHA256 签名
const signer = crypto.createSign('SHA256');
signer.update(str, 'utf8');
return signer.sign(privateKey, 'base64');
}
function verifySign(params, publicKey) {
const sign = params.sign;
const keys = Object.keys(params).sort();
const str = keys
.filter(k => params[k] !== '' && params[k] !== undefined && k !== 'sign')
.map(k => `${k}=${params[k]}`)
.join('&');
const verifier = crypto.createVerify('SHA256');
verifier.update(str, 'utf8');
return verifier.verify(publicKey, sign, 'base64');
}5.2 下单并标记分账
const axios = require('axios');
async function createOrderWithSplit(orderData) {
const params = {
merchant_no: '822290070110001',
out_trade_no: orderData.orderId,
total_amount: orderData.total, // 单位:分
subject: orderData.subject,
trade_type: 'JSAPI',
notify_url: 'https://api.xxx.com/pay/notify',
split_mark: 'Y',
split_rule: orderData.splits
};
// 签名
params.sign = generateSign(params, PRIVATE_KEY);
try {
const res = await axios.post(
'https://open.lakala.com/api/v3/pay/unifiedorder',
params
);
return res.data;
} catch (err) {
console.error('下单失败:', err.response?.data || err.message);
throw err;
}
}5.3 执行分账
async function executeSplit(outTradeNo, tradeNo, splitRule) {
const params = {
merchant_no: '822290070110001',
out_trade_no: outTradeNo,
trade_no: tradeNo,
split_rule: splitRule,
remark: '订单确认完成,执行分账'
};
params.sign = generateSign(params, PRIVATE_KEY);
const res = await axios.post(
'https://open.lakala.com/api/v3/split/execute',
params
);
return res.data;
}5.4 处理支付结果通知
// 接收拉卡拉异步通知
app.post('/pay/notify', (req, res) => {
const data = req.body;
// 1. 验签
if (!verifySign(data, LAKALA_PUBLIC_KEY)) {
return res.status(400).send('签名验证失败');
}
// 2. 验证订单状态
if (data.trade_status !== 'TRADE_SUCCESS') {
return res.status(200).send('FAIL');
}
// 3. 更新本地订单状态
updateOrderStatus(data.out_trade_no, 'paid');
// 4. 告诉拉卡拉收到通知
res.send('SUCCESS');
});六、常见问题与避坑指南
Q1:分账金额没有立刻到接收方账户?
正常。分账执行后状态为 "PROCESSING",资金实际到账是 T+1 结算周期。拉卡拉会在每个结算日自动将已分账金额划入子商户账户。
Q2:用户支付后发生了退款,分账怎么处理?
分账未执行时:直接全额退款,资金从冻结户原路返回。
分账已执行后:需要主动调用「退款分账接口」收回已分资金,再进行退款。注意:已分账的资金需要向子商户追回。
Q3:可以支持部分退款 + 部分保留分账吗?
可以。拉卡拉分账支持「退款重分」模式:退款时传入新的分账规则,系统会将剩余金额按新规则分配。
Q4:分账的接收方(子商户)怎么注册?
子商户也需要在拉卡拉完成入驻审核,获得子商户号。子商户可以是企业、个体工商户或个人经营者。平台可以通过拉卡拉提供的「子商户入驻 API」进行批量进件。
Q5:分账比例有限制吗?
每个接收方单笔上限为交易金额的 100%。平台作为主商户,暂未设置最低留存比例限制。但建议平台至少留存 0.01 元以方便对账。
Q6:分账记录如何对账?
拉卡拉提供「日对账单下载接口」和「分账明细查询接口」。建议每日定时拉取对账单,与本地订单做交叉校验。对账是保障资金安全最重要的一环,不要省!
七、适用场景分析
| 场景 | 分账模式 |
|---|---|
| 电商平台 | 货款分给商家,佣金留平台 |
| 外卖平台 | 餐费→商家 配送费→骑手 佣金→平台 |
| 连锁门店 | 总店统一收款,按比例分给各分店 |
| 共享经济/兼职平台 | 用户付款→平台扣服务费→分给服务方 |
| SaaS平台 | 代商户收款→商户结算→SaaS扣订阅费 |
| 房产/大宗交易中介 | 下定金→分给各渠道方 |
| 供应链金融 | 核心企业收款→分给上下游供应商 |
八、SEO 优化小贴士
本文已优化的 SEO 要素:
中文标题包含核心搜索词:"拉卡拉支付接口"、"分账功能"、"对接教程"
H1-H2-H3 标题层次清晰
涵盖长尾关键词如"平台型商户资金分账"、"子商户入驻"、"T+1结算"、"退款重分模式"等
提供实际可运行的代码示例,提高内容原创度和实用性
FAQ 结构覆盖用户真实搜索意图
建议你发布时补充:
在文章头部加 SEO meta description(不超过120字)
内链指向你的产品/服务页面
文中适当插入配图(分账流程图、API调用截图等)
文末加一句引导 CTA,如"如需拉卡拉分账接口技术支持,请联系xxx"
九、附录:重要链接与参考
拉卡拉开放平台:https://o.lakala.com
拉卡拉官网:https://www.lakala.com
拉卡拉客服热线:95016(8:00-20:00)
拉卡拉股票代码:300773.SZ(深交所上市支付公司)
