Universal Commerce Protocol (UCP)

UCP یک استاندارد باز است که به ایجنت‌های هوش مصنوعی اجازه می‌دهد محصولات و خدمات شما را کشف، جست‌وجو و خریداری کنند — از طریق یک فایل JSON استاندارد و مجموعه‌ای از اندپوینت‌های ساخت‌یافته. این صفحه مرجع کامل پیاده‌سازی UCP است.

JSON over HTTPS Open Standard /.well-known/ucp
اجرای زنده در Sandbox

معرفی UCP

UCP نقش «منوی ماشین‌خوان» کسب‌وکار شما را بازی می‌کند. دقیقاً همان‌طور که robots.txt به خزنده‌های موتور جست‌وجو می‌گوید چه بخش‌هایی را بخزند، فایل UCP به ایجنت‌های هوش مصنوعی می‌گوید کسب‌وکار شما چه قابلیت‌هایی دارد و هرکدام از کجا صدا زده می‌شوند. این فایل باید همیشه در آدرس ثابت https://yoursite.com/.well-known/ucp و با پاسخ Content-Type: application/json در دسترس باشد.

شروع سریع

سریع‌ترین راه استفاده از ژنراتور رایگان UCP است: اطلاعات کسب‌وکار و قابلیت‌های موردنیاز را وارد می‌کنید و فایل ucp.json کامل و آماده‌ی استقرار تولید می‌شود. برای نوشتن دستی، از مرجع فیلدها و قابلیت‌های زیر استفاده کنید.

مرجع فایل ucp.json

فیلدنوعالزامیتوضیح
protocolstringبلهنسخه‌ی پروتکل، مثلاً "ucp/v1"
merchant_namestringبلهنام کسب‌وکار
descriptionstringخیرتوضیح کوتاه فعالیت کسب‌وکار
websitestring (URL)بلهآدرس اصلی سایت
capabilitiesarrayبلهفهرست قابلیت‌های قابل‌فراخوانی (به بخش بعد مراجعه کنید)
payment_methodsarrayخیرروش‌های پرداخت پشتیبانی‌شده
supported_languagesarrayخیرزبان‌های پشتیبانی‌شده، مثلاً ["fa", "en"]
currencystringخیرواحد پول پیش‌فرض، مثلاً "IRR"
{
  "protocol": "ucp/v1",
  "merchant_name": "فروشگاه نمونه",
  "description": "فروشگاه آنلاین لوازم دیجیتال",
  "website": "https://example.com",
  "capabilities": [
    {
      "name": "search_offers",
      "description": "جست‌وجو در محصولات",
      "endpoint": "https://api.example.com/v1/ucp/search",
      "method": "GET"
    }
  ],
  "payment_methods": ["iranian_bank_gateway"],
  "supported_languages": ["fa", "en"],
  "currency": "IRR"
}

مرجع قابلیت‌ها (Capabilities)

هر عضو آرایه‌ی capabilities شامل name، description، endpoint و method است. هشت قابلیت استاندارد:

namemethodکاربرد
search_offersGETجست‌وجو در محصولات یا خدمات
get_product_detailsGETدریافت جزئیات کامل یک محصول
check_inventoryGETبررسی موجودی لحظه‌ای
manage_cartPOSTافزودن و مدیریت سبد خرید
initiate_checkoutPOSTشروع فرآیند پرداخت
wallet_balanceGETبررسی موجودی کیف پول داخلی
book_appointmentPOSTرزرو نوبت برای کسب‌وکارهای خدماتی
validate_couponPOSTاعتبارسنجی کد تخفیف

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

GET /v1/ucp/search?query=هدفون&limit=5

200 OK
{
  "results": [
    { "id": "sku_123", "name": "هدفون بی‌سیم مدل X", "price": 4200000, "currency": "IRR", "in_stock": true }
  ]
}

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

POST /v1/ucp/checkout
{ "cart_id": "cart_789", "customer": { "name": "...", "phone": "..." } }

200 OK
{ "order_id": "order_456", "status": "pending_payment", "payment_url": "https://..." }

احراز هویت

UCP خودِ فایل manifest را عمومی نگه می‌دارد (بدون نیاز به احراز هویت برای خواندن)، اما اندپوینت‌های عملیاتی باید ایمن باشند:

  • همه‌ی اندپوینت‌ها فقط از طریق HTTPS در دسترس باشند
  • برای اندپوینت‌های حساس (checkout، wallet)، از توکن API یا Bearer Token استفاده کنید
  • درخواست‌های تغییردهنده (POST) را با امضای درخواست یا nonce یک‌بارمصرف محافظت کنید

پرداخت

قابلیت initiate_checkout معمولاً یک تراکنش را نزد درگاه پرداخت فعلی شما آغاز می‌کند و آدرس پرداخت یا شناسه‌ی تراکنش را برمی‌گرداند — UCP جایگزین درگاه پرداخت شما نیست، بلکه یک لایه‌ی استاندارد روی آن است. برای فروشگاه‌های ایرانی، این یعنی اتصال به همان درگاه‌های موجود (مثل زرین‌پال، آی‌دی‌پی یا هر PSP دیگری که در حال حاضر استفاده می‌کنید) از پشت همین اندپوینت.

نکته امنیتی: هرگز اطلاعات کارت بانکی را مستقیماً از طریق پاسخ UCP رد و بدل نکنید؛ همیشه کاربر (یا ایجنت از طرف او) را به درگاه رسمی پرداخت هدایت کنید.

مدیریت خطا

پاسخ خطا باید همیشه JSON معتبر باشد، نه صفحه‌ی HTML یا متن آزاد:

404 Not Found
{ "error": { "code": "product_not_found", "message": "محصول مورد نظر یافت نشد" } }

تست و اعتبارسنجی

  • curl -i https://yoursite.com/.well-known/ucp — بررسی پاسخ ۲۰۰ و JSON معتبر
  • خروجی را در یک اعتبارسنج JSON آنلاین بررسی کنید
  • هر capability را جداگانه با Postman تست کنید
  • مطمئن شوید در حالت خطا هم پاسخ JSON ساخت‌یافته برمی‌گردد

نسخه‌بندی

فیلد protocol نسخه‌ی فعلی را حمل می‌کند (مثلاً ucp/v1). تغییرات ناسازگار با نسخه‌های قبلی باید با افزایش شماره‌ی نسخه اعلام شوند تا ایجنت‌هایی که هنوز نسخه‌ی قدیمی را پیاده‌سازی کرده‌اند، دچار خطای غیرمنتظره نشوند.

سوالات متداول

آیا پیاده‌سازی UCP رایگان است؟

بله. UCP یک استاندارد باز است و ابزار ژنراتور آن در OpenCommerce رایگان است.

آیا باید همه‌ی هشت قابلیت را پیاده کنم؟

خیر. با search_offers و get_product_details شروع کنید و بقیه را به‌مرور اضافه کنید.

رابطه UCP با MCP چیست؟

UCP برای تراکنش‌های تجاری عمومی است؛ MCP برای دسترسی امن به داده‌های داخلی حساس‌تر طراحی شده. جزئیات بیشتر را در مستندات MCP بخوانید.