充值系统 API 文档
概述
- Base URL:
https://hhh.ow818.com
- Content-Type:
application/json
- 跨域来源:
https://ow800.com
通用响应结构
所有API返回统一的响应格式:
| 字段 |
类型 |
说明 |
| code |
number |
状态码,200表示成功 |
| message |
string | null |
消息描述 |
| data |
object | null |
响应数据 |
| timestamp |
number |
时间戳(毫秒) |
| error |
boolean |
是否发生错误 |
| success |
boolean |
请求是否成功 |
1. 校验卡密
验证卡密是否有效。
请求
POST /api/cards/verify
请求头
| Header |
值 |
| Content-Type |
application/json |
| Accept |
application/json |
请求参数
| 参数 |
类型 |
必填 |
说明 |
| cardKey |
string |
是 |
卡密密钥 |
响应
成功响应 (卡密有效)
{
"code": 200,
"message": null,
"data": {
"success": true,
"message": "CARD_VERIFICATION_SUCCESS",
"errorCode": null,
"cardId": 536,
"productId": 3,
"productName": "ChatGPT",
"productDescription": "自动充值GPT",
"productPrice": 10.00,
"verifyTime": "2025-11-26 14:56:55"
},
"timestamp": 1764140215106,
"error": false,
"success": true
}
失败响应 (卡密不存在)
{
"code": 200,
"message": null,
"data": {
"success": false,
"message": "CARD_NOT_FOUND",
"errorCode": 3000,
"cardId": null,
"productId": null,
"productName": null,
"productDescription": null,
"productPrice": null,
"verifyTime": "2025-11-26 14:59:56"
},
"timestamp": 1764140396409,
"error": false,
"success": true
}
data 字段说明
| 字段 |
类型 |
说明 |
| success |
boolean |
验证是否成功 |
| message |
string |
验证结果消息 |
| errorCode |
number | null |
错误码(失败时返回) |
| cardId |
number | null |
卡密ID |
| productId |
number | null |
产品ID |
| productName |
string | null |
产品名称 |
| productDescription |
string | null |
产品描述 |
| productPrice |
number | null |
产品价格 |
| verifyTime |
string |
验证时间 |
错误码
| 错误码 |
消息 |
说明 |
| 3000 |
CARD_NOT_FOUND |
卡密不存在 |
2. 查询仪表盘状态
获取各充值渠道和库存的可用性状态。
请求
GET /api/dashboard/stats?availabilityOnly=true
请求头
查询参数
| 参数 |
类型 |
必填 |
说明 |
| availabilityOnly |
boolean |
否 |
仅返回可用性信息 |
响应
{
"code": 200,
"message": null,
"data": {
"channelOneAvailable": false,
"channelTwoAvailable": true,
"gptInventoryAvailable": false,
"bankCardAvailable": true,
"channelThreeAvailable": false,
"googleInventoryAvailable": false
},
"timestamp": 1764140430161,
"error": false,
"success": true
}
data 字段说明
| 字段 |
类型 |
说明 |
| channelOneAvailable |
boolean |
渠道一是否可用 |
| channelTwoAvailable |
boolean |
渠道二是否可用 |
| channelThreeAvailable |
boolean |
渠道三是否可用 |
| gptInventoryAvailable |
boolean |
GPT库存是否可用 |
| googleInventoryAvailable |
boolean |
Google库存是否可用 |
| bankCardAvailable |
boolean |
银行卡支付是否可用 |
3. 提交充值任务
提交充值请求,创建充值任务。
请求
POST /api/recharge/perform
请求头
请求体
{
"cardInfo": "SPZOQEZH65IPY2M4",
"accessToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6...",
"fullToken": "{\"user\":{\"id\":\"user-xxx\",...}",
"userEmail": "example@qq.com",
"confirmed": true,
"account": {
"id": "6bb82f4c-5c12-40dc-99b9-e0d2b20e0e4a"
}
}
请求参数说明
| 参数 |
类型 |
必填 |
说明 |
| cardInfo |
string |
是 |
卡密信息 |
| accessToken |
string |
是 |
OpenAI访问令牌(JWT格式) |
| fullToken |
string |
是 |
完整令牌信息(JSON字符串) |
| userEmail |
string |
是 |
用户邮箱 |
| confirmed |
boolean |
是 |
是否已确认 |
| account |
object |
是 |
账户信息 |
| account.id |
string |
是 |
账户ID |
fullToken 结构说明
fullToken 是一个JSON字符串,包含以下结构:
{
"user": {
"id": "user-xxx",
"email": "example@qq.com",
"idp": "auth0",
"iat": 1759998592,
"mfa": true
},
"expires": "2026-02-24T01:07:13.367Z",
"account": {
"id": "6bb82f4c-5c12-40dc-99b9-e0d2b20e0e4a",
"planType": "free",
"structure": "personal",
"workspaceType": null,
"organizationId": null,
"isDelinquent": true,
"gracePeriodId": null
},
"accessToken": "eyJhbGciOiJSUzI1NiIs...",
"authProvider": "openai",
"rumViewTags": {
"light_account": {
"fetched": false
}
}
}
响应
成功响应
{
"code": 200,
"message": null,
"data": {
"usageId": 2814,
"success": true,
"processing": true,
"rechargeUrl": "https://pay.openai.com/c/pay/cs_live_xxx...",
"message": "任务已创建,等待充值结果",
"rechargeType": 1,
"bankCardId": 2025
},
"timestamp": 1764141428873,
"error": false,
"success": true
}
失败响应
{
"code": 4000,
"message": "充值失败,请重新提交token",
"data": null,
"timestamp": 1764140594006,
"error": true,
"success": false
}
成功响应 data 字段说明
| 字段 |
类型 |
说明 |
| usageId |
number |
使用记录ID,用于后续查询状态 |
| success |
boolean |
任务创建是否成功 |
| processing |
boolean |
是否正在处理中 |
| rechargeUrl |
string |
OpenAI支付链接 |
| message |
string |
状态消息 |
| rechargeType |
number |
充值类型 |
| bankCardId |
number |
银行卡ID |
错误码
| 错误码 |
消息 |
说明 |
| 4000 |
充值失败,请重新提交token |
Token无效或已过期 |
4. 查询任务状态
根据 usageId 查询充值任务的当前状态。
请求
GET /api/recharge/status?usageId={usageId}
请求头
查询参数
| 参数 |
类型 |
必填 |
说明 |
| usageId |
number |
是 |
使用记录ID(从提交任务接口获取) |
响应
进行中状态
{
"code": 200,
"message": null,
"data": {
"usageId": 2814,
"status": 0,
"cardKey": "SPZOQEZH65IPY2M4",
"rechargeUrl": "https://pay.openai.com/c/pay/cs_live_xxx...",
"userEmail": "example@gmail.com",
"updatedAt": "2025-11-26 15:17:10",
"errorMessage": null,
"fullToken": "{...}",
"account": {
"id": "094a43f5-9cad-43e7-80f3-76d354b4bce5"
}
},
"timestamp": 1764141430164,
"error": false,
"success": true
}
成功状态
{
"code": 200,
"message": null,
"data": {
"usageId": 2814,
"status": 2,
"cardKey": "SPZOQEZH65IPY2M4",
"rechargeUrl": "https://pay.openai.com/c/pay/cs_live_xxx...",
"userEmail": "example@gmail.com",
"updatedAt": "2025-11-26 15:18:49",
"errorMessage": null,
"fullToken": "{...}",
"account": {
"id": "094a43f5-9cad-43e7-80f3-76d354b4bce5"
}
},
"timestamp": 1764141531348,
"error": false,
"success": true
}
data 字段说明
| 字段 |
类型 |
说明 |
| usageId |
number |
使用记录ID |
| status |
number |
任务状态(见状态码表) |
| cardKey |
string |
卡密密钥 |
| rechargeUrl |
string |
OpenAI支付链接 |
| userEmail |
string |
用户邮箱 |
| updatedAt |
string |
最后更新时间 |
| errorMessage |
string | null |
错误消息(失败时返回) |
| fullToken |
string |
完整令牌信息 |
| account |
object |
账户信息 |
| account.id |
string |
账户ID |
任务状态码
5. 查看任务日志
获取指定充值任务的执行日志。
请求
GET /api/bank-card-usage/{usageId}/logs
路径参数
| 参数 |
类型 |
必填 |
说明 |
| usageId |
number |
是 |
使用记录ID |
请求头
响应
{
"code": 200,
"message": null,
"data": [
{
"code": "pageLoaded",
"en": "API loading...",
"detail": "任务 321 (k16x2o0o): 页面加载完成",
"zh": "api加载中...",
"timestamp": "2025-11-26T15:17:21.665248049"
},
{
"code": "submitClicked",
"en": "Submitting payment request...",
"detail": "已点击订阅按钮(鼠标点击)",
"zh": "提交支付请求...",
"timestamp": "2025-11-26T15:17:48.107304263"
},
{
"code": "checkingPayment",
"en": "Verifying payment...",
"detail": "status=already_paid, elapsed=3.28s",
"zh": "支付核验中...",
"timestamp": "2025-11-26T15:18:36.515406555"
}
],
"timestamp": 1764141531171,
"error": false,
"success": true
}
data 数组元素说明
| 字段 |
类型 |
说明 |
| code |
string |
日志事件代码 |
| en |
string |
英文描述 |
| zh |
string |
中文描述 |
| detail |
string |
详细信息 |
| timestamp |
string |
事件时间戳(ISO 8601格式) |
日志事件代码
| 代码 |
英文说明 |
中文说明 |
| pageLoaded |
API loading... |
api加载中... |
| submitClicked |
Submitting payment request... |
提交支付请求... |
| checkingPayment |
Verifying payment... |
支付核验中... |
完整调用流程
┌─────────────────┐
│ 1. 校验卡密 │
│ POST /api/ │
│ cards/verify │
└────────┬────────┘
│ 卡密有效
▼
┌─────────────────┐
│ 2. 查询渠道状态 │
│ GET /api/ │
│ dashboard/stats │
└────────┬────────┘
│ 渠道可用
▼
┌─────────────────┐
│ 3. 提交充值任务 │
│ POST /api/ │
│ recharge/perform│
└────────┬────────┘
│ 获取 usageId
▼
┌─────────────────┐
│ 4. 轮询任务状态 │◄────┐
│ GET /api/ │ │
│ recharge/status │ │ status=0
└────────┬────────┘ │ (处理中)
│ │
├──────────────┘
│ status=2 (成功)
▼
┌─────────────────┐
│ 5. 查看任务日志 │
│ GET /api/bank- │
│ card-usage/logs │
└─────────────────┘
通用请求头
所有请求建议携带以下请求头:
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Origin: https://ow800.com
Referer: https://ow800.com/
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
注意事项
- Token有效期:
accessToken 和 fullToken 中的令牌有有效期限制,过期后需要重新获取
- 轮询间隔: 查询任务状态时建议设置合理的轮询间隔(如3-5秒),避免频繁请求
- 跨域请求: API支持来自
https://ow800.com 的跨域请求
- 错误处理: 即使HTTP状态码为200,也需要检查响应体中的
success 和 error 字段判断实际结果