PastePanel
All articles
Article 12 min read

راهنمای کامل یکپارچه‌سازی API پنل SMM با PHP، Python و Node.js

P

PastePanel Team

Insights for panel operators

اگر می‌خواهید فروش خدمات شبکه‌های اجتماعی را از حالت دستی خارج کنید و آن را به یک سیستم کاملاً خودکار تبدیل کنید، API پنل SMM دقیقاً همان ابزاری است که به آن نیاز دارید. یک SMM panel API به شما اجازه می‌دهد بدون باز کردن مرورگر و بدون کلیک دستی، سفارش‌های followers، likes، views و subscribers را مستقیماً از کد خودتان ثبت کنید، وضعیت آن‌ها را دنبال کنید و حتی سیستم فروش خودتان (reseller store، بات، یا اپلیکیشن) را روی آن بنا کنید. در این راهنمای جامع، معماری استاندارد یک API پنل SMM را قدم‌به‌قدم بررسی می‌کنیم و برای هر سه زبان محبوب یعنی PHP، Python و Node.js نمونه‌کدهای واقعی و قابل استفاده ارائه می‌دهیم. تمام مثال‌ها بر پایه‌ی API پلتفرم PastePanel نوشته شده‌اند، اما چون این استاندارد در سراسر صنعت مشترک است، همان کد با هر پنل دیگری نیز کار می‌کند.

API پنل SMM چیست و چرا به آن نیاز دارید؟

یک API (رابط برنامه‌نویسی کاربردی) پلی است که به نرم‌افزارهای مختلف اجازه می‌دهد بدون دخالت انسان با یکدیگر گفتگو کنند. در دنیای پنل‌های SMM، این یعنی به‌جای اینکه هر سفارش را به‌صورت دستی در داشبورد ثبت کنید، برنامه‌ی شما یک درخواست HTTP ساده می‌فرستد و پنل بلافاصله سفارش را ثبت می‌کند و یک شماره‌ی سفارش برمی‌گرداند. این تفاوت میان فروش چند سفارش در روز و پردازش هزاران سفارش در ساعت است.

کاربردهای رایج یک SMM panel API عبارت‌اند از:

  • ساخت فروشگاه reseller: شما یک پنل بالادست را از طریق API به وب‌سایت یا اپلیکیشن خودتان وصل می‌کنید و خدمات را با قیمت دلخواه به مشتریان نهایی می‌فروشید.
  • اتوماسیون کامل: اتصال فرم سفارش سایت، بات Telegram، یا سیستم CRM به پنل تا سفارش‌ها به‌صورت خودکار ثبت و تسویه شوند.
  • زنجیره‌ی provider: یک پنل می‌تواند به‌عنوان provider برای پنل دیگری عمل کند؛ سفارش مشتری شما به‌صورت خودکار به بالادست منتقل می‌شود.
  • همگام‌سازی خدمات و قیمت‌ها: دریافت خودکار لیست کامل خدمات و نرخ‌ها برای به‌روزرسانی کاتالوگ فروشگاه شما.

ساختار استاندارد یک API پنل SMM

خبر خوب برای توسعه‌دهندگان این است که تقریباً همه‌ی پنل‌های این صنعت از یک الگوی یکسان پیروی می‌کنند؛ الگویی که در بازار با نام عمومی استاندارد perfect panel شناخته می‌شود. یادگیری این یک ساختار به این معناست که کد شما با کمترین تغییر به هر پنل سازگاری خواهد داشت. مؤلفه‌های اصلی این استاندارد عبارت‌اند از:

  • یک endpoint واحد: همه‌ی درخواست‌ها با متد POST به یک آدرس مشخص ارسال می‌شوند، مثلاً https://your-panel.com/api/v2.
  • پارامتر key: کلید API شخصی شما که نقش احراز هویت را بازی می‌کند و در هر درخواست فرستاده می‌شود.
  • پارامتر action: مشخص می‌کند چه عملیاتی می‌خواهید انجام دهید؛ مانند services، add، status، balance، refill و cancel.
  • پاسخ JSON: پنل همیشه یک پاسخ ساختارمند به فرمت JSON برمی‌گرداند که برنامه‌ی شما به‌راحتی آن را پردازش می‌کند.

