PastePanel
All articles
Article 4 min read

SMM Panel API 集成指南(PHP、Python、Node.js):从零到自动化对接

P

PastePanel Team

Insights for panel operators

如果你正在运营或计划运营一个 SMM panel,迟早会遇到一个关键节点:手动在后台一个个下单已经无法支撑增长,你需要把下单、查单、补单流程自动化,或者把面板能力嵌入到你自己的网站、机器人、CRM 甚至 Telegram 商店里。这时候,SMM panel API 集成就是绕不开的技术核心。这篇文章不是泛泛而谈的营销软文,而是一份面向开发者、reseller 和技术型创业者的实战对接指南,我们会用 PHP、Python、Node.js 三种最常用的语言,把整个集成过程从头到尾讲清楚。

好消息是:绝大多数 SMM panel 都遵循同一套业界事实标准——也就是很多人口中的 "perfect panel" 风格 API。这意味着你只要掌握一套对接逻辑,就能连接市面上几乎所有的上游 provider,也能对外提供同样规范的接口给你的下游 reseller。掌握它,你就掌握了整个 SMM 供应链的技术命脉。

下面的内容会覆盖:API 的通用结构、认证方式、每一个核心 action 的参数与返回、三种语言的可直接复用代码、各种订单类型(Default、Custom Comments、Drip-Feed、Subscriptions、Mass Order)如何通过 API 下单,以及错误处理、幂等、限流和密钥安全等生产环境必须考虑的问题。

一、SMM Panel API 的通用结构:一个端点,多个 action

几乎所有遵循 perfect panel 标准的 SMM panel API 都采用同一种极简设计:只有一个 HTTP 端点,通常是 https://你的面板域名/api/v2,所有操作都通过 POST 请求发送,用一个 action 参数来区分你想干什么。

每个请求都必须携带以下基础参数:

  • key:你的 API key,用于身份认证(在用户面板的 Account/API 页面获取)。
  • action:操作类型,如 servicesaddstatusbalancerefillcancel
  • 其余参数:随 action 变化,比如下单需要 servicelinkquantity

返回值统一为 JSON。这种"单端点 + action 分发"的设计非常适合快速集成——你不需要研究一堆 REST 路由,只要封装一个通用的 POST 函数,剩下的全是参数差异。

二、认证与 API Key:一切的起点

认证靠的是 API key,它本质上是一个长随机字符串。当你作为 reseller 对接上游 provider 时,你在 provider 面板注册账号、充值后就能拿到 key;当别人对接的面板时,他们在你的用户面板里拿到属于他们自己的 key。

这里有一条生产环境铁律:API key 等价于账户余额的支配权,绝对不能出现在前端 JavaScript、公开仓库或客户端 App 里。所有对 SMM panel API 的调用都必须从你的服务器端发起。在 PastePanel 这样的平台上,我们对存储的上游 provider API keys 采用 Fernet 对称加密落库,即使数据库被读取,密钥也不会以明文暴露——这是任何认真做面板的团队都应该采用的做法。

三、核心 Action 详解:下单、查单、补单、余额

把下面这几个 action 吃透,你就掌握了 90% 的对接需求。

1. services — 拉取服务列表

参数:keyaction=services。返回一个服务数组,每个服务包含 service(ID)、nametypecategoryrate(单价,通常是每 1000 单位的价格)、minmax,以及是否支持 refillcanceldripfeed 等布尔标志。你应该定期缓存这个列表,而不是每次下单都拉一遍。

2. add — 下单

这是最重要的 action。最基础的 Default 类型只需要:keyaction=addservice(服务 ID)、link(目标链接,比如 Instagram 帖子或 TikTok 视频 URL)、quantity(数量)。成功返回形如 {"order": 23501} 的订单号。

3. status — 查询订单状态

参数:keyaction=statusorder。返回 charge(扣费)、start_count(起始计数)、status(Pending、In progress、Processing、Completed、Partial、Canceled)、remains(剩余量)、currency。要查多个订单时用 action=status 配合逗号分隔的 orders 参数一次批量查询,能大幅减少请求数。

4. refill / refill_status — 补单

当 followers 或 likes 出现掉量时,对支持 refill 的服务发起补单:action=refillorder=订单号,返回一个 refill ID,再用 action=refill_status 查询补单进度。

5. cancel — 取消订单

对支持取消的服务,用 action=cancel 加逗号分隔的 orders 发起取消,未消耗部分会退回余额。

6. balance — 查询余额

参数:keyaction=balance,返回 {"balance":"100.84","currency":"USD"}。建议在批量下单前先查余额,避免中途因余额不足失败。

四、PHP 集成示例

