FA
پنل‌های VPN

پرداخت کریپتو برای Marzban VPN

یک سرویس کوچک روی سرور خودتان که اشتراک‌های Marzban VPN را از طریق SnapEX Pay با کریپتو می‌فروشد. فروشگاه یا ربات تلگرام شما از آن لینک پرداخت می‌گیرد، مشتری در صفحه SnapEX Pay پرداخت می‌کند (USDT در TRC20، ERC20 یا BEP20، به‌علاوه روش‌های دیگری که SnapEX برای آن مبلغ ارائه می‌دهد) و پس از پرداخت فاکتور، سرویس کاربر را در پنل Marzban می‌سازد یا تمدید می‌کند و لینک اشتراک را برمی‌گرداند.

دانلود ماژول

رایگان. نسخه 1.0.0.

چه کاری انجام می‌دهد

  • بدون نیاز به کیف پول یا نود بلاکچین.
  • POST /v1/checkout برای یک پلن فاکتور SnapEX Pay می‌سازد و pay_url را برمی‌گرداند؛ GET /v1/orders/{invoice_id} وضعیت و لینک اشتراک را برمی‌گرداند تا ربات بتواند آن را بررسی کند.
  • وب‌هوک امضاشده (HMAC-SHA256، بازه زمانی ۵ دقیقه). به بدنه وب‌هوک اعتماد نمی‌شود: فاکتور دوباره از API SnapEX Pay خوانده می‌شود و کاربر فقط پس از پرداخت ساخته می‌شود.
  • ایمن در برابر تکرار: تحویل‌های تکراری یا هم‌زمان وب‌هوک، هر فاکتور را فقط یک بار اعمال می‌کنند.
  • کاربران جدید همه پروتکل‌هایی را که در پنل شما inbound دارند می‌گیرند؛ کاربران موجود از تاریخ انقضای فعلی تمدید می‌شوند و پلن‌های حجمی، سهمیه تازه‌ای روی مصرف فعلی اضافه می‌کنند.
  • پلن‌ها با یک متغیر محیطی تنظیم می‌شوند؛ سفارش‌ها در SQLite نگهداری می‌شوند. حالت تست هیچ پول واقعی جابه‌جا نمی‌کند.

نصب

  1. آرشیو را دانلود و از حالت فشرده خارج کنید، سپس در پوشه آن cp .env.example .env را اجرا کنید.
  2. در پنل فروشنده SnapEX Pay یک کلید API با دسترسی‌های invoices.read و invoices.write بسازید و آن را در SNAPEX_API_KEY قرار دهید.
  3. API_TOKEN (مثلاً openssl rand -hex 32)، MARZBAN_URL و اطلاعات ادمین Marzban (MARZBAN_USERNAME و MARZBAN_PASSWORD) و پلن‌های خود را در PLANS تنظیم کنید (id:days:usd:traffic_bytes، مقدار 0 بایت = نامحدود).
  4. اجرا کنید: docker compose up -d، سپس curl http://127.0.0.1:8080/health را بررسی کنید. سرویس را پشت یک reverse proxy با HTTPS قرار دهید.
  5. در پنل یک endpoint وب‌هوک https://<your service>/webhook با حداقل رویداد invoice.paid اضافه کنید، رمز امضای آن را در SNAPEX_WEBHOOK_SECRET بگذارید و سرویس را ری‌استارت کنید.
  6. از فروشگاه یا ربات خود POST /v1/checkout را با Authorization: Bearer <API_TOKEN> فراخوانی کنید، pay_url را برای مشتری بفرستید و برای دریافت لینک اشتراک GET /v1/orders/{invoice_id} را بررسی کنید. برای تست بدون پول واقعی SNAPEX_ENVIRONMENT=test را تنظیم کنید.

تنظیمات

SNAPEX_API_KEYکلید API فروشنده (smk_…) با invoices.read و invoices.write.
SNAPEX_WEBHOOK_SECRETرمز امضای (whsec_…) endpoint وب‌هوک شما.
SNAPEX_ENVIRONMENTlive یا test. فاکتورهای تست پول واقعی جابه‌جا نمی‌کنند.
SNAPEX_FEE_ONچه کسی کارمزد سرویس SnapEX را می‌پردازد: merchant یا customer.
API_TOKENتوکن Bearer که ربات یا فروشگاه شما به /v1/checkout و /v1/orders/* می‌فرستد.
MARZBAN_URL, MARZBAN_USERNAME, MARZBAN_PASSWORDآدرس پنل و اطلاعات ادمین (یا یک MARZBAN_TOKEN آماده؛ توکن‌ها منقضی می‌شوند، پس برای سرویسی که همیشه روشن است نام کاربری و رمز بهتر است).
PLANSمقادیر جداشده با کاما به شکل id:days:usd:traffic_bytes، پیش‌فرض month:30:5.00:0,quarter:90:12.00:0.

سؤالات

آیا می‌توانم از ربات تلگرام استفاده کنم؟

بله. ربات POST /v1/checkout را فراخوانی می‌کند، pay_url را برای کاربر می‌فرستد و برای لینک اشتراک GET /v1/orders/{invoice_id} را بررسی می‌کند. یک ربات تلگرام کامل برای Marzban، 3x-ui و Remnawave هم وجود دارد.

کاربر موجودی که دوباره پرداخت می‌کند چه می‌شود؟

اشتراک از تاریخ انقضای فعلی تمدید می‌شود (یا از همین حالا، اگر قبلاً منقضی شده باشد)؛ پلن‌های حجمی سهمیه تازه‌ای روی مصرف اضافه می‌کنند.

آیا یک وب‌هوک می‌تواند کاربر را دو بار بسازد؟

خیر. تحویل‌های تکراری یا هم‌زمان، هر فاکتور را فقط یک بار اعمال می‌کنند و سرویس پیش از هر کاری فاکتور را دوباره از API SnapEX Pay می‌خواند.

اگر هنگام رسیدن پرداخت، پنل Marzban در دسترس نباشد چه؟

هندلر وب‌هوک 502 برمی‌گرداند و SnapEX Pay بعداً دوباره ارسال می‌کند.

چرا به HTTPS نیاز دارم؟

SnapEX Pay وب‌هوک‌ها را فقط به آدرس‌های https:// می‌فرستد، پس سرویس را پشت nginx، Caddy یا Traefik قرار دهید.

آماده دریافت کریپتو هستید؟

حساب فروشنده بسازید، کلید API بگیرید و ماژول را وصل کنید. 1٪ برای هر پرداخت، بدون هزینه ماهانه.