در PastePanel این endpoint هم بدنه‌ی form-encoded و هم بدنه‌ی application/json را می‌پذیرد، بنابراین از هر زبانی که کار کنید انعطاف کامل دارید. چون ساختار پاسخ‌ها در اکثر پنل‌های سازگار با perfect panel یکسان است، مهاجرت میان providerها یا مدیریت هم‌زمان چند بالادست بسیار ساده می‌شود.

احراز هویت و امنیت کلید API

هر کاربر پنل یک API key منحصربه‌فرد در بخش تنظیمات حساب خود دریافت می‌کند. این کلید عملاً معادل رمز عبور برای دسترسی برنامه‌نویسی است و باید مانند یک راز حفاظت شود. چند اصل امنیتی حیاتی که هرگز نباید نادیده بگیرید:

  • هرگز کلید را در کد سمت کاربر (frontend) قرار ندهید. کلید فقط باید در سرور شما زندگی کند؛ در جاوااسکریپت مرورگر یا اپلیکیشن موبایل قابل استخراج است.
  • کلید را در متغیرهای محیطی (environment variables) نگه دارید، نه به‌صورت هاردکد در فایل‌های سورس که ممکن است در گیت‌هاب لو برود.
  • همیشه از HTTPS استفاده کنید تا کلید در مسیر شبکه شنود نشود.

در سمت پنل، PastePanel لایه‌های امنیتی جدی‌ای پیاده کرده است: کلیدهای API با رمزنگاری Fernet ذخیره می‌شوند، تلاش‌های مکرر با کلید نادرست باعث مسدود شدن موقت آی‌پی می‌شود (محافظت در برابر brute-force)، و برای هر کاربر محدودیت نرخ (rate limit) اعمال می‌گردد. این یعنی حتی اگر یک اسکریپت اشتباه در حلقه‌ای بی‌پایان گیر کند، سیستم پایدار باقی می‌ماند.

اکشن‌های اصلی API پنل SMM

پیش از رفتن سراغ کد، بیایید مجموعه‌ی کامل اکشن‌هایی را که یک SMM panel API استاندارد در اختیار شما می‌گذارد مرور کنیم. تسلط بر این‌ها یعنی تسلط بر تمام چرخه‌ی عمر یک سفارش:

  • services — دریافت کاتالوگ کامل خدمات به‌همراه service (شناسه)، name، type، category، rate (نرخ به‌ازای هر ۱۰۰۰ واحد)، min، max و پرچم‌های dripfeed، refill و cancel.
  • add — ثبت سفارش جدید. پارامترهای اصلی: service، link، quantity. پاسخ شامل شماره‌ی سفارش (order) است.
  • status — بررسی وضعیت یک سفارش (پارامتر order) یا چند سفارش به‌صورت هم‌زمان (پارامتر orders با شناسه‌های جداشده با کاما). پاسخ شامل charge، start_count، status و remains است.
  • balance — دریافت موجودی فعلی حساب و واحد پول آن.
  • refill — درخواست جبران ریزش (فقط برای خدماتی که پرچم refill دارند). پاسخ یک شناسه‌ی refill برمی‌گرداند.
  • refill_status — بررسی وضعیت یک درخواست refill.
  • cancel — لغو سفارش و بازگشت مبلغ باقی‌مانده (فقط برای خدماتی که پرچم cancel دارند).

مقادیر ممکن برای فیلد status معمولاً عبارت‌اند از: Pending، In progress، Processing، Completed، Partial و Canceled. برنامه‌ی شما باید بر اساس این مقادیر منطق خودش را بسازد؛ مثلاً وقتی وضعیت به Completed رسید سفارش را در سیستم خودتان بسته اعلام کنید.

یکپارچه‌سازی API پنل SMM با PHP

PHP هنوز رایج‌ترین زبان برای وب‌سایت‌های فروش خدمات است و اتصال آن به یک API پنل SMM با کتابخانه‌ی داخلی cURL بسیار ساده است. کلاس زیر یک نمونه‌ی تمیز و قابل استفاده در محیط تولید (production) است:

<?php
class SmmPanel {
    private $apiUrl;
    private $apiKey;

