K
KOREA PAYMENT TOOLS

Kakao Pay Order API

文档导航

接入与认证

接口采用纯 CDK 模式,不需要另外申请 API Key。每次请求都在 X-CDK 请求头中携带一条龙 CDK;该 CDK 同时用于身份验证、订单归属校验和任务额度结算。

项目
Base URLhttps://masi.cc.cd/kakao/scan/api/integration
认证请求头X-CDK: KSCAN-...
请求格式application/json; charset=utf-8
时间字段Unix 秒级时间戳
Content-Type: application/json X-CDK: YOUR_CDK
CDK 应仅保存在服务端。查询订单不会扣除额度;只有工人确认扫码完成后才正式扣除一次任务额度,提链失败或任务过期会释放预留额度。

1. 创建订单

POST/orders

使用 X-CDK 中的一条龙 CDK 与用户 AT 创建订单。服务端完成链接提取后进入工人扫码队列。一次成功请求创建一个新订单;当前不支持幂等键,网络超时后应先查询已获得的订单编号,避免直接重复提交。

请求体

字段类型必填说明
access_tokenstring完整 AT 内容或系统支持的 AT 输入格式
curl -X POST 'https://masi.cc.cd/kakao/scan/api/integration/orders' \ -H 'Content-Type: application/json' \ -H 'X-CDK: KSCAN-XXXX-XXXX-XXXX-XXXX' \ -d '{ "access_token": "YOUR_AT_CONTENT" }'

HTTP 201

{ "ok": true, "order": { "order_id": "8f21ab34cd56ef78", "status": "extracting", "message": "正在进行 Kakao 链接提取。", "worker_name": "", "created_at": 1785256800, "updated_at": 1785256800, "completed_at": 0, "qr_expires_at": 0, "reward_cents": 0, "error": "" }, "ticket": { "code": "KSCAN-XXXX-XXXX-XXXX-XXXX", "total_uses": 5, "used_uses": 0, "pending_uses": 1, "available_uses": 4 } }

2. 查询订单

GET/orders/{order_id}

只能使用创建该订单时的同一张 CDK 查询。建议在未完成时每 2–5 秒轮询一次,进入终态后停止轮询。

curl 'https://masi.cc.cd/kakao/scan/api/integration/orders/8f21ab34cd56ef78' \ -H 'X-CDK: KSCAN-XXXX-XXXX-XXXX-XXXX'

HTTP 200

{ "ok": true, "order": { "order_id": "8f21ab34cd56ef78", "status": "completed", "message": "扫码完成。", "worker_name": "worker-a", "created_at": 1785256800, "updated_at": 1785257016, "completed_at": 1785257016, "qr_expires_at": 1785257700, "reward_cents": 50, "error": "", "link": "https://payment.example/kakao/...", "account_check": { "ok": true, "status": "live_api", "email": "user@example.com", "account_plan": "plus", "is_plus": true, "is_paid": true, "checked_at": 1785257016, "message": "已通过实时账户接口检测。" } } }
account_check 仅在订单完成后返回。AT 原文不会出现在查询响应中。

3. 查询 CDK 额度

POST/tickets/status

查询当前认证 CDK 的总额度、已用、处理中和剩余额度。查询操作不扣除任务额度。

curl -X POST 'https://masi.cc.cd/kakao/scan/api/integration/tickets/status' \ -H 'Content-Type: application/json' \ -H 'X-CDK: KSCAN-XXXX-XXXX-XXXX-XXXX' \ -d '{}'
{ "ok": true, "ticket": { "code": "KSCAN-XXXX-XXXX-XXXX-XXXX", "status": "available", "ticket_type": "all_in_one", "total_uses": 5, "used_uses": 2, "pending_uses": 1, "available_uses": 2 } }

订单状态与关键字段

status是否终态含义额度处理
extracting正在提取支付链接额度预留
awaiting_worker已提链,等待工人领取额度预留
claimed工人已领取,等待扫码额度预留
completed工人确认扫码完成正式扣除一次
failed提链或处理失败释放预留额度
expired支付链接或任务超时释放预留额度

套餐检测状态

account_check.status说明
post_checking完成后正在同步套餐状态
live_api由实时账户接口得到结果
at_claim实时检测不可用,回退使用 AT 声明
unavailable暂时无法确认套餐信息

HTTP 状态码与错误结构

{ "ok": false, "error": "可读的错误说明" }
HTTP场景处理建议
400JSON、AT、CDK或参数无效,或CDK额度不足修正请求或补充额度后再提交
401请求头未提供 CDK检查 X-CDK 请求头
404订单不存在或不属于当前 CDK检查订单编号及创建订单时使用的 CDK
429请求频率超过网关限制指数退避后重试
500服务器内部错误保存时间、订单号和错误内容后联系管理员
503数据库或缓存暂不可用稍后重试并检查健康接口

额度、轮询与安全规则

CDK 额度

  • 创建订单时预留一次 CDK 额度。
  • 工人确认扫码完成后正式扣除一次。
  • 提链失败或任务过期会自动释放预留额度。
  • 查询订单和查询额度不会额外扣除次数。

客户端建议

  • 连接与读取超时建议设置为 15–30 秒。
  • 查询间隔建议 2–5 秒,终态后立即停止。
  • 对 429/503 使用指数退避,不要高频并发重试。
  • 日志中对 CDK 和 AT 做脱敏。