Skip to Content
شروع سریع توسعه

شروع سریع Open API باسلام

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

اگر از Python یا PHP استفاده می‌کنید، SDK باسلام بخشی از فرایند احراز هویت، ارسال درخواست و مدیریت خطاها را برای شما ساده‌تر می‌کند. برای آشنایی با API و عیب‌یابی اتصال، پیشنهاد می‌کنیم ابتدا این راهنما را بخوانید.

در این راهنما

پیش‌نیازها

برای شروع به موارد زیر نیاز دارید:

Client Secret و توکن‌های دسترسی اطلاعات محرمانه‌اند. آن‌ها را در مخزن کد، لاگ‌ها، کد سمت مرورگر یا اپلیکیشن موبایل قرار ندهید. تبادل کد مجوز با توکن باید در سرور انجام شود.

آدرس‌های پایه

در این راهنما از سه دامنه استفاده می‌شود:

کاربردآدرس
فراخوانی APIهای باسلامhttps://openapi.basalam.com
دریافت و اعتبارسنجی توکنhttps://auth.basalam.com
دریافت مجوز از کاربرhttps://basalam.com/accounts/sso

انتخاب روش احراز هویت

روش احراز هویت را بر اساس نوع برنامه و مالک داده انتخاب کنید:

سناریوروش مناسب
اسکریپت یا ابزار اختصاصی برای حساب یا غرفهٔ خودتانPersonal Access Token
برنامهٔ عمومی که هر کاربر باسلام به آن اجازهٔ دسترسی می‌دهدAuthorization Code Flow

اگر می‌خواهید سریع‌ترین مسیر اتصال را آزمایش کنید، از توکن دسترسی شخصی استفاده کنید.

مسیر سریع: توکن دسترسی شخصی

توکن دسترسی شخصی برای توسعه، آزمایش و ابزارهایی مناسب است که فقط به حساب خودتان متصل می‌شوند. برای برنامه‌ای که قرار است کاربران مختلف از آن استفاده کنند، از Authorization Code Flow استفاده کنید.

برای دریافت توکن:

  1. وارد بخش توکن‌های دسترسی شخصی  در پنل توسعه‌دهندگان شوید.
  2. Scopeهای موردنیاز برنامه را انتخاب کنید.
  3. توکن را ایجاد و در یک محل امن ذخیره کنید.

فهرست Scopeها و کاربرد هرکدام در مستندات دسترسی‌ها قرار دارد.

ارسال اولین درخواست

برای اطمینان از صحت اتصال، اطلاعات کاربر فعلی را از GET /v1/users/me دریافت کنید. مقدار YOUR_ACCESS_TOKEN را با توکن خود جایگزین کنید.

curl https://openapi.basalam.com/v1/users/me \ -H 'Accept: application/json' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

نمونهٔ پاسخ موفق:

{ "id": 123456, "hash_id": "abc123", "username": "sample-user", "name": "کاربر نمونه", "vendor": { "id": 78910, "identifier": "sample-vendor", "title": "غرفه نمونه" } }

شناسهٔ vendor.id را نگه دارید؛ برای فراخوانی APIهای مرتبط با غرفه، از جمله مدیریت محصولات، به آن نیاز دارید.

اگر حساب کاربر غرفه نداشته باشد، ممکن است مقدار vendor در پاسخ تهی باشد. در این حالت، APIهای وابسته به vendor_id قابل‌استفاده نیستند.

اگر پاسخ 200 OK دریافت کردید، اتصال شما برقرار است. در صورت دریافت خطا، بخش خطاهای رایج را بررسی کنید.

شروع سریع با SDK

نصب SDK پایتون

pip install basalam-sdk

دریافت اطلاعات کاربر و محصولات

from basalam import Client client = Client(token="YOUR_ACCESS_TOKEN") user = client.users.get_me() print(f"سلام {user.name}!") products = client.products.list(vendor_id=user.vendor.id) for product in products: print(f"- {product.name}: {product.price} تومان")

افزودن محصول