    public function __construct($apiUrl, $apiKey) {
        $this->apiUrl = $apiUrl;
        $this->apiKey = $apiKey;
    }

    private function request(array $params) {
        $params['key'] = $this->apiKey;
        $ch = curl_init($this->apiUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
        $response = curl_exec($ch);
        if (curl_errno($ch)) {
            throw new Exception('cURL error: ' . curl_error($ch));
        }
        curl_close($ch);
        return json_decode($response, true);
    }

    public function services() {
        return $this->request(['action' => 'services']);
    }

    public function order($service, $link, $quantity) {
        return $this->request([
            'action'   => 'add',
            'service'  => $service,
            'link'     => $link,
            'quantity' => $quantity,
        ]);
    }

    public function status($orderId) {
        return $this->request(['action' => 'status', 'order' => $orderId]);
    }

    public function balance() {
        return $this->request(['action' => 'balance']);
    }
}

// نحوه استفاده
$panel = new SmmPanel('https://your-panel.com/api/v2', 'YOUR_API_KEY');

$order = $panel->order(1, 'https://instagram.com/username', 1000);
echo 'Order ID: ' . $order['order'];

$state = $panel->status($order['order']);
echo 'Status: ' . $state['status'] . ' | Remains: ' . $state['remains'];

نکته‌ی مهم این است که همیشه پاسخ را برای وجود کلید error بررسی کنید. اگر پنل خطایی برگرداند (مثلاً موجودی ناکافی یا شناسه‌ی سرویس نامعتبر)، به‌جای order یک فیلد error در پاسخ خواهید داشت.

یکپارچه‌سازی API پنل SMM با Python

Python انتخاب ایده‌آل برای اسکریپت‌های اتوماسیون، بات‌ها و پردازش‌های پس‌زمینه است. با کتابخانه‌ی محبوب requests، اتصال به یک SMM panel API تنها چند خط طول می‌کشد:

import requests

class SmmPanel:
    def __init__(self, api_url, api_key):
        self.api_url = api_url
        self.api_key = api_key

    def _post(self, payload):
        payload["key"] = self.api_key
        response = requests.post(self.api_url, data=payload, timeout=30)
        response.raise_for_status()
        return response.json()

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

    def add_order(self, service, link, quantity):
        return self._post({
            "action": "add",
            "service": service,
            "link": link,
            "quantity": quantity,
        })

    def add_dripfeed(self, service, link, quantity, runs, interval):
        # runs = تعداد دفعات، interval = فاصله بین هر اجرا بر حسب دقیقه
        return self._post({
            "action": "add",
            "service": service,
            "link": link,
            "quantity": quantity,
            "runs": runs,
            "interval": interval,
        })

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

    def multi_status(self, order_ids):
        return self._post({"action": "status", "orders": ",".join(map(str, order_ids))})

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

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


# نحوه استفاده
panel = SmmPanel("https://your-panel.com/api/v2", "YOUR_API_KEY")

result = panel.add_order(1, "https://tiktok.com/@user/video/123", 5000)
if "error" in result:
    print("خطا:", result["error"])
else:
    print("سفارش ثبت شد. شماره:", result["order"])

در مثال بالا متد add_dripfeed نشان می‌دهد که فعال‌سازی drip-feed (تحویل تدریجی سفارش در چند نوبت) تنها با افزودن دو پارامتر runs و interval انجام می‌شود. این ویژگی برای رشد طبیعی و باورپذیر حساب‌های Instagram و YouTube بسیار ارزشمند است.

یکپارچه‌سازی API پنل SMM با Node.js

برای اپلیکیشن‌های مدرن، وب‌سرویس‌های async و باتهایی که باید هزاران سفارش را هم‌زمان مدیریت کنند، Node.js عملکرد فوق‌العاده‌ای دارد. نمونه‌ی زیر با axios نوشته شده اما با fetch داخلی نسخه‌های جدید Node نیز به‌سادگی قابل پیاده‌سازی است:

const axios = require("axios");

class SmmPanel {
  constructor(apiUrl, apiKey) {
    this.apiUrl = apiUrl;
    this.apiKey = apiKey;
  }

