API 接入指南

面向商户和开发者的银行转账凭证自动验证 API 接入指南

Base URL

本文档中所有 endpoint 的基础地址

https://api.slip2try.com

API 版本 v1(所有 endpoint 均位于 /api/v1 下)· 最近更新 2026-10-23

API v1

创建 API 密钥 → 发送凭证验证请求 → 查看历史记录

3 步
  1. 第 1 步

    创建 API 密钥

    注册后前往 API 密钥页面创建密钥(系统不会自动创建)。密钥只显示一次——请复制并保存在服务器端。

  2. 第 2 步

    发送凭证二维码进行验证

    读取凭证上的二维码内容(以 00... 开头),发送至 POST /api/v1/verify/slip

    响应中的 data.transfer 包含实际金额,duplicate 表示是否为重复凭证
  3. 第 3 步

    每一笔结果均可追溯

    所有请求都会被记录。点击某一行即可查看凭证详情、付款人、收款人、金额和来源 IP。

正式收款前必须做好的 8 件事

必做
  1. 1只从您的服务器调用 API——切勿把密钥放进网页或 App · 开发时使用 s2t_test_ 密钥,上线时换成 s2t_live_
  2. 2每次验证凭证都发送 expectedAmount = 订单金额
  3. 3仅当 success && !duplicate && warnings.length === 0 && environment === "live" 时才发货——其他情况一律拒绝或转人工审核
  4. 4从 data.transfer 读取转账详情 · 将 transactionRef 设为唯一键,并把 verificationId 与订单一起保存
  5. 5只根据 success + reason 区分情况——切勿依据 message 文本
  6. 6客户端超时设为 60 秒 · 超时或连接中断时,先用 GET /api/v1/verifications?qrData=(或 ?requestId=)查询结果,再决定是否重发
  7. 7收到 429 或 503 时按 Retry-After 等待后再重试 · 大量请求请排队发送(默认每个店铺每分钟 120 次)
  8. 8Webhook:基于 Raw Body 校验 X-VerifySlips-Signature-V2,并拒绝时间偏差超过 5 分钟的请求 · 用 body 中的 id 去重 · 10 秒内返回 2xx

左侧为请求代码,右侧为解析后的凭证字段及已核验的银行标志。

HTTP 200 · 成功

请求代码

POST /api/v1/verify/slip

# 仅当 success: true、duplicate: false、warnings: [] 且 environment: "live" 时才发货 · expectedAmount = 订单金额
curl -X POST https://api.slip2try.com/api/v1/verify/slip \
  --max-time 60 \
  -H "Authorization: Bearer s2t_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"qrData":"0038000600000101030060217A3828f7b4f3244ff35102TH910480CE","expectedAmount":100000}'

# 超时或连接中断:先查询结果再决定是否重发(不扣配额)
curl -G https://api.slip2try.com/api/v1/verifications \
  --max-time 60 \
  -H "Authorization: Bearer s2t_live_xxxxxxxx" \
  --data-urlencode "qrData=0038000600000101030060217A3828f7b4f3244ff35102TH910480CE"

凭证解析示例

Krungthai Bank

Krungthai Business · Krungthai Bank

已与银行核验一致

ktb

转账金额

100,000.00 泰铢

Krungthai Bank

付款账户

น.ส.สมศรี ใจดี

Krungthai Bank · XX123-4
SCB

收款账户

EXAMPLE CO., LTD.

SCB · XX567-8
transactionRef
A3828f7b4f3244ff3
transactionDateTime
2026-09-01T17:51:01+07:00
amount.amount
100,000.00 泰铢
duplicate
false · 新凭证

所有服务商结构一致

只需编写一次读取 data.transfer 的代码,即可直接用于 KTB、CIMB、SCB 和 Slip2Go。

每次充值或发货前都要检查 duplicate

发货前必须检查

如何解读结果

响应结果处理方式
success: true · duplicate: false新凭证可以充值 / 发货
success: true · duplicate: true重复凭证拒绝——客户可能在使用旧凭证
success: false验证未通过不要发货,请客户核对凭证

首次验证将返回 duplicate: false 和 duplicateInfo: null

重复凭证的响应示例

Response · 重复凭证
{
  "success": true,
  "cached": true,
  "duplicate": true,
  "duplicateInfo": {
    "firstVerifiedAt": "2026-10-14T04:14:49.145Z",
    "previousCount": 2
  },
  "data": { "...": "转账详情与首次验证时相同" }
}
  • 仅按您的店铺计算

    其他店铺验证过这张凭证,不会算作您店铺的重复——您店铺首次验证仍正常扣除 1 张

  • 按二维码或参考号判断重复

    相同二维码,或二维码不同但 transactionRef 相同,都算重复,且重复凭证不扣额度

  • 未通过的验证不计入

    验证未通过的请求不会被算作之前的验证

  • 并发请求只有一个结果

    同一张凭证同时发送多个请求时,只有一个请求会得到 duplicate: false

  • Webhook 同样会告知

    verify.success 包含 data.duplicate 和 data.firstVerifiedAt

  • 在后台查看历史

    验证记录 页面带有“重复凭证”标签和筛选功能

在您的系统中再加一层保护

请同时在订单数据库中将 transactionRef 设为唯一键(unique),以防您的代码重复调用或重复收到 webhook。

正式上线前,用测试密钥试遍所有情况——模拟结果,不调用银行,不扣配额

不扣配额

点击各项可展开或收起,查看需要发送的参数、Request 示例,以及成功和失败时的 Response 格式。

reason 字段可帮助您的系统准确区分情况并正确提示用户

每分钟最多请求数,以及超出时的处理方式

默认 120 次 / 分钟

系统会按您在回调 / Webhook 页面选择的事件,自动将结果推送到您的 Callback URL,无需自行编写轮询代码。

已上线

用于将验证结果中的 fromBankCode / toBankCode 转换为银行名称和标志(泰国央行 3 位代码)

20 个银行代码

已为您店铺开通的服务,以及无法自行解决时的联系方式