概述
嗨付卡台 GPT协议充值系统提供完整的 RESTful API,支持第三方系统对接。通过 API 您可以:
- 自动发起 ChatGPT Plus / Pro 5x / Pro 20x 充值任务
- 实时监控任务执行进度和日志
- 管理嗨付Pay虚拟卡(查询、开卡、充值、提现)
- 查询系统队列状态,实现智能调度
Base URL:
https://sdk.hifupay.com
支持的套餐和地区:
| 套餐 | plan 值 | 推荐地区 | 货币 |
|---|---|---|---|
| ChatGPT Go | go | PH(菲律宾) | PHP |
| ChatGPT Plus | plus | PH(菲律宾) | PHP |
| ChatGPT Pro 5x | pro_x5 | EG(埃及) | EGP |
| ChatGPT Pro x20 自动续费绑卡 | pro_x20_renewal | PH(固定) | PHP(本次不扣款) |
| ChatGPT Pro 20x | pro_x20 | PH(菲律宾) | PHP |
| ChatGPT Pro x25(Pro Max) | pro_x25 | PH(固定) | PHP(₱32490,仅 oaics 引擎) |
| Codex 250 积分 | codex_250 | PH(固定) | PHP ₱565 ≈ $10 |
| Codex 500 积分 | codex_500 | PH(固定) | PHP ₱1130 ≈ $20 |
| Codex 1000 积分 | codex_1000 | PH(固定) | PHP ₱2260 ≈ $40 |
| Codex 2000 积分 | codex_2000 | PH(固定) | PHP ₱4520 ≈ $80 |
Pro x20 自动续费绑卡说明:仅适用于当前已开通有效 Pro x20 的 ChatGPT 账号。系统不新购、本次不扣款,仅创建 Stripe 支付方式、恢复自动续费并将该卡设为默认支付方式;OpenAI 将在续费日从该卡扣取 Pro x20 月费,请保证卡片余额与有效期。非 Pro x20 账号返回
renewal_plan_mismatch(未扣款);若账单接口未确认默认卡返回 renewal_default_unconfirmed,需到账单页复核。仅 oaics 引擎,固定 PH,支持自助填卡或 hfpCardId。Codex 积分套餐说明:为已开通 有效 Plus / Pro x5 / Pro x20 的 ChatGPT 账号购买一次性 Codex 积分额度(对应 ChatGPT「Usage → Add more」)。Free / Go 账号会在资格检测阶段被拒绝,不会扣款。积分为一次性额度,不产生自动续费;计费固定
PH / PHP,地区参数会被忽略。Codex 套餐只能使用 oaics 引擎(legacy 不支持),支持自助填卡(cardNumber/expMonth/expYear/cvc)或 hfpCardId。支持的地区代码:
| 代码 | 地区 | 货币 |
|---|---|---|
US | 美国 | USD |
PH | 菲律宾 | PHP |
EG | 埃及 | EGP |
IN | 印度 | INR |
TR | 土耳其 | TRY |
AR | 阿根廷 | ARS |
NG | 尼日利亚 | NGN |
BR | 巴西 | BRL |
认证方式
API 采用 密钥认证(永久有效),分两步获取:
ℹ️ 重要区分:嗨付Pay API Key(
sk_ 开头)和本系统 API 密钥(cdk_ 开头)是两个不同的密钥。sk_ 用于登录,cdk_ 用于调用所有 API 接口。第一步:获取嗨付Pay API Key(sk_ 密钥)
- 注册并登录嗨付Pay平台:www.haifupay.top(推荐)或 www.hifupay.com
- 进入后台 → 找到「API 接入」或「开发者」页面
- 复制您的 API Key(格式如:
sk_748cb58d99ea...)
第二步:登录本系统获取 API 密钥(cdk_ 密钥)
方式一(网页):在本站首页用 sk_ 密钥登录,登录成功后点击「🔑 密钥」查看
方式二(API):调用 POST /api/hfp/login 接口,传入 sk_ 密钥,返回的 apiKey 字段即为系统密钥
第三步:调用 API
所有 API 请求在 Header 中携带 cdk_ 密钥,支持以下三种方式(任选其一):
// 方式一:X-Api-Key(推荐)
{ "X-Api-Key": "cdk_您的系统密钥", "Content-Type": "application/json" }
// 方式二:Authorization Bearer
{ "Authorization": "Bearer cdk_您的系统密钥", "Content-Type": "application/json" }
// 方式三:X-Session-Token(兼容旧版)
{ "X-Session-Token": "cdk_您的系统密钥", "Content-Type": "application/json" }
API 密钥永久有效,无需定期刷新。同一嗨付Pay账号多次登录获取的是同一个密钥。
错误处理
所有 API 请求失败时返回统一的错误格式:
{
"error": "错误描述信息(中文)"
}
HTTP 状态码说明:
| 状态码 | 含义 | 处理建议 |
|---|---|---|
200 | 请求成功 | 正常处理响应数据 |
400 | 参数错误 | 检查请求参数是否完整正确 |
401 | 未授权 | API 密钥无效,请在 sdk.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(sk_ 开头) |
platform | string | ✅ | 平台标识:hifupay / haifupay / haifupaytop |
成功响应
{
"success": true,
"balance": {
"walletBalance": 208.45,
"cardBalance": 101.77,
"totalBalance": 310.22,
"currency": "USD"
},
"sessionToken": "cdk_88cd28ac8be54712...",
"apiKey": "cdk_88cd28ac8be54712..."
}
失败响应
{
"success": false,
"error": "API 密钥无效或已过期"
}
代码示例
// Node.js 示例
const resp = await fetch('https://sdk.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 | 否 | 套餐类型。订阅:go / plus(默认) / pro_x5 / pro_x20 / pro_x25(固定 PH,仅 oaics 引擎);续费绑卡:pro_x20_renewal(需已开通有效 Pro x20,不扣款,固定 PH,仅 oaics 引擎);Codex 积分:codex_250 / codex_500 / codex_1000 / codex_2000(需已开通有效 Plus/Pro,固定 PH/PHP,仅 oaics 引擎) |
region | string | 否 | 计费地区,默认 PH |
proxyRegion | string | 否 | 代理节点:US / PH / PH2 / PH3(默认) / PH4 |
engine | string | 否 | 充值引擎:oaics(默认,OAICS v2协议) / legacy(旧引擎) |
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://sdk.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",
"paymentConfirmed": true,
"autoCancelDone": true,
"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 字段获取失败原因 |
支付与退订状态字段:
| 字段 | 类型 | 说明 |
|---|---|---|
paymentConfirmed | boolean | 支付是否已确认成功。即使任务状态为 running(后续退订步骤仍在执行),该字段已为 true 表示扣款成功 |
autoCancelDone | boolean | 是否已成功关闭自动续费。为 false 时请提醒用户手动关闭 |
支付确认和退订是两个独立状态。paymentConfirmed=true 但 autoCancelDone=false 表示充值成功但自动续费未关闭,建议提醒用户手动操作。
常见错误信息
| 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",
"paymentConfirmed": true,
"autoCancelDone": true,
"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 秒。
卡产品列表(BIN)
POST/api/hfp/products
获取当前可用的卡产品列表(不同 BIN/卡头),开卡时需要指定 productId。
成功响应
{
"success": true,
"products": [
{ "id": 1, "bin": "525962", "name": "Visa 525962", "currency": "USD" },
{ "id": 2, "bin": "493724", "name": "Visa 493724", "currency": "USD" }
]
}
卡台更换卡头后,旧的 productId 可能失效。建议每次开卡前先调用此接口获取最新可用产品。
开卡
POST/api/hfp/open-card
开通新的虚拟卡。开卡前建议先调用 卡产品列表 获取可用的 productId。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
productId | number | 否 | 卡产品 ID(从 产品列表 获取,默认 1) |
quantity | number | 否 | 开卡数量(1-10,默认 1) |
initialAmount | number | 否 | 每张卡初始充值金额,美元(默认 20) |
成功响应
{
"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://sdk.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://sdk.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://sdk.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