🔄 سیستم یکپارچه به‌روزرسانی

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

POST/api/updates/check

بررسی به‌روزرسانی برای یک محصول. احراز هویت لازم ندارد؛ برای محصولات غیررایگان، کلید لایسنس خریدار را در بدنه ارسال کنید تا لینک دانلود امن دریافت شود.

پارامترهای بدنه (JSON)

فیلدنوعالزامیتوضیح
slugstringبله*نامک محصول در سایت
productIdnumberبله*جایگزین slug (*یکی از این دو)
currentVersionstringخیرنسخه نصب‌شده در اپ کلاینت (مثلاً 1.2.0)
licenseKeystringبرای غیررایگانکلید لایسنس خریدار
platformstringخیرwordpress | node | android | ios | desktop | other
channelstringخیرSTABLE (پیش‌فرض) | TRIAL | INSIDER

نمونه درخواست و پاسخ

request.json
{
  "slug": "advanced-seo-pro",
  "currentVersion": "1.0.0",
  "licenseKey": "A1B2-C3D4-E5F6-...",
  "platform": "wordpress"
}
response.json
{
  "updateAvailable": true,
  "product": {
    "id": 12,
    "name": "پلاگین سئو پیشرفته",
    "slug": "advanced-seo-pro",
    "featuredImage": "https://.../image.jpg",
    "pricingType": "ONE_TIME"
  },
  "currentVersion": "1.0.0",
  "latestVersion": "1.2.0",
  "channel": "STABLE",
  "changelog": "رفع باگ‌ها و افزودن قابلیت جدید",
  "publishedAt": "2026-09-01T12:00:00.000Z",
  "requiresLicense": true,
  "licenseValid": true,
  "downloadUrl": "https://api.example.com/api/download/file?token=...",
  "fileSize": 1048576,
  "fileHash": "sha256:...",
  "checkedAt": "2026-09-16T12:00:00.000Z"
}
نکات مهم:
  • downloadUrl یک لینک امضاشده و ۵ دقیقه‌ای است — بلافاصله استفاده شود، ذخیره نشود.
  • اگر licenseValid: false باشد، downloadUrl مقدار null دارد.
  • مقایسه نسخه‌ها semver واقعی است (مثلاً 1.2.10 > 1.2.9).
  • محدودیت نرخ: ۱۲۰ درخواست در ساعت برای هر IP — بررسی دوبار در روز کافی است.

GET/api/updates/versions/:slug

تاریخچه نسخه‌های منتشرشده + changelog (برای صفحه «تغییرات» داخل اپ). پارامتر اختیاری ?channel=STABLE|TRIAL|INSIDER.

GET/api/update-check (سازگاری با نسخه قدیمی)

قالب قدیمی مورد استفاده پلاگین‌های وردپرسی نسل قبل — همچنان کار می‌کند:

legacy
GET /api/update-check?slug=advanced-seo-pro&version=1.0.0&license=KEY

{
  "update_available": true,
  "new_version": "1.2.0",
  "changelog": "...",
  "requires_license": false,
  "package": "https://.../api/download/file?token=..."
}

POST/api/updates/vendor/products/:id/versions

انتشار نسخه جدید به‌صورت برنامه‌ای (مناسب CI/CD) با کلید API فروشنده. کلید را از پنل فروشنده ← سیستم به‌روزرسانی بسازید و در هدر X-Update-Api-Key ارسال کنید.

publish.sh
curl -X POST "https://api.example.com/api/updates/vendor/products/12/versions" \
  -H "Content-Type: application/json" \
  -H "X-Update-Api-Key: dsu_..." \
  -d '{
    "version": "1.3.0",
    "changelog": "رفع باگ‌ها و بهبود سرعت",
    "fileUrl": "/uploads/plugin-1.3.0.zip",
    "fileSize": 1048576,
    "fileHash": "sha256:...",
    "channel": "STABLE"
  }'

با انتشار کانال STABLE: خریداران محصول اعلان سایت دریافت می‌کنند، کش فروشگاه پاک می‌شود و همه اپ‌های متصل در بررسی بعدی نسخه جدید را می‌بینند. آمار بررسی‌ها از GET /api/updates/vendor/stats قابل دریافت است.

چرخه کامل به‌روزرسانی

  1. فروشنده نسخه جدید را در پنل (یا با کلید API از CI/CD) منتشر می‌کند.
  2. سایت به همه خریداران اعلان می‌دهد (زنگوله اعلان‌ها + badge).
  3. اپ کلاینت در بررسی دوره‌ای POST /updates/check را صدا می‌زند.
  4. پاسخ: نسخه جدید + changelog + لینک دانلود امن (در صورت لایسنس معتبر).
  5. اپ به کاربر هشدار می‌دهد و فایل را از لینک امن دریافت می‌کند.
  6. فروشنده در پنل، آمار بررسی‌ها و کلاینت‌های قدیمی را می‌بیند.

کدهای آماده اتصال

نمونه کد کامل برای وردپرس/PHP، Node.js و اندروید/Kotlin همراه با آموزش گام‌به‌گام در پنل فروشنده موجود است:

ورود به پنل فروشنده ← سیستم به‌روزرسانی