GPT Pay 开放 API
GPT 套餐充值开放 API v1 接入文档
平台出资 API 与本站卡密
以下 API 使用同一 API Key、积分账户和履约流程,不需要提交银行卡资料。这里只支持后台已配置并开放的商品;不会使用旧卡池。
| 方法 | 路径 | 功能 |
|---|---|---|
| GET | /api/v1/platform-recharge/quote?planCode=codex_point&country=PH&mode=self&creditQuantity=1000 | 获取总价 priceCredits、priceVersion、可用状态及最大账号数量 |
| POST | /api/v1/platform-recharge/orders | 下单,必须提供 Idempotency-Key |
| GET | /api/v1/platform-recharge/orders/{id} | 查询本人订单或购买批次;已成功成品订单返回交付凭据 |
平台代充请求示例:
{"planCode":"codex_point","country":"PH","mode":"self","creditQuantity":1000,"expectedUnitPriceCredits":100,"expectedPriceVersion":1,"session":{"user":{"email":"user@example.test"},"account":{"id":"account_id","planType":"plus"},"accessToken":"<access_token>"}}
expectedUnitPriceCredits 与 expectedPriceVersion 必须复制本次报价;示例金额不是真实售价。平台点数售价和卡内首充按每 250 点配置、随数量线性累加,手续费预留按每单一次。已经受理的订单保留原价格和首充快照。实际成本使用卡台确认的 USD 消费/费用流水,不把充值本金当作消费成本。
成品请求改为 mode:product,传 quantity(1–10 个账号),不提交 Session。成品只支持五种普通订阅,不支持升级或点数;通过返回的各订单 ID 获取已成功账号凭据。平台 API 未传国家时默认 PH。
本站卡密通过现有 /api/redeem/check、/api/redeem/orders 和结果查询流程使用:代充卡密支持全部九项;成品卡密只支持普通订阅。点数数量与国家由管理员在生成批次时固定,兑换端不可改。本站卡密仍走现场开卡及 Direct 充值,不调用上游 card_key 商品接口。
快速开始
- Base URL:
https://gptpay.tokenseek.app/api/v1 - 请求与响应:JSON、UTF-8、HTTPS
- API 版本:v1
- API Key 管理:登录后前往
/settings/apikeys
API Key 默认永久有效,也可选择 30、90、180、365 天或自定义到期日期。Key 原文只在创建成功时显示一次,请立即保存并配置到服务端环境变量中。
套餐、国家与兼容性
当前统一套餐共九项:普通订阅 go、plus、pro5、pro20、pro50;Plus 升级 pro5_up、pro20_up、pro50_up;点数 codex_point。代码直接对应上游 planType,不使用 pro100、pro200、pro500 等金额别名。
升级仅支持当前 Plus;Codex 点数要求已有有效订阅,Free 账号不可购买。Session 明确不符合条件时,本系统在冻结积分、开卡或消耗卡密前拒绝;Session 未携带订阅状态时,不把它当作 Free,上游最终校验资格。点数订单必须传数字整数 creditQuantity(兼容 credit_quantity),范围 250–250000,且为 250 的倍数;同时传两种字段必须一致。其他套餐忽略点数数量。订单只显示请求充值数量,不推测账号实际点数余额。
自带卡点数订单服务费按每单收取,与数量无关。点数订单不适用订阅取消状态,cancellationStatus 为 not_applicable;幂等重放必须保留原点数数量。
pro50_up 的目标订阅为 chatgptpromax。自带卡国家代码为菲律宾 PH、埃及 EG、智利 CL、美国 US、日本 JP。新建订单省略 country 时,仅 pro50 默认 CL,其余套餐(包括 pro50_up)默认 PH;显式国家优先。首尾空格会去除,小写会转为大写;USD、EU 等不在五国范围内的值会被拒绝。每个已开放套餐均支持这五个国家,选择国家不改变服务费。可购买套餐以当前账户报价为准。
原有程序可以继续使用原接口、原请求和原响应。默认账户响应的 plans 返回除 go 外已启用的套餐;默认创建和查询响应不增加国家字段。
需要新能力的程序可以在这三个接口 URL 后添加 ?view=extended:
| 接口 | 扩展内容 |
|---|---|
GET /api/v1/user?view=extended | plans 包含已启用的 Go;每项增加 availableCountries、defaultCountry、priceVersion;顶层 data.defaultCountry 保留 PH 作为一般回退 |
POST /api/v1/gpt-recharge/orders?view=extended | 订单对象增加 country |
POST /api/v1/gpt-recharge/orders/status?view=extended | 查到的订单对象增加 country;not_found 项保持原样 |
view 只控制响应字段,不影响下单、费用和幂等。购买 Go 或指定国家时,仍在原创建接口中传入 planCode 和 country。默认国家应优先读取当前套餐的 defaultCountry。历史订单没有可靠国家记录时,扩展响应的 country 仍为 null。接入程序需要能识别所购买或查询的套餐代码。
同一用户等级、同一套餐的 API 与自助充值服务费一致,选择国家不改变服务费。successCredits 是成功服务费,failureCredits 是适用的失败处理费;这些费用不是银行卡实际支付金额。创建订单后费用按订单快照执行。
例如,扩展账户响应中的报价项目:
{
"planCode": "go",
"successCredits": 80,
"failureCredits": 20,
"availableCountries": ["PH", "EG", "CL", "US", "JP"],
"defaultCountry": "PH",
"priceVersion": 1
}
示例费用及可用国家仅用于说明结构,实际以账户报价为准。
认证
每个请求都必须使用请求头传入创建得到的完整 API Key:
X-API-Key: <your_api_key>
不要把 API Key 放在 URL、查询参数、请求体、浏览器前端代码或日志中。删除、到期、禁用的 Key 会立即失效。
通用响应
成功响应:
{
"code": 0,
"message": "success",
"data": {},
"requestId": "req_example"
}
失败响应:
{
"code": 40101,
"message": "API Key 无效",
"data": null,
"requestId": "req_example"
}
请同时判断 HTTP 状态码和响应体中的 code。排查问题时可向支持人员提供 requestId,但不要提供完整 API Key、银行卡、CVV 或 Session。
限流
| 接口 | 每分钟 | 10 秒突发 |
|---|---|---|
| 查询账户 | 600 | — |
| 创建 GPT 充值订单 | 600 | 100 |
| 批量查询订单状态 | 3000 | 500 |
限流按 API Key 计算。超过限制返回 HTTP 429、业务码 42901 和 Retry-After 响应头。幂等重放也计入限流。
API 接口
查询账户
GET /api/v1/user
X-API-Key: <your_api_key>
curl "https://gptpay.tokenseek.app/api/v1/user" \
-H "X-API-Key: <your_api_key>"
返回当前 Key 所属用户的余额、等级、可用套餐价格、Key 到期时间和限流策略:
{
"code": 0,
"message": "success",
"data": {
"user": { "id": "user_id", "email": "user@example.test" },
"wallet": { "availableCredits": 10000, "reservedCredits": 0 },
"level": { "code": "default", "name": "默认等级" },
"plans": [
{
"planCode": "plus",
"successCredits": 2000,
"failureCredits": 100
}
],
"apiKey": {
"expiresAt": null,
"rateLimits": {
"accountPerMinute": 600,
"createPerMinute": 600,
"createPer10Seconds": 100,
"statusPerMinute": 3000,
"statusPer10Seconds": 500
}
}
},
"requestId": "req_example"
}
Credits 均为整数。expiresAt 为 ISO 8601 时间;永久有效时为 null。
创建 GPT 充值订单
POST /api/v1/gpt-recharge/orders
X-API-Key: <your_api_key>
Idempotency-Key: client-order-001
Content-Type: application/json
Idempotency-Key 必填,长度为 8~128 个字符,在同一用户下唯一。网络超时后请使用相同 Key 和完全相同的业务参数重试。
请求体:
{
"planCode": "plus",
"cardNumber": "4242424242424242",
"expMonth": 12,
"expYear": 2028,
"cvv": "123",
"session": {
"user": { "email": "user@example.test" },
"account": { "id": "account_id" },
"accessToken": "<access_token>"
}
}
| 字段 | 类型 | 说明 |
|---|---|---|
planCode | string | go、plus、pro5、pro20、pro50、pro5_up、pro20_up、pro50_up、codex_point;以账户报价中的可用套餐为准 |
creditQuantity | number | 仅 codex_point 必填;250–250000 的整数,250 的倍数;兼容 credit_quantity |
country | string | 可选,PH、EG、CL、US、JP;新 pro50 订单默认 CL,其他套餐默认 PH;须在该套餐的 availableCountries 中 |
expectedPriceVersion | integer | 可选,传扩展报价的 priceVersion;价格版本已变化时拒绝创建,请重新确认报价 |
cardNumber | string | 12~19 位银行卡号,仅用于本次请求 |
expMonth | integer | 1~12 |
expYear | integer | 四位年份,且卡片未过期 |
cvv | string | 3~4 位数字,仅用于本次请求 |
session | object | 包含用户邮箱、Account ID 和未过期 Access Token |
成功创建返回 HTTP 201;相同幂等请求重放返回 200;订单已受理但提交状态仍在确认时返回 202。
{
"code": 0,
"message": "success",
"data": {
"id": "order_id",
"orderNo": "GPT-EXAMPLE",
"status": "processing",
"settlementStatus": "reserved",
"cancellationStatus": "waiting",
"planCode": "plus",
"reservedCredits": 2000,
"chargedCredits": 0,
"releasedCredits": 0,
"targetEmail": "us***@example.test",
"cardLast4": "4242",
"failureReason": null,
"createdAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
"requestId": "req_example"
}
国家属于业务参数;新请求省略国家与显式传入该套餐的默认国家等价。重放已有订单时,省略国家始终沿用原订单国家,不随当前默认值变化;历史国家为空的订单按原 PH 语义校验,存储及扩展响应仍保留 country:null。显式传原国家可重放,显式切换国家或套餐则冲突。网络超时后也应复用原幂等键,避免第二次支付。
相同 Idempotency-Key 配合不同业务参数会返回 HTTP 409,不会创建新订单、重复冻结 Credits 或重复提交充值请求。
批量查询订单状态
POST /api/v1/gpt-recharge/orders/status
X-API-Key: <your_api_key>
Content-Type: application/json
每次可查询 1~50 个订单 ID,重复 ID 会自动去除:
curl "https://gptpay.tokenseek.app/api/v1/gpt-recharge/orders/status" \
-X POST \
-H "X-API-Key: <your_api_key>" \
-H "Content-Type: application/json" \
-d '{"orderIds":["order_1","order_2"]}'
{
"code": 0,
"message": "success",
"data": {
"orders": [
{
"id": "order_1",
"orderNo": "GPT-EXAMPLE",
"status": "success",
"settlementStatus": "settled",
"cancellationStatus": "success",
"planCode": "plus",
"reservedCredits": 2000,
"chargedCredits": 2000,
"releasedCredits": 0,
"targetEmail": "us***@example.test",
"cardLast4": "4242",
"failureReason": null,
"createdAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:01:00.000Z"
},
{ "id": "order_2", "status": "not_found" }
]
},
"requestId": "req_example"
}
不存在或不属于当前用户的订单统一返回 not_found,不会暴露其他用户的订单信息。
状态枚举
订单 status:
created、submitting、processing:处理中。success:充值成功。failed:最终失败。submission_unknown:无法确认是否已提交,等待核查。manual_review:需要人工核查。not_found:仅用于批量查询结果,订单不存在或不属于当前用户。
响应继续使用原 failureReason 字段。failed 或 manual_review 时,优先返回完整脱敏的上游失败说明并保留换行;没有可用说明时回退原安全原因。成功订单始终返回 null;提交结果不明时使用本站核查提示。展示说明不决定费用、重试或换卡行为,客户端应以纯文本渲染。
上游 pending_verification 仍对外表示为 processing。升级只有确认目标订阅生效后才会成功;等待验证期间继续轮询,不要重复支付。
结算 settlementStatus:reserved、settled、manual_review。
自动取消续费 cancellationStatus:waiting、pending、success、failed、manual_review。
状态查询返回平台已持久化的最新订单状态。订单由后台异步处理,不依赖状态查询推进;即使客户端停止轮询,订单仍会继续执行,提高查询频率也不会加快处理。
建议创建后的第一分钟每 5 秒查询一次,之后每 15 秒查询一次;订单进入 success 或 failed,且取消续费不再是 waiting 或 pending 后停止轮询。
HTTP 状态与业务错误码
| HTTP | 业务码 | 含义 |
|---|---|---|
| 400 | 40001 | 请求格式、银行卡或 Session 无效 |
| 401 | 40101 | API Key 缺失、无效、过期或已删除 |
| 402 | 40201 | Credits 不足 |
| 403 | 40301 | 当前账号或服务不可用 |
| 409 | 40901 | 幂等键与原请求冲突 |
| 409 | 40902 | 目标账号已有未完成任务 |
| 413 | 41301 | 请求体超过 120 KB |
| 429 | 42901 | 超过限流 |
| 503 | 50301 | 服务维护中或暂时不可用 |
代码示例
JavaScript
const response = await fetch(
'https://gptpay.tokenseek.app/api/v1/gpt-recharge/orders',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.GPT_PAY_API_KEY,
'Idempotency-Key': crypto.randomUUID(),
},
body: JSON.stringify(orderInput),
}
);
const result = await response.json();
if (!response.ok || result.code !== 0) throw new Error(result.message);
Python
import os
import uuid
import requests
response = requests.post(
"https://gptpay.tokenseek.app/api/v1/gpt-recharge/orders/status",
headers={"X-API-Key": os.environ["GPT_PAY_API_KEY"]},
json={"orderIds": ["order_1", "order_2"]},
timeout=15,
)
result = response.json()
response.raise_for_status()
if result["code"] != 0:
raise RuntimeError(result["message"])
安全与轮换
- API Key 应只保存在服务端 Secret 或环境变量中。
- 为不同系统创建不同 Key,轮换时先创建新 Key,完成切换后删除旧 Key。
- 不记录请求体;请求体包含银行卡、CVV 和 Session。
- 不要通过消息或工单发送完整 API Key、银行卡、CVV、Session 或 Token。
- 自带卡充值的开放 API 不会保存完整银行卡、CVV、Session 或 Access Token。
Go 与国家选择示例
curl "https://gptpay.tokenseek.app/api/v1/gpt-recharge/orders?view=extended" \
-X POST \
-H "X-API-Key: <your_api_key>" \
-H "Idempotency-Key: client-go-eg-001" \
-H "Content-Type: application/json" \
-d '{"planCode":"go","country":"EG","cardNumber":"4242424242424242","expMonth":12,"expYear":2032,"cvv":"123","session":{"user":{"email":"user@example.test"},"account":{"id":"account_id"},"accessToken":"<access_token>"}}'
先确认该套餐已开放,再选择充值国家。示例卡号与 Session 仅为占位数据。新 Go 订单省略国家与显式 PH 等价,新 pro50 订单省略国家与显式 CL 等价。
创建响应表示本站订单已建立,充值是否成功以查询结果为准。processing 包含排队、支付及等待验证;继续轮询即可。submission_unknown 或 manual_review 表示结果待确认,不要更换幂等键重复提交。建议创建后的第一分钟每 5 秒查询一次,之后每 15 秒查询一次;success 或 failed 为支付终态。取消续费结果可能晚于支付成功更新,可以在成功约一分钟后补查,不要因此重新充值。
卡密兑换接口
兑换服务地址为 https://redeem.tokenseek.app,接口仅供该兑换站点的同源流程使用。它们不使用开放 API 的 API Key 或通用响应封装,失败返回非成功 HTTP 状态及 { "error": "错误说明" }。请求均为 JSON POST。
| 路径 | 请求 | 成功响应 |
|---|---|---|
/api/redeem/check | { "code": "<card_key>" } | 未开始时返回 inProgress:false、planCode、country、mode;已开始时返回 inProgress:true 和 statusToken |
/api/redeem/orders | { "code": "<card_key>", "sessionJson": "<Session JSON 字符串>" } | { "statusToken": "<status_token>" };成品号卡密无需提交 Session |
/api/redeem/orders/status | { "statusToken": "<status_token>" } | { "order": { ... } },包含套餐、国家及兑换状态 |
/api/redeem/orders/session | { "statusToken": "<status_token>", "sessionJson": "<新的 Session JSON 字符串>" } | { "order": { ... } };仅允许需要补交 Session 的订单,且必须属于原账号 |
/api/redeem/orders/delivery | { "statusToken": "<status_token>" } | 成功成品号订单的交付数据 |
卡密在发行时固定套餐和国家,兑换者不能改变。创建兑换请求不需要 country;若传入与绑定国家不同的值,返回 HTTP 409。重复兑换会恢复原订单。重新通过卡密查询可能更新 statusToken,请使用最新令牌;不得在日志或公开链接中泄露令牌。
这些接口用于本站发行的卡密。代充卡密支持全部九项套餐;成品卡密仅支持五项普通订阅。支持 PH、EG、CL、US、JP,须由后台开放对应国家的履约配置。上游独立的 orderType=card_key 接口不通过本站这些接口提供。