PHP 在 SMM 圈子里极其常见,很多经典的 perfect panel 用户至今还在用 PHP 对接。下面是一个用 cURL 封装的可复用客户端:

<?php
class SmmApi {
    private $api_url = 'https://你的面板域名/api/v2';
    private $api_key;

    public function __construct($api_key) {
        $this->api_key = $api_key;
    }

    private function connect($post) {
        $post['key'] = $this->api_key;
        $ch = curl_init($this->api_url);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST           => true,
            CURLOPT_POSTFIELDS     => http_build_query($post),
            CURLOPT_TIMEOUT        => 30,
            CURLOPT_SSL_VERIFYPEER => true,
        ]);
        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            throw new Exception('cURL: ' . curl_error($ch));
        }
        curl_close($ch);
        return json_decode($result, true);
    }

    public function services()            { return $this->connect(['action' => 'services']); }
    public function balance()             { return $this->connect(['action' => 'balance']); }
    public function order($params)        { return $this->connect(array_merge(['action' => 'add'], $params)); }
    public function status($order_id)     { return $this->connect(['action' => 'status', 'order' => $order_id]); }
    public function refill($order_id)     { return $this->connect(['action' => 'refill', 'order' => $order_id]); }
}

// 使用示例
$api = new SmmApi('你的_API_KEY');
$res = $api->order([
    'service'  => 1,
    'link'     => 'https://instagram.com/p/xxxx',
    'quantity' => 1000,
]);
echo '订单号: ' . ($res['order'] ?? '失败');

五、Python 集成示例

Python 是自动化脚本和后端服务的首选。PastePanel 本身就基于 Python/FastAPI 的异步架构构建,因此我们对 Python 生态尤其友好。下面用 requests 写一个同步客户端:

import requests

class SmmApi:
    def __init__(self, api_key, api_url='https://你的面板域名/api/v2'):
        self.api_key = api_key
        self.api_url = api_url
        self.session = requests.Session()

    def _post(self, payload):
        payload['key'] = self.api_key
        r = self.session.post(self.api_url, data=payload, timeout=30)
        r.raise_for_status()
        return r.json()

    def services(self):
        return self._post({'action': 'services'})

    def balance(self):
        return self._post({'action': 'balance'})

    def add_order(self, service, link, quantity, **extra):
        payload = {'action': 'add', 'service': service,
                   'link': link, 'quantity': quantity}
        payload.update(extra)
        return self._post(payload)

    def status(self, order_id):
        return self._post({'action': 'status', 'order': order_id})

    def refill(self, order_id):
        return self._post({'action': 'refill', 'order': order_id})

# 使用示例
api = SmmApi('你的_API_KEY')
print('余额:', api.balance())
res = api.add_order(service=1, link='https://tiktok.com/@user/video/123',
                    quantity=5000)
print('订单号:', res.get('order'))

如果你的服务需要高并发(比如同时给成百上千个订单查状态),建议改用 httpx + asyncio 的异步版本,配合批量 status 查询,性能会有数量级的提升。

六、Node.js 集成示例

Node.js 特别适合做 Telegram 机器人、Discord 商店或实时下单前端的后端。下面用原生 fetch(Node 18+ 内置)实现:

class SmmApi {
  constructor(apiKey, apiUrl = 'https://你的面板域名/api/v2') {
    this.apiKey = apiKey;
    this.apiUrl = apiUrl;
  }

  async _post(payload) {
    payload.key = this.apiKey;
    const body = new URLSearchParams(payload);
    const res = await fetch(this.apiUrl, {
      method: 'POST',
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
      body,
    });
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    return res.json();
  }

  services()          { return this._post({ action: 'services' }); }
  balance()           { return this._post({ action: 'balance' }); }
  addOrder(params)    { return this._post({ action: 'add', ...params }); }
  status(orderId)     { return this._post({ action: 'status', order: orderId }); }
  refill(orderId)     { return this._post({ action: 'refill', order: orderId }); }
}

// 使用示例
const api = new SmmApi('你的_API_KEY');
const res = await api.addOrder({
  service: 1,
  link: 'https://youtube.com/watch?v=xxxx',
  quantity: 2000,
});
console.log('订单号:', res.order);

七、各种订单类型如何通过 API 下单

