GStable API 介绍
欢迎使用 GStable API。
GStable API 旨在为开发者提供一套构建在区块链之上的、稳定高效的支付基础设施。通过我们的 API,你可以创建支付链接、管理结账会话(Checkout Session),并利用稳定币网络实现全球范围内的支付接入。
为了降低集成门槛,我们的 API 采用了工程化的设计理念,提供统一的交互方式和可预测的响应结构,助你快速完成集成。
协议与设计
1. HTTP 方法
为了简化调用逻辑,API 仅使用两种 HTTP 方法:
- GET:用于检索资源(如查询订单详情、获取 webhook 列表)。
- POST:用于创建、更新资源或执行操作(如创建支付链接、归档商品)。
2. Base URL
所有 API 请求均通过 HTTPS 发送至以下基础地址:
https://api.gstable.io/payment/v1
3. 请求格式
- 所有 POST 请求的主体(Body)必须是 JSON 格式。
- 请确保在 HTTP Header 中设置
Content-Type: application/json。
响应格式
GStable API 使用统一的 JSON 包裹(Envelope) 格式来返回数据。无论请求成功还是失败(业务层面),API 通常都会返回该结构。
统一响应结构
所有接口的返回数据始终包含以下三个字段:
{
"code": 0,
"message": "success",
"data": {
// 具体的业务数据
"id": "prod_example_item_01",
"name": "Premium Plan"
}
}
| 字段 | 类型 | 描述 |
|---|---|---|
code | Integer | 业务状态码。0 表示业务执行成功。非 0 表示发生了业务错误(如参数无效、余额不足等)。 |
message | String | 提示消息。 人类可读的字符串,用于开发调试或向用户展示错误原因。 |
data | Any | 响应数据。 接口调用的主要结果。如果 code 不为 0,该字段通常为 null。 |
HTTP 状态码处理
为了简化错误处理逻辑,GStable API 在 HTTP 层面极少使用错误状态码。
- HTTP 200 OK:绝大多数请求(包括业务逻辑出错,如“参数缺失”或“找不到对象”)都会返回 200 状态码。请务必检查响应 Body 中的
code字段来判断业务是否成功。 - HTTP 401 Unauthorized:仅在 API Key 缺失或无效时返回,表示认证失败。
- HTTP 429 Too Many Requests:表示请求频率超过了限流配额。
开发建议
在编写客户端代码时,建议首先判断 HTTP 状态码是否为 200。如果是,再解析 JSON 并判断 code === 0 是否成立。
核心业务机制
了解 GStable 的支付确认与结算机制,有助于你更好地处理订单状态:
1. 支付确认
GStable 极大地简化了区块链支付的复杂性。我们采用链上支付成功即视为订单完成的判定逻辑。
- 支付判定:系统实时监测区块链网络。一旦检测到付款用户的链上交易(Transaction)成功,GStable 将立即把订单状态标记为已支付
paid。 - 确定性结算:GStable 提供确定性结算,保障资金一定到达商户钱包。即便后续跨链路由需要一定时间(通常为 30-40 秒),这属于底层协议的自动路由流程,不会影响商户侧的订单状态判定。
- 用户体验:付款用户不需要等待资金最终结算到商户钱包,只需确认自己的转账交易成功即可离开页面。
2. 资产与支付解耦
GStable 实现了支付层与结算层的分离,支持“任意币种支付,指定资产结算”。
- 商户侧:在创建
Product或Checkout Session时,你可以指定定价币种(如 Arbitrum 上的 USDC)。 - 用户侧:支付时,用户可以使用 GStable 支持的任意链上的任意代币(如 Ethereum 上的 USDT)。
- 自动路由:系统会自动处理跨链路由和兑换,商户无需关心用户持有何种资产,仅需关注最终结算到账的资产。
3. 非托管安全
GStable 坚持非托管原则,为商户和用户提供最高级别的资金安全保障。
- 无资金池:平台不设立中间资金池,资金流转完全基于链上智能合约执行。
- 点对点结算:资金直接从用户钱包流向商户,不存留于平台。
- 零私钥风险:平台不接触、不持有任何用户侧或商户侧的私钥。
核心资源概览
GStable API 围绕以下核心资源构建:
| 资源 | 描述 | 对应路径 |
|---|---|---|
| Product | 定义商品或服务(名称、价格、图片)。 | /product/* |
| Payment Link | 基于商品生成的永久收款链接,适用于无代码场景。 | /payment/link/* |
| Checkout Session | 编程式生成的临时收银台会话,适用于低代码集成。 | /session/* |
| Webhook | 用于接收异步支付结果通知。 | /webhook/* |
| Account | 用于查询配置在平台中的收款账户和钱包。 | /account/* |
限制与配额
- 默认限流:API 请求限制为每秒 100 次(QPS)。超出限制将返回
HTTP 429。 - 分页:列表接口(如
/product/list)均支持分页查询。