new_product = client.products.create( vendor_id=user.vendor.id, name="محصول جدید", price=150000, stock=10, description="توضیحات محصول" ) print(f"محصول {new_product.name} با موفقیت ایجاد شد.")

برای مشاهدهٔ قابلیت‌ها و تنظیمات SDK، به مستندات SDK مراجعه کنید.

اتصال برنامه‌های عمومی با Authorization Code

در این روش، کاربر وارد حساب باسلام می‌شود و دسترسی‌های درخواستی برنامه را تأیید می‌کند. سپس باسلام یک کد یک‌بارمصرف به redirect_uri برنامه ارسال می‌کند و سرور شما آن را با توکن دسترسی مبادله می‌کند.

مرحلهٔ ۱: هدایت کاربر به صفحهٔ مجوز

کاربر را به آدرس زیر هدایت کنید:

https://basalam.com/accounts/sso?client_id=YOUR_CLIENT_ID&scope=REQUESTED_SCOPES&redirect_uri=YOUR_REDIRECT_URI&state=RANDOM_STATE
پارامترتوضیح
client_idشناسهٔ کلاینت دریافت‌شده از پنل توسعه‌دهندگان
scopeفهرست دسترسی‌های موردنیاز برنامه
redirect_uriآدرس بازگشت ثبت‌شده برای کلاینت
stateمقدار تصادفی و غیرقابل‌حدس برای جلوگیری از حملات CSRF

Scopeها را با فاصله از هم جدا و تمام پارامترها را URL-encode کنید. برای نمونه: vendor.product.read vendor.product.write customer.order.read

مرحلهٔ ۲: دریافت و بررسی کد مجوز

پس از تأیید دسترسی، کاربر به redirect_uri بازگردانده می‌شود و پارامترهای code و state در رشتهٔ پرس‌وجو (Query String) قرار می‌گیرند.

پیش از ادامه، مقدار state دریافتی را با مقداری که در ابتدای فرایند ایجاد و در نشست کاربر ذخیره کرده‌اید مقایسه کنید. اگر این دو مقدار برابر نیستند، فرایند را متوقف کنید.

مرحلهٔ ۳: تبادل کد با توکن

کد مجوز را از سمت سرور به endpoint زیر ارسال کنید:

curl -X POST https://auth.basalam.com/oauth/token \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "grant_type": "authorization_code", "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET", "redirect_uri": "YOUR_REDIRECT_URI", "code": "AUTHORIZATION_CODE" }'

نمونهٔ پاسخ موفق:

{ "token_type": "Bearer", "access_token": "eyJ0eXAiO...", "expires_in": 31622400, "refresh_token": "def502..." }

توکن‌ها را به‌صورت امن و مرتبط با همان کاربر ذخیره کنید. برای درخواست‌های بعدی، مقدار access_token را در هدر Authorization قرار دهید:

Authorization: Bearer ACCESS_TOKEN

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

برای بررسی اعتبار توکن و مشاهدهٔ اطلاعات هویتی مرتبط با آن، GET /whoami را فراخوانی کنید:

curl https://auth.basalam.com/whoami \ -H 'Accept: application/json' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

نمونهٔ پاسخ موفق:

{ "id": "123456", "name": "کاربر نمونه", "mobile": "09xxxxxxxxx", "hash_id": "abc123", "client": { "id": "78910", "name": "برنامه نمونه", "image_url": "https://example.com/image.jpg" } }

نمونهٔ کامل: افزودن محصول

افزودن محصول دو مرحله دارد:

  1. تصویر محصول را آپلود و شناسهٔ فایل را دریافت کنید.
  2. اطلاعات محصول و شناسهٔ تصویر را برای غرفه ارسال کنید.

پیش از شروع، مطمئن شوید توکن شما Scopeهای لازم را دارد و vendor.id را از پاسخ GET /v1/users/me دریافت کرده‌اید.

مرحلهٔ ۱: آپلود تصویر محصول

فایل را با POST /v1/files آپلود کنید. پاسخ این API شامل شناسه‌ای است که در مرحلهٔ بعد به آن نیاز دارید.