现代 SMM panel 远不止"买 followers"这么简单。通过同一个 add action,配合不同参数,你可以下各种类型的订单——这也是 PastePanel 相比早期 perfect panel 更强大的地方之一:

  • Defaultservice + link + quantity。最常见的 followers、likes、views。
  • Custom Commentsservice + link + comments(每行一条评论,换行分隔),用于定制化评论投放。
  • Drip-Feed(滴灌投放)service + link + quantity + runs(分几次)+ interval(每次间隔分钟)。让增长看起来更自然,避免瞬时暴涨触发风控。
  • Subscriptions(订阅式):针对新帖自动投放,参数含 usernameminmaxpostsdelay,适合给持续更新的账号做长期维护。
  • Mass Order(批量下单):一次提交多行"服务ID | 链接 | 数量",服务器端拆分成多个订单,reseller 批量补货神器。
  • Package:打包好的固定套餐,下单只需选 package 服务和 link。

八、生产环境必须处理的四件事:错误、幂等、重试、限流

能跑通 demo 和能扛住真实流量之间,隔着这几个工程细节:

错误处理:返回 JSON 中若含 error 字段(如 "Not enough funds"、"Incorrect service ID"、"Neither... quantity"),一定要显式捕获并给出可读提示,不要把裸 JSON 抛给终端用户。

幂等性:下单是花钱操作。网络超时后你不确定订单是否已创建,此时不要盲目重发——否则可能重复扣费下双单。正确做法是:在自己数据库先写一条"待提交"记录并生成本地唯一号,超时后先用 balance/status 侧面确认,再决定是否重试。PastePanel 内部的余额扣费与订单创建做到了 exactly-once(精确一次),这正是我们反复对账审计的核心。

重试策略:对只读操作(services、status、balance)可以放心指数退避重试;对操作(add、refill、cancel)必须配合幂等保护。

限流:上游 provider 通常有速率限制。批量任务要加请求间隔或并发上限,避免被临时封禁 IP 或 key。

九、安全最佳实践

再强调一遍,因为它值得:永远不要在客户端暴露 API key。所有调用走服务器端;密钥加密存储(Fernet 或等价方案);对下游 reseller 提供的是他们各自独立、可随时轮换的 key;记录调用日志以便审计;对余额变动配置监控告警。做白标平台时,还要保证每个租户的密钥与数据严格隔离,任何一个租户都无法触碰到另一个租户的 provider 凭据。

十、用 PastePanel 同时做 API 的"消费方"与"提供方"

这套 API 知识的真正价值在于:它是双向的。作为 reseller,你用上面的代码去消费上游 provider 的 API;而当你在 PastePanel 上开设自己的白标面板后,你自己就成了提供方——你的下游客户会用同样规范的 API 来对接你,你赚取中间差价。

PastePanel 让这件事变得极简:连接多个上游 SMM providers(API keys 全程 Fernet 加密、余额实时监控)、自动映射服务、给你的面板生成一套标准的 perfect panel 风格 API(自带 PHP/Python/Node.js 文档),一切都跑在你自己的域名和品牌之下。你不需要自己写面板、不需要维护服务器、不需要从零实现幂等扣费和 30 个管理模块——这些我们已经用 Python/FastAPI 异步架构替你构建并加固好了。

为什么选择 PastePanel 做你的 API 化 SMM 业务

  • 标准兼容:对外提供业界通用的 perfect panel 风格 API,你的客户零学习成本即可对接。
  • 多语言文档:内置 PHP、Python、Node.js 完整 API 示例,客户拿来即用。
  • 多 provider 聚合:一处连接多个上游,API keys 加密存储、余额监控,货源永不断供。
  • 全订单类型:Default、Package、Custom Comments、Subscriptions、Drip-Feed、Mass Order、Refill、Cancel 全部可通过 API 下单。
  • 全球支付:USDT、Binance、Payeer、Cryptomus、NOWPayments、CoinPayments、Stripe、bKash、ABA 及手动充值,收款无国界。
  • 真正白标:自有域名、品牌、主题,多租户隔离,客户只看到你的品牌。
  • 快速安全:Python/FastAPI 异步内核,精确一次的扣费与订单逻辑,经过反复对账审计。
  • 覆盖全平台增长:Instagram、TikTok、YouTube、Telegram、Facebook 一站搞定。

现在就开始

你已经掌握了 SMM panel API 集成的完整技术路径——从单端点结构、核心 action,到 PHP、Python、Node.js 三语言实战代码,再到幂等、限流与密钥安全。剩下的只差一步:拥有一个属于你自己的、可对外提供 API 的面板。

访问 PastePanel(pastepanel.com),免费开启你自己的白标 SMM panel。几分钟内上线,连接你的上游 providers,把上面的代码换成你自己的域名,让你的下游 reseller 用标准 API 自动向你下单——从今天起,让你的 SMM 业务真正跑在自动化的轨道上。

Your brand, your revenue

Stop reading, start building.

The best lessons come from doing. Launch your own panel in five minutes.

Launch your panel