← 返回控制台

概述

嗨付卡台 GPT协议充值系统提供完整的 RESTful API,支持第三方系统对接。通过 API 您可以:

Base URL:

https://sdk.hifupay.com

支持的套餐和地区:

套餐plan 值推荐地区货币
ChatGPT GogoPH(菲律宾)PHP
ChatGPT PlusplusPH(菲律宾)PHP
ChatGPT Pro 5xpro_x5EG(埃及)EGP
ChatGPT Pro x20 自动续费绑卡pro_x20_renewalPH(固定)PHP(本次不扣款)
ChatGPT Pro 20xpro_x20PH(菲律宾)PHP
ChatGPT Pro x25(Pro Max)pro_x25PH(固定)PHP(₱32490,仅 oaics 引擎)
Codex 250 积分codex_250PH(固定)PHP ₱565 ≈ $10
Codex 500 积分codex_500PH(固定)PHP ₱1130 ≈ $20
Codex 1000 积分codex_1000PH(固定)PHP ₱2260 ≈ $40
Codex 2000 积分codex_2000PH(固定)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_ 密钥)

  1. 注册并登录嗨付Pay平台:www.haifupay.top(推荐)或 www.hifupay.com
  2. 进入后台 → 找到「API 接入」或「开发者」页面
  3. 复制您的 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)

参数类型必填说明
apiKeystring✅嗨付Pay 后台获取的 API Key(sk_ 开头)
platformstring✅平台标识: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-Typeapplication/json

请求参数 (Body JSON)

参数类型必填说明
tokenstring✅ChatGPT Session Token(完整 JSON 或纯 accessToken)
planstring否套餐类型。订阅: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 引擎)
regionstring否计费地区,默认 PH
proxyRegionstring否代理节点:US / PH / PH2 / PH3(默认) / PH4
enginestring否充值引擎:oaics(默认,OAICS v2协议) / legacy(旧引擎)
hfpCardIdstring②嗨付Pay 卡片ID(与直接填卡号二选一)
cardNumberstring①卡号(与 hfpCardId 二选一)
expMonthstring①到期月份,如 06
expYearstring①到期年份,如 31
cvcstring①安全码
卡片信息提供方式二选一:① 直接填写卡号+有效期+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 字段获取失败原因

支付与退订状态字段:

字段类型说明
paymentConfirmedboolean支付是否已确认成功。即使任务状态为 running(后续退订步骤仍在执行),该字段已为 true 表示扣款成功
autoCancelDoneboolean是否已成功关闭自动续费。为 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、有效期等敏感信息。

请求参数

参数类型说明
cardIdstring卡片 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。

请求参数

参数类型必填说明
productIdnumber否卡产品 ID(从 产品列表 获取,默认 1)
quantitynumber否开卡数量(1-10,默认 1)
initialAmountnumber否每张卡初始充值金额,美元(默认 20)

成功响应

{
  "success": true,
  "data": {
    "cards": ["card_new1", "card_new2"],
    "message": "开卡成功"
  }
}

失败响应

{
  "success": false,
  "error": "余额不足,无法开卡"
}

卡片充值

POST/api/hfp/card-load

向指定卡片充入资金。

请求参数

参数类型说明
cardIdstring卡片 ID
amountnumber充值金额(美元)

成功响应

{
  "success": true,
  "data": { "message": "充值成功" }
}

卡片提现

POST/api/hfp/card-unload

从指定卡片提取资金回钱包。

请求参数

参数类型说明
cardIdstring卡片 ID
amountnumber提现金额(美元)

成功响应

{
  "success": true,
  "data": { "message": "提现成功" }
}

SSE 实时日志流

GET/api/stream/:taskId?s=API_KEY

通过 Server-Sent Events (SSE) 实时获取任务执行日志。连接后会先推送历史日志,再实时推送新日志。

连接参数

参数位置说明
taskId路径任务 ID
sQueryAPI 密钥(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 时指数退避重试
嗨付卡台 GPT协议充值 API 文档 · 客服 @jack668666 · 群组 @haifutai