  async request(params) {
    const body = new URLSearchParams({ key: this.apiKey, ...params });
    const res = await axios.post(this.apiUrl, body.toString(), {
      headers: { "Content-Type": "application/x-www-form-urlencoded" },
      timeout: 30000,
    });
    return res.data;
  }

  services() {
    return this.request({ action: "services" });
  }

  addOrder(service, link, quantity) {
    return this.request({ action: "add", service, link, quantity });
  }

  status(order) {
    return this.request({ action: "status", order });
  }

  balance() {
    return this.request({ action: "balance" });
  }
}

// نحوه استفاده
(async () => {
  const panel = new SmmPanel("https://your-panel.com/api/v2", "YOUR_API_KEY");

  const order = await panel.addOrder(1, "https://youtube.com/watch?v=abc", 2000);
  if (order.error) {
    console.error("خطا:", order.error);
    return;
  }
  console.log("سفارش ثبت شد:", order.order);

  const balance = await panel.balance();
  console.log("موجودی:", balance.balance, balance.currency);
})();

توجه کنید که در هر سه زبان الگوی کار یکسان است: یک تابع مرکزی که key را اضافه می‌کند و درخواست POST می‌فرستد، و متدهای کوچکی که هر action را می‌پوشانند. همین سادگی است که استاندارد سبک perfect panel را برای توسعه‌دهندگان سراسر جهان محبوب کرده است.

مدیریت انواع سفارش پیشرفته از طریق API

یک API پنل SMM حرفه‌ای فقط سفارش‌های ساده را پشتیبانی نمی‌کند. در PastePanel می‌توانید تمام انواع سفارش را مستقیماً از کد ثبت کنید، فقط با افزودن پارامترهای متناسب به اکشن add:

  • Default: ساده‌ترین حالت با service، link و quantity.
  • Package: بسته‌های با مقدار ثابت که نیازی به quantity ندارند.
  • Custom Comments: ارسال فیلد comments شامل فهرست کامنت‌ها (هر کامنت در یک خط).
  • Mentions: ارسال فیلد usernames برای منشن کردن فهرستی از کاربران.
  • Poll: استفاده از پارامتر answer_number برای رأی به گزینه‌ی مشخص در نظرسنجی.
  • Subscriptions: استفاده از username، min، max، posts، old_posts، delay و expiry برای اشتراک‌های خودکار روی پست‌های آینده.
  • Drip-Feed: افزودن runs و interval برای تحویل تدریجی و طبیعی.

این انعطاف یعنی هر سناریوی بازاریابی که برای مشتریان Facebook، TikTok یا Telegram طراحی می‌کنید، بدون محدودیت از طریق کد قابل اجراست.

بهترین شیوه‌ها برای یکپارچه‌سازی پایدار

اتصال ساده به API کار سختی نیست، اما ساختن یک یکپارچه‌سازی که در مقیاس بالا و در شرایط واقعی پایدار بماند، به رعایت چند اصل مهم نیاز دارد:

