چطور این جاسازی کار میکند؟
۱. یک تگ اسکریپت
سایت شما فقط یک فایل جاوااسکریپت را بارگذاری میکند. هیچ ابزار build، هیچ پکیج npm، هیچ React لازم نیست.
۲. یک تگ HTML
با سه ویژگی (mode، api-base،
allowed-origins) مشخص میکنید چه چیزی و کجا بالا بیاید.
۳. یک دستدادن امن
مرورگر شما توکن را با پیام امن به پنل میدهد. توکن هیچوقت در آدرس صفحه یا تاریخچه مرورگر ذخیره نمیشود.
نمونهی کد کامل
<script src="https://cdn.finoticket.ir/fino-console.js"></script>
<fino-console
mode="agent"
api-base="https://api.finoticket.ir"
allowed-origins="https://shop-aftab.ir"
locale="fa"
primary-color="#f59e0b"
></fino-console>
<script>
// ۱. به پنل بگویید که آمادهایم
const console = document.querySelector('fino-console');
window.addEventListener('message', async (e) => {
if (e.origin !== 'https://api.finoticket.ir') return;
// ۲. پنل میگوید «توکن میخواهم»
if (e.data.type === 'fino:auth-required') {
// ۳. توکن را از بکاند خودتان بگیرید (سکرت را در مرورگر نگه ندارید)
const res = await fetch('/api/finoticket-token');
const { access_token, expires_in } = await res.json();
// ۴. توکن را به پنل بدهید
console.postMessage
? console.postMessage({ type: 'fino:init', token: access_token, expiresIn: expires_in },
'https://api.finoticket.ir')
: window.postMessage({ type: 'fino:init', token: access_token, expiresIn: expires_in },
'https://api.finoticket.ir');
}
// ۵. ارتفاع را خودکار تنظیم کنید تا اسکرول تودرتو نداشته باشید
if (e.data.type === 'fino:resize') {
console.style.height = e.data.height + 'px';
}
});
</script>
ویژگیهای پنل
mode
agent برای پنل کارشناس · widget برای ویجت مشتری
api-base
آدرسی که پنل با آن صحبت میکند.
allowed-origins
فهرست دامنههایی که اجازه دارند به پنل پیام بدهند، جدا شده با کاما.
primary-color
رنگ اصلی برند شما. بقیهی رنگها خودشان هماهنگ میشوند.
locale
fa یا en — جهت متن هم خودکار تغییر میکند.
theme
light یا dark.
پیامهایی که میتوانید بشنوید
fino:ready
پنل بالا آمد و آمادهی دریافت پیام است.
fino:auth-required
پنل توکن ندارد. حالا باید fino:init بفرستید.
fino:resize
ارتفاع جدید پنل — آن را روی المان اعمال کنید.
fino:toast
پیامی که بهتر است در سایت خودتان نشان دهید.
fino:navigate
کاربر داخل پنل جابهجا شد.
fino:error
خطای جدی — مثلاً دامنهی غیرمجاز.
سوالات متداول
آیا استایل سایت من پنل را خراب میکند؟
نه. پنل داخل یک Shadow DOM جدا اجرا میشود. این سایت عمداً استایلهای تهاجمی دارد و پنل سالم میماند.
سکرت را کجا نگه دارم؟
هرگز در مرورگر. سکرت باید روی سرور شما باشد؛ مرورگر فقط توکن کوتاهعمر را میگیرد.
چند وقت یکبار توکن را عوض کنم؟
هر بار که کاربر صفحه را باز میکند. توکنها کوتاهعمر هستند و بهصورت خودکار منقضی میشوند.