概述
嗨付卡台 GPT协议充值系统提供完整的 RESTful API,支持第三方系统对接。通过 API 您可以:
- 自动发起 ChatGPT Plus / Pro 5x / Pro 20x 充值任务
- 实时监控任务执行进度和日志
- 管理嗨付Pay虚拟卡(查询、开卡、充值、提现)
- 查询系统队列状态,实现智能调度
Base URL:
https://cdk.hifupay.com
支持的套餐和地区:
| 套餐 | plan 值 | 推荐地区 | 货币 |
|---|---|---|---|
| ChatGPT Plus | plus | PH(菲律宾) | PHP |
| ChatGPT Pro 5x | pro_x5 | EG(埃及) | EGP |
| ChatGPT Pro 20x | pro_x20 | PH(菲律宾) | PHP |
支持的地区代码:
| 代码 | 地区 | 货币 |
|---|---|---|
US | 美国 | USD |
PH | 菲律宾 | PHP |
EG | 埃及 | EGP |
IN | 印度 | INR |
TR | 土耳其 | TRY |
AR | 阿根廷 | ARS |
NG | 尼日利亚 | NGN |
BR | 巴西 | BRL |
认证方式
API 采用 密钥认证(永久有效):
- 获取密钥:在 cdk.hifupay.com 使用嗨付Pay API Key 登录,登录成功后点击「🔑 密钥」即可查看您的专属 API 密钥(永久有效)
- 接口调用:所有 API 请求在 Header 中携带密钥,支持以下三种方式(任选其一)
// 方式一:X-Api-Key(推荐)
{ "X-Api-Key": "您的API密钥", "Content-Type": "application/json" }
// 方式二:Authorization Bearer
{ "Authorization": "Bearer 您的API密钥", "Content-Type": "application/json" }
// 方式三:X-Session-Token(兼容旧版)
{ "X-Session-Token": "您的API密钥", "Content-Type": "application/json" }
API 密钥永久有效,无需定期刷新。同一嗨付Pay账号多次登录获取的是同一个密钥。
错误处理
所有 API 请求失败时返回统一的错误格式:
{
"error": "错误描述信息(中文)"
}
HTTP 状态码说明:
| 状态码 | 含义 | 处理建议 |
|---|---|---|
200 | 请求成功 | 正常处理响应数据 |
400 | 参数错误 | 检查请求参数是否完整正确 |
401 | 未授权 | API 密钥无效,请在 cdk.hifupay.com 登录获取 |
403 | 禁止访问 | 无权操作该资源(如他人的任务) |
404 | 资源不存在 | 任务 ID 不存在 |
429 | 请求过于频繁 | 降低请求频率,建议间隔 3-5 秒 |
500 | 服务器内部错误 | 稍后重试或联系客服 |
建议在代码中对 429 做退避重试(等待 3-5 秒后重试)。
登录获取密钥
POST/api/hfp/login
使用嗨付Pay API Key 登录系统,获取永久 API 密钥。同一账号重复登录返回相同密钥。
请求参数 (Body JSON)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
apiKey | string | ✅ | 嗨付Pay 后台获取的 API Key |
platform | string | ✅ | 平台标识:hifupay / haifupay / haifupaytop |
成功响应
{
"success": true,
"balance": {
"walletBalance": 208.45,
"cardBalance": 101.77,
"totalBalance": 310.22,
"currency": "USD"
},
"sessionToken": "8a0d812cdcc78a4c...",
"apiKey": "8a0d812cdcc78a4c..."
}
失败响应
{
"success": false,
"error": "API 密钥无效或已过期"
}
代码示例
// Node.js 示例
const resp = await fetch('https://cdk.hifupay.com/api/hfp/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
apiKey: 'sk_your_api_key_here',
platform: 'hifupay'
})
});
const data = await resp.json();
const apiKey = data.apiKey; // 永久有效的 API 密钥,保存后用于所有接口调用
创建充值任务
POST/api/start
创建一个 GPT 协议充值任务。系统将自动完成从创建订单到支付确认的全流程。
请求头
| Header | 说明 |
|---|---|
X-Api-Key | 登录后获取的永久 API 密钥(推荐) |
Content-Type | application/json |
请求参数 (Body JSON)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
token | string | ✅ | ChatGPT Session Token(完整 JSON 或纯 accessToken) |
plan | string | 否 | 套餐类型:plus(默认) / pro_x5 / pro_x20 |
region | string | 否 | 计费地区,默认 PH |
hfpCardId | string | ② | 嗨付Pay 卡片ID(与直接填卡号二选一) |
cardNumber | string | ① | 卡号(与 hfpCardId 二选一) |
expMonth | string | ① | 到期月份,如 06 |
expYear | string | ① | 到期年份,如 31 |
cvc | string | ① | 安全码 |
卡片信息提供方式二选一:① 直接填写卡号+有效期+CVC;② 传入 hfpCardId,系统自动读取卡片信息。推荐使用 hfpCardId。
成功响应
{
"taskId": "TMSR07F4I"
}
失败响应
// 参数错误
{ "error": "请输入 Session Token" }
// 卡片错误
{ "error": "嗨付Pay卡片错误: 获取卡片信息超时" }
// 频率限制
{ "error": "请求过于频繁,请稍后再试" }
代码示例
// 使用 hfpCardId 方式
const resp = await fetch('https://cdk.hifupay.com/api/start', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': '您的API密钥'
},
body: JSON.stringify({
token: 'ChatGPT的Session Token内容',
plan: 'plus',
region: 'PH',
hfpCardId: 'card_123456'
})
});
const { taskId } = await resp.json();
console.log('任务已创建:', taskId);
查询任务状态
GET/api/status/:taskId
查询指定任务的执行状态和最新日志。
路径参数
| 参数 | 说明 |
|---|---|
taskId | 创建任务时返回的任务ID |
成功响应
{
"taskId": "TMSR07F4I",
"status": "completed",
"logs": [
{"ts": "12:14:08", "text": "🚀 任务开始执行...", "level": "info"},
{"ts": "12:14:09", "text": "GPT 账号: user@email.com", "level": "info"},
{"ts": "12:14:53", "text": "✅ 协议充值全流程完成!", "level": "success"}
],
"error": null,
"account": "user@email.com"
}
status 字段说明:
| 值 | 含义 | 说明 |
|---|---|---|
running | 执行中 | 任务正在运行,可通过 SSE 实时获取日志 |
completed | 成功 | 充值全流程完成 |
failed | 失败 | 查看 error 字段获取失败原因 |
常见错误信息
| error 内容 | 原因 | 处理建议 |
|---|---|---|
| 令牌已过期 | Session Token 已失效 | 用户需重新登录 ChatGPT 获取新 Token |
| 该账号已有订阅 | 账号已有 Plus/Pro | 需先取消当前订阅 |
| 支付被拒绝 | 银行卡扣款失败 | 检查卡内余额或更换卡片 |
| 操作过于频繁 | ChatGPT API 限速 | 等待 5-10 分钟后重试 |
| 该账号不符合订阅条件 | 账号被限制 | 更换 ChatGPT 账号 |
获取任务日志
GET/api/logs/:taskId
获取任务的完整执行日志(适用于非实时查询场景)。
成功响应
{
"logs": [
{"ts": "12:14:08", "text": "🚀 任务开始执行...", "level": "info"},
{"ts": "12:14:09", "text": "[1/9] 创建订单...", "level": "info"},
...
]
}
停止任务
POST/api/stop/:taskId
停止正在执行的任务。
成功响应
{ "ok": true }
失败响应
// 任务不存在
{ "error": "Task not found" }
// 非本人任务
{ "error": "无权操作此任务" }
任务列表
GET/api/tasks
获取当前用户的所有任务列表(最近100条),按创建时间倒序。
成功响应
[
{
"taskId": "TMSR07F4I",
"status": "completed",
"logCount": 45,
"error": null,
"account": "user@email.com",
"plan": "pro_x20",
"region": "PH",
"createdAt": "2026-08-13T04:14:33.039Z"
},
...
]
队列状态
GET/api/queue-status
查看系统当前任务队列状态(无需认证)。
成功响应
{
"running": 1,
"max": 3,
"queued": 2
}
| 字段 | 说明 |
|---|---|
running | 当前正在执行的任务数 |
max | 最大并发任务数 |
queued | 队列中等待的任务数 |
下单前可先查询队列状态,当 running < max 时任务会立即执行,否则进入排队。
查询余额
POST/api/hfp/balance
查询嗨付Pay账户的钱包余额和卡内余额。
成功响应
{
"success": true,
"balance": {
"walletBalance": 208.45,
"cardBalance": 101.77,
"totalBalance": 310.22,
"currency": "USD"
}
}
失败响应
{
"success": false,
"error": "嗨付API连接超时,请稍后重试"
}
卡片列表
POST/api/hfp/cards
获取当前用户绑定的所有虚拟卡片列表。
成功响应
{
"success": true,
"cards": [
{
"id": 69,
"cardNo": "5259620149346308",
"lastFour": "6308",
"binCode": "525962",
"cvv": "586",
"expiryDate": "12/28",
"status": "active",
"balance": 83.52,
"currency": "USD",
"createdAt": "2026-08-13 12:46:42",
"note": ""
},
...
]
}
卡片详情(敏感信息)
POST/api/hfp/card-sensitive
获取卡片的完整卡号、CVV、有效期等敏感信息。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
cardId | string | 卡片 ID |
成功响应
{
"success": true,
"data": {
"id": 69,
"cardNo": "5259620149346308",
"fullCardNo": "5259620149346308",
"expiryDate": "12/28",
"cvv": "586"
}
}
为防止频繁请求被限流,建议缓存卡片敏感信息,请求间隔不低于 1 秒。
开卡
POST/api/hfp/open-card
开通新的虚拟卡。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
count | number | 开卡数量(1-10) |
amount | number | 每张卡初始充值金额(美元) |
成功响应
{
"success": true,
"data": {
"cards": ["card_new1", "card_new2"],
"message": "开卡成功"
}
}
失败响应
{
"success": false,
"error": "余额不足,无法开卡"
}
卡片充值
POST/api/hfp/card-load
向指定卡片充入资金。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
cardId | string | 卡片 ID |
amount | number | 充值金额(美元) |
成功响应
{
"success": true,
"data": { "message": "充值成功" }
}
卡片提现
POST/api/hfp/card-unload
从指定卡片提取资金回钱包。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
cardId | string | 卡片 ID |
amount | number | 提现金额(美元) |
成功响应
{
"success": true,
"data": { "message": "提现成功" }
}
SSE 实时日志流
GET/api/stream/:taskId?s=API_KEY
通过 Server-Sent Events (SSE) 实时获取任务执行日志。连接后会先推送历史日志,再实时推送新日志。
连接参数
| 参数 | 位置 | 说明 |
|---|---|---|
taskId | 路径 | 任务 ID |
s | Query | API 密钥(URL编码) |
事件格式
data: {"ts":"12:14:08","text":"🚀 任务开始执行...","level":"info"}
data: {"ts":"12:14:09","text":"[1/9] 创建订单...","level":"info"}
data: {"ts":"12:14:53","text":"✅ 协议充值全流程完成!","level":"success"}
代码示例
// 浏览器端
const apiKey = '您的API密钥';
const evtSource = new EventSource(
`https://cdk.hifupay.com/api/stream/${taskId}?s=${encodeURIComponent(apiKey)}`
);
evtSource.onmessage = (event) => {
const log = JSON.parse(event.data);
console.log(`[${log.ts}] [${log.level}] ${log.text}`);
};
evtSource.onerror = () => {
evtSource.close();
console.log('连接已关闭');
};
// Node.js 端(使用 eventsource 包)
const EventSource = require('eventsource');
const es = new EventSource(
`https://cdk.hifupay.com/api/stream/${taskId}?s=${encodeURIComponent(apiKey)}`
);
es.onmessage = (event) => {
const log = JSON.parse(event.data);
if (log.level === 'success' && log.text.includes('全流程完成')) {
console.log('充值成功!');
es.close();
}
};
完整接入示例
以下是一个完整的对接流程示例(Node.js):
const fetch = require('node-fetch');
const BASE = 'https://cdk.hifupay.com';
const API_KEY = 'sk_your_api_key';
const PLATFORM = 'hifupay';
async function main() {
// 1. 登录
const loginResp = await fetch(`${BASE}/api/hfp/login`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ apiKey: API_KEY, platform: PLATFORM })
});
const loginData = await loginResp.json();
if (!loginData.success) throw new Error(`登录失败: ${loginData.error}`);
const token = loginData.apiKey; // 永久有效的 API 密钥
const headers = { 'Content-Type': 'application/json', 'X-Api-Key': token };
console.log('余额:', loginData.balance);
// 2. 获取卡片列表
const cardsResp = await fetch(`${BASE}/api/hfp/cards`, { method: 'POST', headers });
const cardsData = await cardsResp.json();
if (!cardsData.success || !cardsData.cards.length) throw new Error('无可用卡片');
const cardId = cardsData.cards[0].id;
console.log('使用卡片:', cardId);
// 3. 查询队列(可选)
const qResp = await fetch(`${BASE}/api/queue-status`, { headers: { 'User-Agent': 'MyApp/1.0' } });
const queue = await qResp.json();
console.log(`队列: 运行${queue.running}/${queue.max}, 等待${queue.queued}`);
// 4. 创建充值任务
const startResp = await fetch(`${BASE}/api/start`, {
method: 'POST', headers,
body: JSON.stringify({
token: 'ChatGPT用户的Session Token',
plan: 'plus',
region: 'PH',
hfpCardId: cardId
})
});
const startData = await startResp.json();
if (startData.error) throw new Error(`创建任务失败: ${startData.error}`);
const taskId = startData.taskId;
console.log('任务已创建:', taskId);
// 5. 轮询任务状态
while (true) {
await new Promise(r => setTimeout(r, 5000));
const statusResp = await fetch(`${BASE}/api/status/${taskId}`, { headers });
const status = await statusResp.json();
if (status.status === 'completed') {
console.log('✅ 充值成功!账号:', status.account);
break;
}
if (status.status === 'failed') {
console.log('❌ 充值失败:', status.error);
break;
}
console.log('⏳ 执行中... 日志数:', status.logs.length);
}
}
main().catch(console.error);
最佳实践:
1. 使用 SSE 流替代轮询,实时性更好且减少请求数
2. 对卡片敏感信息做本地缓存,避免重复查询触发限流
3. 下单前先查询队列状态,避免长时间排队
4. 处理 401 时自动重新登录,处理 429 时指数退避重试
1. 使用 SSE 流替代轮询,实时性更好且减少请求数
2. 对卡片敏感信息做本地缓存,避免重复查询触发限流
3. 下单前先查询队列状态,避免长时间排队
4. 处理 401 时自动重新登录,处理 429 时指数退避重试
嗨付卡台 GPT协议充值 API 文档 · 客服 @jack668666 · 群组 @haifutai