شروع سریع توسعه
این سند راهنمای قدم اول تا اولین فراخوانی در مسیر توسعه برنامهتان را با استفاده از API باسلام ارائه میدهد.
توصیه مهم: استفاده از SDK باسلام
قبل از شروع کار با API مستقیم، قویاً توصیه میکنیم از SDK رسمی باسلام استفاده کنید. این SDKها زمان توسعه را تا 70% کاهش میدهند و بسیاری از پیچیدگیها را به صورت خودکار مدیریت میکنند.
آنچه در این سند میخوانید
- پیشنیازها
- احراز هویت در API باسلام
- شروع سریع با SDK
- توکن دسترسی شخصی
- جریان کد مجوز (OAuth)
- اعتبارنامه کلاینت
- فراخوانی اولین API: افزودن محصول جدید
- خطاهای رایج و رفع مشکل
- گامهای بعدی
پیشنیازها
- حساب کاربری در باسلام
- مشخصات کلاینت شامل
Client ID
وClient Secret
یا توکن دسترسی شخصی (PAT) (از پنل توسعهدهندگان دریافت کنید.)
احراز هویت در API باسلام
برای استفاده از API باسلام، بسته به نوع اپ و سطح دسترسی موردنیاز، سه روش اصلی برای احراز هویت وجود دارد. این روشها بر اساس استاندارد OAuth 2.0 طراحی شدهاند و امکان دسترسی ایمن و کنترلشده به سرویسهای مختلف باسلام را فراهم میکنند.
سناریو | روش احراز هویت |
---|---|
توسعه اپلیکیشن اختصاصی برای یک غرفه یا کاربر مثلاً یک پنل مدیریتی شخصی یا اسکریپت اتوماسیون برای یک غرفه یا حساب کاربری خاص | Personal Access Token |
توسعه اپلیکیشن عمومی برای کاربران باسلام (Third-Party) مثلاً یک ابزار تحلیلی یا پلاگین فروشگاهی که کاربران پس از احراز هویت، به شما اجازه دسترسی به اطلاعات خود را بدهند | Authorization Code Flow |
ارتباط سیستمی با سرویسهای مالی/حقوقی باسلام که بدون دخالت مستقیم کاربر، نیاز به ارسال ریکوئست به API دارند ارسال درخواست به سرویسهایی مانند کیف پول، امور مالی یا تسویهحساب که از طرف یک کاربر حقوقی، سازمان یا سیستم احراز هویت میشوند، نه کاربر نهایی | Client Credentials Flow |
شروع سریع با SDK
SDK باسلام سادهترین و سریعترین راه برای کار با API های باسلام است. با استفاده از 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 مراجعه کنید.
اگر ترجیح میدهید مستقیماً با API کار کنید، ادامه این مستند نحوه استفاده از API های باسلام را توضیح میدهد:
توکن دسترسی شخصی
برای دریافت توکن به پنل توسعهدهندگان مراجعه کرده و از بخش توکن دسترسی شخصی ، توکن دسترسی و رفرش توکن خود را با اسکوپ دسترسی موردنظر، دریافت کنید.
جریان کد مجوز
مرحله ۱: درخواست مجوز
برای دسترسی به منابع کاربر و شروع فرآیند احراز هویت، کاربر را به آدرس مجوز باسلام (با پارامترهای مشخص شده و مقادیر دریافت شده پس از ساخت کلاینت) هدایت کنید:
https://basalam.com/accounts/sso?client_id=[client_id]&scope=[scope]&redirect_uri=[client_redirect_uri]&state=[state]
توجه داشته باشید که لیست Scopeها با فاصله (space) از هم جدا شده باشند.
به عنوان مثال: scope="vendor.product.read vendor.product.write customer.order.read"
برای مشاهده لیست کامل Scopeها، به صفحه مستندات دسترسیها مراجعه کنید.
مرحله ۲: دریافت توکن دسترسی از کاربر
پس از اعطای دسترسی به برنامه توسط کاربر، کد تایید code
ارسال شده به redirect_uri
خود را برای دریافت توکن دسترسی ارسال کنید:
cURL
curl -X POST https://auth.basalam.com/oauth/token \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"grant_type": "authorization_code",
"client_id": "[YOUR_CLIENT_ID]",
"client_secret": "[YOUR_CLIENT_SECRET]",
"redirect_uri": "[YOUR_REDIRECT_URI]",
"code": "[CODE]"
}'
نمونه پاسخ دریافتی:
{
"token_type": "Bearer",
"access_token": "eyJ0eXAiO...",
"expires_in": 31622400,
"refresh_token": "def502..."
}
مرحله ۳: دریافت اطلاعات کاربر
cURL
curl -X GET https://core.basalam.com/v3/users/me \
-H 'Accept: application/json' \
-H 'Authorization: Bearer [TOKEN]'
نمونه پاسخ دریافتی:
{
"id": 0, // آیدی کاربر
"hash_id": "string", // هشآیدی کاربر
"username": "string",
"name": "string",
"vendor": {
"id": 0, // آیدی غرفه کاربر
"identifier": "string", // آیدی غرفه
"title": "string"
}
}
اعتبارنامه کلاینت
برای APIهایی که نیازمند دسترسی و کاربر از نوع حقوقی است، برای نمونه، دریافت تراز غرفه یا تاریخچه کیف پول، باید از احراز هویت کلاینت استفاده کنید:
cURL
curl -X POST https://auth.basalam.com/oauth/token \
-H 'Content-Type: application/json' \
-d '{
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"scope": "*"
}'
اعتبارسنجی اطلاعات توکن کاربر
برای اعتبارسنجی توکن دریافتی نیز میتوانید از اندپوینت /whoami
استفاده کنید:
cURL
curl -X GET https://auth.basalam.com/whoami \
-H 'Accept: application/json' \
-H 'Authorization: Bearer [TOKEN]'
نمونه پاسخ دریافتی:
{
"id": "...",
"name": "....",
"mobile": "09xxxxxxxxx",
"hash_id": "xxx",
"client": {
"id": "...",
"name": "...",
"image_url": "..."
}
}
فراخوانی اولین API: افزودن محصول جدید
قبل از افزودن محصول، باید تصاویر آن را با استفاده از اندپوینت /v3/files
آپلود کرده و شناسههای
تصاویر را در درخواست افزودن محصول قرار دهید:
آپلود تصاویر محصول
cURL
curl -X POST https://uploadio.basalam.com/v3/files \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@test-image.jpg" \
-F "file_type=product.photo"
</Tabs.Tab>
<Tabs.Tab>
```python copy
import requests
def upload_file(token, file_path):
response = requests.post(
'https://uploadio.basalam.com/v3/files',
headers={'Authorization': f'Bearer {token}'},
files={'file': open(file_path, 'rb')}
)
return response.json()
نمونه پاسخ دریافتی:
{
"id": "238300331",
"file_name": "string",
"path": "string",
"mime_type": "string",
"size": 102400,
"created_at": "2025-05-17T14:25:39Z",
"creator_user_id": 1
}
افزودن محصول
برای افزودن محصول جدید، اطلاعات محصول را به اندپوینت /vendors/{vendor_id}/products
ارسال کنید:
cURL
curl -X POST https://core.basalam.com/v4/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
}'
API افزودن محصول، دو فیلد مرتبط با تصویر به نامهای photo
و photos
دارد که فیلد اول تنها یک آیدی و فیلد دوم لیستی از آیدیها (که آلبوم محصول را تشکیل میدهند) را میپذیرد. توصیه میشود آیدیای که به فیلد photo
پاس میدهید را نیز اولین آیدی فیلد photos
قرار دهید.
دریافت لیست محصولات
با استفاده از اندپوینت /vendors/{vendor_id}/products
برای دریافت فهرست محصولات یک غرفه ریکوئست بزنید:
cURL
curl -X GET https://core.basalam.com/v3/vendors/{vendor_id}/products \
-H 'Accept: application/json' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
نمونه پاسخ دریافتی
{
"data": [
{
"id": 24018670,
"title": "تیشرت پسرانه تابستانی",
"price": 100000,
"photo": {
"id": 236016433,
"original": "...",
"xs": "...",
"sm": "...",
"md": "...",
"lg": "..."
},
"status": {
"name": "در دسترس",
"value": 2976,
},
"inventory": 10,
"is_wholesale": false
}
],
...,
"total_count": 5319,
"result_count": 10,
"total_page": 532,
"page": 1,
"per_page": 10
}
خطاهای رایج و رفع مشکل
در اینجا برخی از خطاهای رایج که ممکن است با آنها مواجه شوید و نحوه حل آنها آمده است:
خطا | توضیح | راه حل |
---|---|---|
invalid_client | مشخصات کلاینت نادرست است | شناسه و رمز کلاینت را بررسی کنید |
redirect_uri_mismatch | آدرس بازگشت اشتباه است | باید دقیقاً با آدرس ثبتشده مطابقت داشته باشد |
invalid_grant | کد تأیید اشتباه یا منقضی است | فرآیند ورود کاربر را تکرار کنید |
invalid_scope | دسترسی درخواستی نامعتبر است | مستندات را برای دسترسیهای معتبر بررسی کنید |
401 Unauthorized | توکن نامعتبر یا منقضی شده است | یک توکن جدید دریافت کنید |
گامهای بعدی
اما این فقط شروع ماجراست! برای ادامه مسیر، پیشنهاد میکنیم موارد زیر را بررسی کنید:
-
استفاده از SDK (توصیه اکید): به جای فراخوانی مستقیم API، استفاده از SDK باسلام را قویاً توصیه میکنیم.
-
سرویسهای دیگر را مرور کنید: شامل مجموعهای از سرویسهای متنوع است. برای آشنایی با عملکرد هرکدام، سری به مستندات کامل API بزنید.
-
وبهوکها را راهاندازی کنید: اگر میخواهید هنگام وقوع رویدادها، مثل ثبت سفارش یا تغییر موجودی، بهصورت خودکار نوتیفیکیشن دریافت کنید، حتماً بخش مربوط به وبهوکها در مستندات را بخوانید.
مستندات توسعهدهندگان همیشه در دسترس شماست تا هر زمان که نیاز داشتید، به جزئیات دقیقتری دست پیدا کنید و تجربه توسعه سریعتری داشته باشید.