  • از Idempotency-Key استفاده کنید. هنگام ثبت سفارش، اگر درخواست شما به‌دلیل قطعی شبکه دوباره ارسال شود، ممکن است سفارش دوبار ثبت گردد. PastePanel از هدر Idempotency-Key (یا پارامتر idempotency_key) پشتیبانی می‌کند؛ با ارسال یک شناسه‌ی یکتا برای هر سفارش، پنل پاسخ قبلی را بازپخش می‌کند و از ثبت تکراری جلوگیری می‌شود.
  • به rate limit احترام بگذارید. برای هر کاربر سقف تعداد درخواست در ثانیه وجود دارد. اگر کد پاسخ 429 دریافت کردید، با تأخیر تصاعدی (exponential backoff) دوباره تلاش کنید، نه بلافاصله.
  • وضعیت‌ها را با polling معقول دنبال کنید، نه هر ثانیه. بررسی هر چند دقیقه یک‌بار برای اکثر سفارش‌ها کافی است و از فشار غیرضروری روی هر دو سیستم جلوگیری می‌کند. برای بررسی گروهی از اکشن status با پارامتر orders استفاده کنید تا با یک درخواست، ده‌ها سفارش را همزمان چک کنید.
  • همیشه خطاها را مدیریت کنید. هر پاسخ ممکن است به‌جای داده، فیلد error داشته باشد؛ پیش از استفاده از نتیجه آن را بررسی کنید.
  • timeout و retry تعریف کنید تا یک درخواست کند، کل جریان کاری شما را متوقف نکند.

ساخت کسب‌وکار reseller با API

قدرتمندترین کاربرد یک SMM panel API ساخت یک کسب‌وکار reseller یا white-label است. الگوی رایج این است: مشتری در وب‌سایت شما سفارش می‌دهد، بک‌اند شما با اکشن add همان سفارش را روی پنل بالادست (provider) ثبت می‌کند، شماره‌ی سفارش را ذخیره می‌کند، و با اکشن status پیشرفت را به مشتری نمایش می‌دهد. تفاوت قیمت خرید از بالادست و قیمت فروش شما، سود شماست.

خبر عالی این است که با PastePanel اصلاً نیازی نیست این زیرساخت را از صفر بسازید. پلتفرم به‌صورت آماده امکان اتصال به چند provider بالادست (با کلیدهای رمزنگاری‌شده و پایش موجودی)، مدیریت مشتریان، درگاه‌های پرداخت جهانی و یک API کامل برای مشتریان خودتان را فراهم می‌کند. عملاً شما یک پنل کامل و برندشده تحویل می‌گیرید که خودش هم API مصرف می‌کند و هم API ارائه می‌دهد.

مزایای استفاده از API پنل SMM در PastePanel

  • سازگاری کامل با استاندارد صنعت: API سبک perfect panel یعنی هر کدی که یاد می‌گیرید در همه‌جا کار می‌کند و مهاجرت آسان است.
  • پشتیبانی از هر زبان: PHP، Python، Node.js و هر زبان دیگری که بتواند درخواست HTTP بفرستد.
  • معماری async و سریع: ساخته‌شده با Python/FastAPI برای پاسخ‌گویی سریع حتی در حجم بالای سفارش.
  • امنیت جدی: رمزنگاری Fernet برای کلیدها، محافظت brute-force، و rate limiting هوشمند.
  • ثبت سفارش امن و بدون تکرار: پشتیبانی از Idempotency-Key برای جلوگیری از سفارش دوباره.
  • پوشش کامل چرخه‌ی سفارش: ثبت، بررسی وضعیت، refill، cancel و مدیریت drip-feed همه از طریق API.
  • راهکار white-label چند‌مستأجری: دامنه، برند و تم اختصاصی خودتان روی زیرساختی که کاملاً مدیریت‌شده است.
  • پرداخت جهانی: USDT، Binance، Cryptomus، NOWPayments، Payeer، Stripe و روش‌های دیگر برای مشتریان سراسر دنیا.
  • رشد برای همه‌ی پلتفرم‌ها: Instagram، TikTok، YouTube، Telegram و Facebook.

جمع‌بندی و شروع رایگان

یکپارچه‌سازی API پنل SMM راهی است که کسب‌وکار شما را از فروش دستی به یک ماشین خودکار مقیاس‌پذیر تبدیل می‌کند. همان‌طور که دیدید، با یک endpoint واحد، یک key و مجموعه‌ای کوچک از اکشن‌ها، می‌توانید در PHP، Python یا Node.js یک سیستم فروش کامل بسازید؛ سفارش ثبت کنید، وضعیت را دنبال کنید، refill و cancel را مدیریت کنید و حتی زنجیره‌ی reseller خودتان را راه بیندازید. چون این API از استاندارد رایج perfect panel پیروی می‌کند، دانش شما همیشه ارزشمند و قابل انتقال باقی می‌ماند.

حالا وقت آن است که پنل SMM خودتان را راه‌اندازی کنید. PastePanel به شما اجازه می‌دهد یک پنل کاملاً برندشده با white-label، درگاه‌های پرداخت جهانی و همین API قدرتمند را به‌صورت رایگان شروع کنید. همین امروز به pastepanel.com سر بزنید، حساب خود را بسازید، کلید API‌تان را دریافت کنید و اولین سفارش خودکار خود را ثبت کنید. کسب‌وکار خدمات شبکه‌های اجتماعی شما از همین‌جا آغاز می‌شود.

Your brand, your revenue

Stop reading, start building.

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

Launch your panel