不写代码也能收款——一个稳定 URL,每次访问生成一笔新订单。
POST /api/v1/payment_links
GET /api/v1/payment_links
GET /api/v1/payment_links/{link_id}
POST /api/v1/payment_links/{link_id}统一下单每次都要服务端调一次接口。收款链接把同一个收银台放到一个固定地址背后:把 URL 发给买家,他打开就能付,你什么都不用写。
curl -X POST "https://web.kukopay.com/api/v1/payment_links" \
-H "X-Api-Key: kuko_live_你的密钥" \
-H "Content-Type: application/json" \
-d '{
"amount": 9900,
"currency": "USD",
"subject": "Pro 年度订阅",
"max_uses": 100,
"expires_at": "2026-12-31T23:59:59Z",
"metadata": { "campaign": "autumn-2026" }
}'| 参数 | 必填 | 说明 |
|---|---|---|
amount | ✅ | 每笔收款金额,整数最小货币单位 |
currency | USD、HKD 或 CNY,默认 USD。正式链接只能用平台为你开通的币种 | |
subject | 买家在收银台看到的标题 | |
max_uses | 可用次数上限,省略为不限 | |
expires_at | 失效时间,省略为永久有效 | |
notify_url | 正式必填 | 该链接产生订单的异步通知地址。正式链接未提供时使用开发者中心配置的正式环境回调地址;两者都没有,或不是公网 HTTPS 地址时,创建链接即返回 400,不会等到买家付款才失败 |
return_url | 支付完成后买家跳回的地址。正式链接须为公网 HTTPS 地址 | |
metadata | 见 metadata |
{
"object": "payment_link",
"link_id": "plink_7c2a41e9d8b30f56",
"merchant_id": "mch_a1b2c3d4e5",
"url": "https://web.kukopay.com/pay/plink_7c2a41e9d8b30f56",
"mode": "live",
"amount": 9900,
"currency": "USD",
"subject": "Pro 年度订阅",
"status": "active",
"max_uses": 100,
"used_count": 0,
"expires_at": "2026-12-31T23:59:59.000Z",
"metadata": { "campaign": "autumn-2026" },
"created_at": "2026-09-21T10:14:02.551Z"
}把 url 发给买家即可。
买家打开链接时,平台生成一笔新订单并跳转到收银台。因此一个链接可以收很多笔款,每一笔都是独立订单,有自己的 trade_no,走和 API 下单完全相同的结算、退款与通知流程。
订单的 out_trade_no 形如 plink_7c2a41e9d8b30f56_3(链接 id + 第几次使用),metadata 里会带上 kukopay_payment_link,方便反查。
used_count 统计的是生成过多少笔订单,不是成功支付了多少笔。买家打开但没付,计数一样会增加。
curl -X POST "https://web.kukopay.com/api/v1/payment_links/plink_7c2a41e9d8b30f56" \
-H "X-Api-Key: kuko_live_你的密钥" \
-H "Content-Type: application/json" \
-d '{ "status": "inactive" }'可以改 status、subject、max_uses、expires_at 和 metadata。
金额与币种不可修改。 已经发出去的链接如果能改价,买家看到的价格和实际扣款就会对不上。需要改价请停用旧链接,新建一个。
买家会看到一个说明页面,不会看到报错。四种情况:链接不存在、已停用、已过期、已达使用上限。
公开地址天然会被反复打开,所以按访问者做了每分钟 20 次的频率限制。正常买家刷新或多开标签页不会触发。