curl -X POST https://openapi.basalam.com/v1/files \ -H 'Accept: application/json' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ -F 'file=@test-image.jpg' \ -F 'file_type=product.photo'

نمونهٔ پاسخ موفق:

{ "id": "238300331", "file_name": "test-image.jpg", "path": "string", "mime_type": "image/jpeg", "size": 102400, "created_at": "2025-05-17T14:25:39Z", "creator_user_id": 123456 }

مشاهدهٔ مستندات API آپلود فایل

مرحلهٔ ۲: افزودن محصول

شناسهٔ غرفه را جایگزین {vendor_id} و شناسهٔ فایل آپلودشده را جایگزین 238300331 کنید.

curl -X POST https://openapi.basalam.com/v1/vendors/{vendor_id}/products \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ -d '{ "name": "محصول نمونه", "photo": 238300331, "photos": [238300331], "brief": "توضیحات کوتاه محصول", "description": "توضیحات کامل محصول نمونه", "preparation_days": 3, "weight": 500, "package_weight": 600, "primary_price": 150000, "stock": 10, "sku": "PRODUCT-SKU-001", "is_wholesale": false }'

فیلد photo شناسهٔ تصویر اصلی و فیلد photos فهرست تصاویر آلبوم محصول است. شناسهٔ تصویر اصلی را به‌عنوان اولین عضو photos نیز ارسال کنید.

بررسی محصولات غرفه

برای بررسی نتیجه، فهرست محصولات غرفه را دریافت کنید:

curl https://openapi.basalam.com/v1/vendors/{vendor_id}/products \ -H 'Accept: application/json' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

نمونهٔ پاسخ موفق:

{ "data": [ { "id": 24018670, "title": "تیشرت پسرانه تابستانی", "price": 100000, "photo": { "id": 236016433, "original": "https://example.com/original.jpg", "xs": "https://example.com/xs.jpg", "sm": "https://example.com/sm.jpg", "md": "https://example.com/md.jpg", "lg": "https://example.com/lg.jpg" }, "status": { "name": "در دسترس" } } ] }

خطاهای رایج

خطاعلت احتمالیراه‌حل
invalid_clientClient ID یا Client Secret نادرست استمقادیر کلاینت و محیط اجرایی را بررسی کنید.
redirect_uri_mismatchآدرس بازگشت با مقدار ثبت‌شده یکسان نیستپروتکل، دامنه، مسیر، پورت و اسلش انتهایی باید دقیقاً مطابق مقدار ثبت‌شده باشند.
invalid_grantکد مجوز نامعتبر، منقضی یا قبلاً استفاده شده استفرایند دریافت مجوز را دوباره آغاز کنید و کد جدید را فقط یک‌بار مصرف کنید.
invalid_scopeیک یا چند Scope نامعتبر یا غیرمجاز استScopeها را با فهرست دسترسی‌ها تطبیق دهید.
401 Unauthorizedتوکن ارسال نشده، نامعتبر یا منقضی استساختار هدر Authorization و اعتبار توکن را بررسی کنید.
403 Forbiddenتوکن Scope لازم را نداردScope موردنیاز endpoint را به دسترسی‌های برنامه اضافه کنید.
422 Unprocessable Entityداده‌های درخواست معتبر نیستندفیلدهای الزامی، نوع داده‌ها و جزئیات خطای پاسخ را بررسی کنید.

هنگام عیب‌یابی، status code و body کامل پاسخ را ثبت کنید؛ اما توکن، Client Secret و اطلاعات حساس کاربران را در لاگ قرار ندهید.

گام‌های بعدی

  • برای مشاهدهٔ endpointها، پارامترها و مدل پاسخ‌ها به مرجع API بروید.
  • برای انتخاب حداقل دسترسی لازم، Scopeها را بررسی کنید.
  • برای دریافت رویدادهایی مانند ثبت سفارش یا تغییر موجودی، وب‌هوک‌ها را راه‌اندازی کنید.
  • اگر از Python یا PHP استفاده می‌کنید، SDK باسلام را به پروژه اضافه کنید.
Last updated on