交易 API
交易 API 涵盖完整的支付生命周期:创建结账会话、查询交易状态以及验证区块链确认。
交易 API 涵盖完整的支付生命周期:创建结账会话、查询交易状态以及验证区块链确认。
支付流程概览
┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────────┐
│ Your Server │───>│ Create │───>│ Customer │───>│ Blockchain │
│ │ │ Checkout │ │ Pays on │ │ Confirms │
│ POST api.php│ │ Session │ │ Payment Page │ │ Transaction │
└─────────────┘ └──────────────┘ └──────────────┘ └───────────────┘
│ │
│ payment_url │
▼ ▼
┌──────────────┐ ┌───────────────┐
│ Redirect │ │ Webhook POST │
│ Customer │ │ to Your Server│
│ to pay.php │ │ │
└──────────────┘ └───────────────┘
- 您的服务器调用
create-checkout-session,传入支付金额和货币。 - 您会收到一个
payment_url,将客户重定向到该地址。 - 客户选择加密货币,扫描二维码并发送付款。
- QuantaPay 监控区块链并等待确认。
- 确认完成后,QuantaPay 会向您的服务器发送 webhook 和/或将客户重定向。
create-checkout-session
创建新的支付会话。返回一个支付 URL,用于将客户重定向到支付页面。
请求
curl -X POST https://cloud.quantapay.app/api.php \
-d "function=create-checkout-session" \
-d "api-key=YOUR_API_KEY" \
-d "price=49.99" \
-d "currency=USD"
参数
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
price | number | 是 | 以指定货币计价的支付金额。 |
currency | string | 是 | ISO 4217 货币代码(例如 USD、EUR、GBP)。 |
order_id | string | 否 | 您的内部订单 ID,用于参考。 |
redirect | string | 否 | 支付成功后重定向客户的 URL。 |
cancel_url | string | 否 | 客户取消支付时重定向的 URL。 |
note | string | 否 | 附加到交易的内部备注。 |
items | JSON string | 否 | 商品行项目数组(见下文)。 |
customer | JSON string | 否 | 客户信息对象。 |
signature | string | 否 | 用于防篡改的 HMAC-SHA256 签名。 |
timestamp | integer | 否 | Unix 时间戳(提供签名时必须同时提供)。 |
external_reference | string | 否 | 来自 WordPress 插件的加密引用。 |
plugin | string | 否 | 来源插件标识符(例如 woo、edd)。 |
商品格式
[
{
"name": "Product Name",
"qty": 2,
"price": 24.99,
"image": "https://example.com/product.jpg"
}
]
- 每个会话最多 50 个商品。
name:最多 200 个字符。image:必须是 HTTP 或 HTTPS URL,最多 500 个字符。
响应
{
"success": true,
"response": {
"session_id": "cs_a1b2c3d4e5f6a1b2c3d4",
"payment_url": "https://cloud.quantapay.app/pay.php?session=cs_a1b2c3d4e5f6a1b2c3d4",
"expires_at": "2026-03-08T11:00:00+00:00"
}
}
session_id:唯一会话标识符(格式:cs_+ 24 个十六进制字符)。payment_url:将客户重定向到此 URL 以完成支付。expires_at:ISO 8601 时间戳。会话在 60 分钟后过期。
错误响应
| 消息 | 原因 |
|---|---|
Missing required fields: price, currency | price 为 0/缺失或 currency 为空。 |
Invalid signature | HMAC 签名验证失败。 |
Request expired | 时间戳与服务器时间相差超过 5 分钟。 |
Failed to create checkout session | 数据库错误。 |
get-checkout-session
查询结账会话的当前状态。
请求
curl -X POST https://cloud.quantapay.app/api.php \
-d "function=get-checkout-session" \
-d "api-key=YOUR_API_KEY" \
-d "session_id=cs_a1b2c3d4e5f6a1b2c3d4"
参数
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
session_id | string | 是 | 结账会话 ID(以 cs_ 开头)。 |
响应
{
"success": true,
"response": {
"session_id": "cs_a1b2c3d4e5f6a1b2c3d4",
"status": "paid",
"price": 49.99,
"currency": "usd",
"order_id": "ORD-12345",
"created_at": "2026-03-08T10:00:00+00:00",
"expires_at": "2026-03-08T11:00:00+00:00",
"paid_at": "2026-03-08T10:15:23+00:00"
}
}
会话状态
| 状态 | 描述 |
|---|---|
active | 会话已打开,正在等待付款。 |
paid | 已收到付款并在区块链上确认。 |
expired | 会话在未收到付款的情况下过期(60 分钟后)。 |
cancelled | 会话在收到付款之前被取消。 |
get-transactions
查询分页的交易列表。适用于对账和报表。
请求
curl -X POST https://cloud.quantapay.app/api.php \
-d "function=get-transactions" \
-d "api-key=YOUR_API_KEY" \
-d "pagination=0"
参数
所有参数均为可选:
| 参数 | 类型 | 描述 |
|---|---|---|
pagination | integer | 页码(从 0 开始)。每页最多返回 100 条交易。 |
search | string | 按交易 ID、哈希、金额或描述搜索。 |
status | string | 按状态筛选:C(已完成)、P(待处理)、X(金额不足)、E(已过期)。 |
cryptocurrency | string | 按加密货币代码筛选(例如 btc、eth)。 |
date_range | array | 日期范围筛选,两个元素的数组:date_range[0]=2026-01-01&date_range[1]=2026-03-01。 |
checkout_id | string | 按结账/支付按钮 ID 筛选。 |
响应
返回交易对象数组:
{
"success": true,
"response": [
{
"id": "123",
"title": "Payment #ORD-12345",
"description": "",
"from": "0xCustomerAddress...",
"to": "0xYourAddress...",
"hash": "0xTransactionHash...",
"amount": "0.025",
"amount_fiat": "49.99",
"cryptocurrency": "eth",
"currency": "usd",
"external_reference": "",
"creation_time": "2026-03-08 10:00:00",
"status": "C",
"webhook": "1",
"vat": ""
}
]
}
交易状态
| 代码 | 状态 | 描述 |
|---|---|---|
C | 已完成 | 付款已在区块链上确认。 |
P | 待处理 | 等待付款或区块链确认。 |
X | 金额不足 | 已收到付款但金额低于所需金额。 |
E | 已过期 | 支付窗口在未收到足够付款的情况下过期。 |
R | 已退款 | 付款已退还。 |
get-transaction
根据 ID 获取单笔交易的详细信息。
请求
curl -X POST https://cloud.quantapay.app/api.php \
-d "function=get-transaction" \
-d "api-key=YOUR_API_KEY" \
-d "transaction_id=123"
参数
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
transaction_id | integer | 是 | 交易 ID。 |
响应
返回单个交易对象(格式与 get-transactions 相同)。
check-transaction
手动触发特定交易的区块链确认检查。
请求
curl -X POST https://cloud.quantapay.app/api.php \
-d "function=check-transaction" \
-d "api-key=YOUR_API_KEY" \
-d "transaction=TRANSACTION_JSON"
参数
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
transaction | JSON string | 是 | 要检查的交易对象(由 get-transaction 返回的格式)。 |
响应
返回更新后的交易对象,包含当前确认状态。如果达到所需的确认次数,交易状态将变为 C(已完成)。
注意:在正常操作中通常不需要此功能。QuantaPay 会通过其定时任务系统自动检查确认。仅在需要强制立即检查时使用。