راهنمای فروشگاهها
- آموزش کار با پنل
- ثبت نام
- ساخت سرویس
- چگونه اطلاعات را به درستی وارد کنیم؟
- فروشگاهها
- بنر
- کمیسیون
- کدهای تخفیف
- بازایابان
- کانورژن
- مالی
- توسعهدهندگان
آموزش کار با پنل
در این بخش به بررسی پنل و آموزش استفاده از آن خواهیم پرداخت.
ثبت نام
چگونه در افیلی ثبت نام کنیم؟
برای ثبت نام در پلتفرم همکاری در فروش افیلی پس از ورود به سایت با کلیک روی دکمهی همین حالا عضو شوید وارد صفحهی ثبت نام خواهیم شد.
در این صفحه بخشهای مربوطه را پر کرده و روی دکمهی ایجاد حساب کلیک میکنیم تا وارد پنل مدیریت حساب افیلی شویم.
پس از ورود به پنل، وارد بخش تغییر شمارهی موبایل شده و روی ارسال کد تایید کلیک میکنیم، تا کد تایید برای ما ارسال شود.
کد ارسال شده را در قسمت کد تایید، وارد کرده و روی بررسی کلیک میکنیم
تا شمارهی موبایل تایید شود.
سپس روی تایید آدرس ایمیل کلیک میکنیم و روی دکمهی ارسال ایمیل کلیک کرده
تا ایمیل تایید برای ما ارسال شود.
ساخت سرویس
چگونه سرویس بسازیم؟
برای استفاده از خدمات افیلی نیازمنده ساخت سرویس هستیم، هر سرویس برنامهای است که توسط افیلی جهت ارائهی خدمتی خاص طراحی شده. درحال حاضر در افیلی دو سرویس فروشگاه و ناشر برای استفاده از خدمات شبکهی همکاری در فروش افیلی موجود است.
برای ایجاد یک سرویس از بخش سرویسهای من روی دکمهی سرویس جدید کلیک میکنیم.
در صفحهی باز شده در ابتدا یک نام برای سرویس خود مینویسیم بعد از نوشتن نام سرویس روی دکمهی بعدی کلیک کرده و به مرحلهی بعد میرویم.
در صفحهی باز شده یکی از دو سرویس فروشگاه یا ناشر را با کلیک روی دکمهی انتخاب کنید، انتخاب کرده سپس دکمهی بعدی را میزنیم.
در این صفحه تنظیمات مربوطه را بررسی کرده و در صورت اطمینان از صحیح بودن تمامی مراحل روی دکمهی ایجاد سرویس کلیک میکنیم تا سرویس مورد نظر ساخته شود.
ما میتوانیم به صورت همزمان از چندین سرویس استفاده کنیم. برای اینکه سرویس دیگری بسازیم روی دکمهی سرویس جدید کلیک کرده
و همانند سرویس قبلی تمامی مراحل را طی میکنیم.
برای اینکه بتوانیم از سرویس ساخته شد استفاده کنیم روی دکمهی ورود به سرویس کلیک کرده تا وارد محیط سرویس مورد نظر شویم.
چگونه اطلاعات را به درستی وارد کنیم؟
چگونه اطلاعات را به درستی وارد کنیم؟
برای شروع فعالیت و استفاده از خدمات افیلی در ابتدا لازم است مراحل راه اندازی را تکمیل کرده تا دسترسی به پنل اصلی برای ما باز شود. در این آموزش قصد داریم هر یک از این مراحل را باهم بررسی کنیم.
پس از کلیک روی دکمهی ورود به سرویس وارد مرحلهی ثبت اطلاعات شخصی خواهیم شد. در این صفحه میتوانیم به عنوان شخص حقیقی یا کاربر حقوقی با افیلی همکاری کنیم.
در ادامهی آموزش ما شخص حقیقی را انتخاب کرده و اطلاعات مربوطه را پر میکنیم، دقت داشته باشیم که پس از آپلود صفحهی اول شناسنامه و کارت ملی خودمان باید منتظر بمانیم تا تصاویر بارگذاری شده به ما نشان داده شود.
در صورتی که نوع حساب ما کابر حقوقی باشد، لازم است اطلاعات مربوط به شرکت را در این قسمت قرار دهیم. برای این کار باید نام شرکت، شمارهی ثبت، شناسهی زملی و د اقتصادی به همراه نام و نامخانواگی رابط(فردی که رابط بین افیلی و شرکت است) به علاوهی بقیهی اطلاعات وارد کنیم. پس از آن دکمهی مرحلهی بعد فعال شده شده و ما میتوانیم وارد مرحلهی بعد شویم.
در این مرحله باید اطلاعات مربوط به شرکت را وارد کنیم برای این کار در بخش اول باید آدرس وبسایت را با //:https وارد کرده و نام فروشگاه خود را قرار دهیم.
در ادامه دسته بندی فروشگاه را انتخاب کنیم و در قسمت توضیحات، توضیح کوتاه از فروشگاه خود یادداشت کنیم (این یادداشت متنی است که به بازاریابان نمایش داده میشود).
در قسمت بعدی دوره کوکی را مشخص کنیم که این دوره مدت زمانی است که ما به عنوان فروشگاه برای بازاریابان مشخص میکنیم، برای تعیین اینکه چه مدت زمان از آخرین کلیک مشتری روی لینک بازاریاب گذشته باشد تا منجر به خرید شود، به بازاریابان کمیسیون پرداخت خواهیم کرد که حداقل مدت زمان برای این دوره سی روز است.
در بخش مربوط به دورهی مرجوعی مدت زمانی که ما روی محصولات خود در فروشگاه قرار دادیم به عنوان دورهی مرجوعی کالا در این قسمت قرار دهیم تا اگر خریدی که توسط یک بازاریاب انجام شده مرجوع شد ما تا پایان رسیدن این دوره وضعیت خرید را از پنل تغییر داده و خرید را مردود کنیم.
در بخش آخر لوگوی فروشگاه خود را قرار داده تا به وسیلهی این لوگو به بازاریابها نمایش داده شویم.
سپس روی دکمهی مرحلهی بعد کلیک کنیم تا وارد مرحلهی بعدی شویم.
در این مرحله ما میتوانیم به ازای فروش یا لید کمیسیون پرداخت کنیم. پرداخت کمیسیون از طریق فروش به دو صورت درصدی و مقداری قابل انجام است. در پرداخت کمیسیون از نوع درصدی، درصد کمیسیون را به صورت پیش فرض قرار داده و در پرداخت کمیسیون از نوع مقداری یک مبلغ ثابت را برای فروش محصولات یا خدمات خود تعیین می کنیم. در پرداخت از نوع لید که در ازای پر کردن فرم، عضویت در خبرنامه، عضویت در اشتراک آزمایشی و... میتوانیم مبلغی را به عنوان کمیسیون در نظر بگیریم. پس از تکمیل دکمهی مرحلهی بعد را زده.
در این مرحله با توجه به حقیقی یا حقوقی بودن حساب خود فایل قرارداد را دانلود کرده
و پس از تکمیل قرارداد فایل قرارداد را در این قسمت آپلود کنیم. سپس به مرحلهی بعد میرویم.
ما برای فعالیت در افیلی میبایست افزونه یا اسکریپت مربوط به افیلی را در وبسایت خود داشته باشیم. اگر سیستم مدیریت محتوای وبسایت ما از نوع وردپرس یا پرستاشاپ باشد تنها کافی است افزونه را نصب کرده و اکانت آیدی خود را از قسمت بالای صفحه دریافت کنیم.
در غیر این صورت اگر سیستمهای مدیریت محتوای دیگری استفاده میکنیم یا وبسایت ما به صورت اختصاصی است باید با دریافت مستندات پیاده سازی کار پیاده سازی کد اسکریپت را انجام دهیم.
همچنین میتوانیم درخواست پیاده سازی توسط تیم افیلی را انتخاب کرده تا پیاده سازی از سمت افیلی صورت بگیرد که این کار مشمول پرداخت هزینه میشود.
در بخش پایانی بعد از نصب افزونه یا پیاده سازی اسکریپت روی انجام خرید تست کلیک کرده وارد سایت خود شده و یک خرید تستی انجام دهیم و بعد از انجام خرید وارد قسمت قبل شده و روی بررسی خرید کلیک کنیم.
در صورتی که اطلاعات نمایش داده شده با اطلاعات خرید تستی مطابقت داشته باشد یعنی افزونه یا اسکریپت به درستی عمل میکند. سپس به مرحله بعد میرویم.
در این مرحله ما برای فعال شدن پنل خود باید مبلغی را به عنوان شارژ کیف پول پرداخت کنیم(توجه داشته باشیم که این مبلغ به عنوان پیش دریافت و برای تسویه حساب خریدهای انجام شده توسط بازاریابان از ما دریافت میشود که حداقل مبلغ برای شارژ کیف پول افیلی پانصد هزار تومان میباشد.
بعد از انجام تمامی این مراحل ما در حال منتظر تایید قرار گرفته و حداکثر تا دو روز کاری اطلاعات حساب ما بررسی و نتیجه به ما اطلاع داده خواهد شد.
فروشگاهها
فروشگاهها
از ساید بار سمت راست با کلیک روی فروشگاهها میتوانیم فروشگاهی که ثبت کردیم را مشاهده کنیم.
در مرحله ثبت اطلاعات فروشگاه
در این مرحله باید اطلاعات مربوط به شرکت را وارد کنیم برای این کار در بخش اول باید آدرس وبسایت را با //:https وارد کرده و نام فروشگاه خود را قرار دهیم.
در ادامه دسته بندی فروشگاه را انتخاب کنیم و در قسمت توضیحات، توضیح کوتاه از فروشگاه خود یادداشت کنیم (این یادداشت متنی است که به بازاریابان نمایش داده میشود).
در قسمت بعدی دوره کوکی را مشخص کنیم که این دوره مدت زمانی است که ما به عنوان فروشگاه برای بازاریابان مشخص میکنیم، برای تعیین اینکه چه مدت زمان از آخرین کلیک مشتری روی لینک بازاریاب گذشته باشد تا منجر به خرید شود، به بازاریابان کمیسیون پرداخت خواهیم کرد که حداقل مدت زمان برای این دوره سی روز است.
در بخش مربوط به دورهی مرجوعی مدت زمانی که ما روی محصولات خود در فروشگاه قرار دادیم به عنوان دورهی مرجوعی کالا در این قسمت قرار دهیم تا اگر خریدی که توسط یک بازاریاب انجام شده مرجوع شد ما تا پایان رسیدن این دوره وضعیت خرید را از پنل تغییر داده و خرید را مردود کنیم.
در بخش آخر لوگوی فروشگاه خود را قرار داده تا به وسیلهی این لوگو به بازاریابها نمایش داده شویم.
بنر
بنر
از ساید بار سمت راست روی بنرها کلیک میکنیم.
در این قسمت میتوانیم بنرهایی را از نوع عکس یا گیفت قرار داده تا مورد استفاده بازاریابان قرار گیرد.
برای این کار روی دکمهی ایجاد کلیک کرده،
در قسمت عنوان نام بنر و در بخش آدرس مقصد نشانی صفحهای از سایت را که میخواهیم کاربر با کلیک روی آن به آن صفحه منتقل شود قرار میدهیم. سپس فروشگاه خود را انتخاب کرده و در بخش آخر بنر خود را در یکی از ابعاد زیر قرار میدهیم:
-
وبسایت
72*90
375*120
300*100
600*300
200*90
-
استوری اینستاگرام
1920*1080
-
پست اینستاگرام
1000*1000
-
پست تلگرام
1080*1080
و بعد از آن دکمهی ارسال را میزنیم.
سپس بنرها توسط تیم افیلی مورد بررسی قرار گرفته و حداکثر تا 24 ساعت تایید یا رد میشود.
کمیسیون
از ساید بار سمت راست با کلیک روی کمیسیون میتوانید پلنهای متنوع کمیسیونی را مشاهده کنید.
-
در کمیسیون پیش فرض درصد کمیسیونی که به صورت کلی مشخص کردیم مشاهده میکنیم. در این مرحله ما میتوانیم به ازای فروش یا لید کمیسیون پرداخت کنیم. پرداخت کمیسیون از طریق فروش به دو صورت درصدی و مقداری قابل انجام است. در پرداخت کمیسیون از نوع درصدی، درصد کمیسیون را به صورت پیش فرض قرار داده و در پرداخت کمیسیون از نوع مقداری یک مبلغ ثابت را برای فروش محصولات یا خدمات خود تعیین می کنیم. در پرداخت از نوع لید که در ازای پر کردن فرم، عضویت در خبرنامه، عضویت در اشتراک آزمایشی و... میتوانیم مبلغی را به عنوان کمیسیون در نظر بگیریم.
-
در قسمت گروه کمیسیونی میتوانیم گروه یا گروههایی را ایجاد کرده و بازاریابان خود را در آن قرار دهیم و برای هر گروه درصد کمیسیون دلخواهی را تعیین کنیم.
-
در قسمت کمیسیون اختصاصی میتوانیم کمیسیون خاصی را برای یک بازاریاب اختصاص دهیم که در ادامه در قسمت قوانین اختصاصی کمیسیون به آن خواهیم پرداخت.
-
در بخش مربوط به کمیسیون پلکانی میتوانیم با توجه به مبلغ سبد خرید، تعداد فروشهای ماه گذشته یا ماه جاری، کل فروشهای خالص یک بازاریاب و… درصد کمیسیونهای مختلفی را در نظر بگیریم، به عنوان مثال اگر امکان تعریف کمیسیون پلکانی از طریق سبد خرید را داریم مبنای محاسبات را روی مبلغ سبد خرید قرار داده و کمیسیون پلهای خود را تعیین کنیم.
-
همچنین میتوانیم برای فعال سازی کمیسیون روی دستهای از محصولات یا یک محصول خاص به افیلی درخواست دهیم.
-
در بخش مربوط به قوانین عمومی کمیسیون میتوانیم قوانینی برای بازاریابهای درحال همکاری با خود تعیین کنیم. که به چند نمونه از آن در ادامه اشاره خواهیم کرد. برای مثال میخواهیم برای بازاریابان خود در فصل زمستان 5درصد پورسانت بیشتر در نظر بگیریم:
برای این کار روی دکمهی ایجاد میزنیم. در قسمت اول نام قانون را به دلخواه وارد میکنیم و نوع این قانون را "افزایش به صورت درصد" قرار میدهیم و عدد پنج را در مقدار میگذاریم. در قسمت انتهایی توضیحی برای بازاریابان در مورد این قانون مینویسیم.
بعد از انجام این کار لازم است شرطی برای این قانون مشخص کنیم بنابراین روی دکمهی شرط جدید کلیک کرده.
در مدال باز شده باید توجه داشته باشیم نوع کانورژن در تمامی قوانین باید مشخص باشد، بنابراین نوع کانورژن را مشخص کرده و دکمهی ارسال را میزنیم.
در ادامه با توجه به اینکه میخواهیم این قانون برای کانورژنهای ایجاد شده در فصل زمستان باشد رو شرط جدید کلیک میکنیم.
و در مدال باز شده "تاریخ کانورژن" را انتخاب می کنیم.
در مدال باز شده تاریخ ایجاد کانوژن باید "بین" ابتدای زمستان تا انتهای زمستان باشد.
-
در بخش پایانی، قوانین اختصاصی کمیسیون را میتوانیم برای یک بازاریاب تعریف کنیم. مثلا پورسانتی متفاوت برای یک بازاریاب خاص.
*توجه داشته باشیم ترتیب اولویت قوانین کمیسیون افیلی از آخرین قانون به اولین قانون است*
کدهای تخفیف
کدهای تخفیف
از ساید بار سمت راست روی کدهای تخفیف کلیک کرده.
وارد صفحهی کدهای تخفیف میشویم.
دکمهی ایجاد را کلیک میکنیم.
میتوانیم به دو روش کد تخفیف تعریف کنیم:
-
کد تخفیف عمومی، که این کد تخفیف به همهی بازاریابانی که با ما همکاری میکنند نمایش داده میشود.
-
کد تخفیف اختصاصی، که ما میتوانیم برای یک یا چند بازاریاب خاص تعریف کنیم.
بعد از انتخاب هر کدام از این موارد وارد صفحهی نمایش داده شده میشویم و عنوانی دلخواه برای کد تخفیف مشخص میکنیم در ادامه نوع کد تخفیف خود را به صورت درصدی یا مقداری مشخص میکنیم سپس مقدار تخفیف به همراه سقف تخفیف و کد تخفیف خود را قرار میدهیم. در بخش بعدی تاریخ اعتبار کد را مشخص میکنیم و در انتها توضیحی کوتاه در خصوص این کد مینویسیم که به بازاریابان نمایش داده شود.
توجه داشته باشیم که ما در قسمت مربوط به کد تخفیف اختصاصی میبایست از بین بازاریابان در حال همکاری با خود یک یا چند بازاریاب را انتخاب کنیم.
بازایابان
بازاریابان
از ساید بار سمت راست با کلیک روی بازاریابان میتوانید این قسمت را مشاهده کنید.
در قسمت بازاریابان شما میتوانید اطلاعات مربوط به هر بازاریاب را از جمله رسانهی بازاریاب، تعداد کلیکهای بازاریاب، کمیسیون دریافتی، فروش ناخالص و EPC را مشاهده کنید.
*EPC: نشاندهندهی کل پورسانت پرداختی شما تقسیم بر کل کلیکهای است که بازاریاب تا به حال داشته و هر چقدر این عدد بالاتر باشد نشاندهندهی نرخ تبدیل بیشتر بازاریاب است.
همچنین با کلیک بر روی بازاریاب میتوانید پروفایل بازاریاب را مشاهده کنید
کانورژن
کانورژن
از ساید بار سمت راست روی کانورژن کلیک میکنیم.
در این قسمت میتوانیم خریدهای صورت گرفته را به تفکیک مقدار سبد خرید، مقدار کمیسیون، کارمزد افیلی و نام بازاریاب مشاهده کنیم. همچنین وضعیت هر کدام از این کانورژنها به همراه تاریخ ایجاد را ببینیم. با توجه به توضیح داده شده برای دورهی مرجوعی پس از تاریخ ایجاد کانورژن ما تا به پایان رسیدن دورهی مرجوعی فرصت داریم تا اگر خریدی توسط مشتری مرجوع شد وضعیت را از قسمت عملیات تغییر دهیم در غیر این صورت کانورژن به صورت خودکار در وضعیت تایید شدهی قطعی قرار میگیرد.
همچنین میتوانیم از قسمت عملیاتها در صورتی که اطلاعات محصولات را برای افیلی ارسال کرده باشیم میتوانیم سبد خرید هر کدام از محصولات را مشاهده کنیم.
مالی
مالی
در ساید بار سمت را با کلیک روی مالی دو آیتم را میتوانیم مشاهده کنیم.
-
گردش حساب
-
افزایش اعتبار
ما در گردش حساب گزارش مبالغ کسر شده از کیف پول به ازای کمیسیون و کارمزد افیلی را مشاهده میکنیم.
و در قسمت افزایش اعتبار می توانیم مبلغ کیف پول خود را افزایش دهیم.
توسعهدهندگان
در این بخش روشهای مختلف پیادهسازی و استفاده از سرویسهای ارائه شده به فروشگاهها، توضیح داده خواهد شد.
اسکریپت ردیابی
در صورتی که تیم فنی شما امکان پیادهسازی سرویسها را ندارد یا تمایلی به پیادهسازی API ندارید میتوانید برای ردیابی خریدهای انجام شده از اسکریپت ردیابی افیلی استفاده کنید.
ردیابی لینکها:
قطعه کد زیر را در تگ هد همه صفحات سایت خود قرار دهید.
<script async src="https://analytics.affili.ir/scripts/affili-v2.js"></script>
<script>
window.affiliData = window.affiliData || [];function affili(){affiliData.push(arguments);}
affili('create');
</script>
ثبت مشتری:
در صورتی که ارائه دهنده سرویس SaaS هستید یا مشتری در ازای پرداخت حق عضویت از خدمات شما استفاده میکند و میخواهید در طول یک مدت زمان خاص یا برای تکرار خرید به بازاریاب پورسانت پرداخت کنید. نیاز است بعد از ثبتنام مشتری در سیستم شما از طریق قطعه کدی که در ادامه میآوریم، یک مشتری ایجاد کنید.
<script>
affili('customer', customerId, metaData, function (affiliCustomerId) {
// Save affiliCustomerId in your DB
});
</script>
پس از اینکه مشتری در افیلی تعریف ثبت شد شناسه مشتری در افیلی توسط تابع callback بازگردانده میشود. شما باید این مقدار را در دیتابیس خود ذخیره کنید. در قطعه کد بالا متغیرهای customerId و metaData باید با مقادیر صحیح توسط شما پر شوند که توضیح هر کدام را در ادامه میدهیم.
customerId:
شناسه یکتای مشتری در سیستم شماست.
metaData:
آبجکتی حاوی اطلاعات اضافه راجع به مشتری است. ارسال این پارامتر اختیاری است.
تذکر: در صورتی که مشتری از سمت افیلی نباشد، دیتایی سمت افیلی ذخیره نشده و تابع callback نیز فراخوانی نمیشود.
ثبت فروش:
برای ثبت فروشهای انجام شده در thank you page قطعه کد زیر را قرار دهید.
<script async src="https://analytics.affili.ir/scripts/affili-v2.js"></script>
<script>
window.affiliData = window.affiliData || [];function affili(){affiliData.push(arguments);}
affili('create');
affili('sale', uniqueSaleId, saleAmount, {
coupon: couponCode,
products: products,
customer_id: affiliCustomerId
});
</script>
دقت داشته باشید در کد بالا متغیرهای uniqueSaleId ،saleAmount ،couponCode ،products و affiliCustomerId باید توسط شما با مقادیر صحیح پر شود؛ که توضیح هر کدام در زیر آمده است.
uniqueSaleId:
یک شناسه یکتاست که باید در سیستم خود برای هر فروش ایجاد کنید. شما باید این متغیر را با یک تگ یا متغیر واقعی جایگزین کنید تا مقدار مربوطه را در هر فروش به صورت خودکار مقداردهی کند. شناسه یکتا میتواند هر چیزی که برای شما معنادار است باشد و باید برای هر فروش نیز منحصربفرد باشد. به طور مثال: شماره سفارش، شماره تراکنش و ... پس از ثبت فروش میتوانید این شناسه را در پنل افیلی بخش کانورژنها مشاهده کنید. این امر باعث میشود که مدیریت دادههای موجود در افیلی و سیستم شما آسانتر شود.
saleAmount:
مبلغ کل فروش یا همان مبلغ پرداختی کاربر بابت خرید است. دقت داشته باشید مبلغ مربوط به کرایه حمل و نقل و مالیات نباید لحاظ شده باشد.
couponCode:
در صورتی که مشتری هنگام خرید از کد تخفیف استفاده کرده باشد کد تخفیف مربوطه را باید وارد کنید در غیر اینصورت با مقدار null پر شود.
products:
آرایهای از محصولاتی است که توسط مشتری خریداری شده، که به صورت زیر پر میشود.
products = [
{
"name": "محصول نمونه",
"unit_price": 12000,
"quantity": 3,
"total_price": 36000
},
{
"name": "محصول نمونه شماره دو",
"unit_price": 43000,
"quantity": 1,
"total_price": 43000
}
]
affiliCusomerId:
شناسه یکتای مشتری در افیلی است. ارسال این پارامتر اختیاری است.
واحد پولی:
به صورت پیشفرض واحد پولی فروشگاهها در افیلی ریال است در صورتی که از واحد پولی تومان استفاده میکنید به پشتیبانی فروشگاهها اطلاع دهید تا واحد پولی شما تغییر کند.
ثبت لید:
برای ثبت لید هنگامی که اقدام مورد نظر رخ داد، قطعه کد زیر را فراخوانی کنید.
<script>
affili('lead', {
meta_data: {
form_id: "فرم صفحه لندیگ",
first_name: "علی",
last_name: "رمضانی",
mobile: "09123456789",
email: "test@exmpl.com",
}
});
</script>
پارامتر form_id در متا دیتا برای هر فرم باید مقدار یکتایی داشته باشد. و ارسال آن الزامی است. این مقدار میتواند از نوع عدد یا یک رشته باشد. همچنین برای فرمهای لید همانند بالا میتوانید سایر دادههای فرم را در متغیر متا دیتا برای ما ارسال کنید. ارسال این اطلاعات برای تطبیق و جلوگیری از تقلب ناشران الزامی است.
سرویس کانورژن
برای ردیابی و مدیرت کانورژنها و علاوه بر پیادهسازی اسکریپت میتوانید از طریق APIهای سرویس کانورژن، اقدام به پیادهسازی سرویس همکاری در فروش نمایید. در ادامه به بررسی APIهای این سرویس و نحوه استفاده از آنها خواهیم پرداخت.
تعاریف
لینک افیلیت
به لینک کوتاه شدهای که توسط بازاریاب در افیلی ساخته میشود و مشتری پس از کلیک روی آن به وبسایت شما ارجاع داده میشود لینک افیلیت میگویند. هر لینک افیلیت پس از ارجاع به وبسایت فروشگاه شامل پارامترهای زیر خواهد بود.
- referrer: توکنی است که در هر بار ارجاع، به لینک ارجاع اختصاص داده میشود. این توکن مقدار یکتایی دارد و برای صحت سنجی کلیکها مورد استفاده قرار میگیرید.
- exp: تعداد روزهای اعتبار کوکی در مرورگر کاربر است.
-
dl: این پارامتر مشخص کننده تعداد دفعات مجاز ثبت کانورژن برای بازاریاب ارجاعدهنده خواهد بود. به عبارت دیگر این مقدار به ما میگوید تا چند بار در صورت خرید مشتری به بازاریاب پورسانت تعلق خواهد گرفت.
نکته: مقدار 1- به معنای نامحدود است. و در صورت اعمال تا زمان معتبر بودن کوکی در صورت خرید مشتری به بازاریاب پورسانت تعلق میگیرد.
کانورژن
به هر اقدامی که فروشگاه در ازای آن به بازاریاب پورسانت پرداخت میکند کانورژن میگویند. افیلی دو نوع کانورژن فروش و لید را پشتیبانی میکند.
دوره کوکی
مدت زمانی است که لینک افیلیت معتبر بوده و در صورت تحقق کانورژن در این بازه زمانی به بازاریاب پورسانت تعلق خواهد گرفت.
دوره مرجوعی
مدت زمانی است که پس از ایجاد کانورژن امکان ویرایش آن وجود دارد. پس از این مدت زمان کانورژن لاک شده و در اولین سیکل بررسی کانورژنهای لاک شده، پورسانت آن از حساب فروشگاه کسر و به بازاریاب پرداخت خواهد شد.
پیشنیازها
برای استفاده از سرویسهای تعریف شده، نیاز به ارسال Bearer توکن است. از طریق ارتباط با پشتیبانی میتوانید توکن دسترسی را دریافت کنید.
آدرس پایه ارسال درخواستها
https://core.affili.ir/services/conversions
API کانورژنها
طبق توضیحات داده شده در جدول زیر، از سه API تعریف شده میتوانید برای ایجاد، ویرایش و دریافت کانورژنها استفاده کنید.
نوع عملیات | نوع درخواست | توضیحات | uri |
ایجاد | POST | ایجاد کانورژن جدید | / |
ویرایش | POST | ویرایش کانورژن ایجاد شده؛ conversionId شناسه کانورژن ایجاد شده در افیلی است. | /{conversionId} |
لیست | GET | دریافت لیست کانورژنهای ثبت شده | / |
ایجاد کانورژن
بعد از اینکه مشتری از طریق لینک افیلیت وارد وبسایت شما شد پارامترهای referrer و dl را به مدت زمان طول دوره کوکی (مقدار پارامتر exp)، در کوکی مرورگر کاربر ذخیره میکنیم.
بعد از تحقق کانورژن (به طور مثال انجام خرید توسط مشتری) از طریق API ایجاد کانورژن، اطلاعات مربوطه به افیلی ارسال میشود. در ادامه به بررسی نمونه دیتای ارسالی و دریافتی در ایجاد کانورژنهای فروش و لید خواهیم پرداخت.
تذکر: در صورتی که از قبل مشتری را تعریف کرده باشید و در API کانورژن شناسه مشتری را ارسال کنید نیازی به ارسال referrer نیست.
آدرس ارسال درخواست
POST https://core.affili.ir/services/conversions
قالب درخواست ایجاد کانورژن
{
"referrer": string,
"order_id": string,
"amount": double,
"type": string,
"products": [
object (Product),
...
],
"is_first_order": boolean,
"meta_data": object (MetaData),
"coupon": string,
"customer_id": string,
}
پارامترها
نام | اجباری | توضیحات |
referrer | بلی |
String توکن ارجاع که قبلا در مرورگر کاربر ذخیر شده. ارسال این پارامتر زمانی که customer_id ارسال میشود، اختیاری است. |
type | بلی |
String نوع کانورژن که میتواند یکی از مقادیر "sale" یا "lead" باشد. |
order_id | بلی |
String شمارهی سفارش انجام شده |
amount | بلی |
Double مبلغ کل سبد خرید |
products | خیر |
لیست محصولات خریداری شده توسط مشتری؛ این پارامتر در کانورژنهایی با نوع فروش(sale) ارسال میشود. |
coupon | خیر |
String کد تخفیف استفاده شده در خرید |
is_first_order | خیر |
Boolean پارامتر مشخصکننده اولین خرید |
meta_data | بلی |
آبجکت حاوی اطلاعات لید ثبت شده؛ این پارامتر در کانورژنهایی با نوع لید(lead) ارسال میشود. |
customer_id | خیر |
String شناسه یکتای مشتری در افیلی |
قالب پاسخ ایجاد کانورژن
{
"status": "ok",
"tag": "saveConversion",
"api_version": "1.0.0",
"data": {
"id": string,
"publisher": object (Publisher),
"status": integer,
"type": string,
"is_closed": integer,
"checked_out": integer,
"checked_out_at": dateTime,
"order_id": string,
"amount": double,
"commission_amount": double,
"wage": double,
"products": [
object (Product),
...
],
"is_first_order": boolean,
"meta_data": object (MetaData)
"created_at": dateTime,
"updated_at": dateTime,
"currency": string,
"customer_id": string,
}
}
پارامترها
نام | توضیحات |
id |
String شناسه یکتای کانورژن ایجاد شده در افیلی |
publisher |
آبجکت مربوط به اطلاعات بازاریاب. |
status |
وضعیت کانورژن که میتواند یکی از اعداد ۰(در انتظار تایید توسط سیستم)، ۱(تایید شده)، ۲(رد شده)، ۳(تکراری) یا ۴(نیازمند بررسی دستی) باشد. |
type |
String نوع کانورژن که میتواند sale یا lead باشد. |
is_closed |
Integer وضعیت لاک کانورژن را نشان میدهد و در صورتی که مقدار آن ۱ باشد امکان ویرایش کانورژن وجود نخواهد داشت. |
checked_out |
Integer وضعیت تسویه با بازاریاب را نشان میدهد |
checked_out_at |
DateTime تاریخ تسویه پورسانت با بازاریاب |
amount |
Double مبلغ سبد خرید؛ این پارامتر تنها در صورتی که کانورژن از نوع فروش(sale) باشد نمایش داده میشود. |
commission_amount |
Double مبلغ پورسانت |
wage |
Double کارمزد افیلی |
order_id |
String شماره سفارش |
products |
لیست محصولات خریداری شده توسط مشتری؛ این پارامتر تنها در صورتی که کانورژن از نوع فروش(sale)، نمایش داده میشود. |
is_first_order |
Boolean پارامتر مشخصکننده اولین خرید |
meta_data |
آبجکت حاوی اطلاعات لید ایجاد شده؛ این پارامتر تنها در کانورژنهایی از نوع لید(lead) نمایش میشود. |
coupon |
String کد تخفیف استفاده شده در خرید؛ این پارامتر تنها در صورتی که کانورژن از نوع فروش(sale)، نمایش داده میشود. |
created_at |
DateTime تاریخ ایجاد |
updated_at |
DateTime تاریخ آخرین بروزرسانی |
currency |
String واحد پولی کانورژن ثبت شده که میتواند یکی از مقادیر IRT(تومان) یا IRR(ریال) باشد. |
customer_id |
String شناسه یکتای مشتری در افیلی |
درخواست نمونه برای ایجاد کانورژن از نوع فروش
{
"referrer": "63b01acf9bf8325c1a3a2325",
"order_id": "1234598",
"amount": "12000",
"type": "sale",
"products": [
{
"name": "محصول نمونه",
"unit_price": "12000",
"quantity": "3",
"total_price": "36000"
},
{
"name": "محصول نمونه شماره دو",
"unit_price": "43000",
"quantity": "1",
"total_price": "43000"
}
],
"is_first_order": false,
"coupon": null
}
پاسخ نمونه برای ایجاد کانورژن از نوع فروش
{
"status": "ok",
"tag": "saveConversion",
"api_version": "1.0.0",
"data": {
"id": "zbndn",
"publisher": {
"id": "gedyj",
"full_name": "نام بازاریاب"
},
"status": 0,
"type": "sale",
"is_closed": 0,
"checked_out": 0,
"checked_out_at": null,
"order_id": "1234598",
"amount": 12000,
"commission_amount": 408.8,
"wage": 81.76,
"products": [
{
"name": "محصول نمونه",
"unit_price": "12000",
"quantity": "3",
"total_price": "36000"
},
{
"name": "محصول نمونه شماره دو",
"unit_price": "43000",
"quantity": "1",
"total_price": "43000"
}
],
"is_first_order": false,
"created_at": "2022-12-31 19:27:32",
"updated_at": "2022-12-31 19:27:32",
"currency": "IRT",
"customer_id": null
}
}
درخواست نمونه برای ایجاد کانورژن از نوع لید
{
"referrer": "63abe5089bf8325c1a3a231a",
"type": "lead",
"meta_data": {
"form_id": "register-form",
"uniq_param": "09123456789",
"first_name": "First Name",
"last_name": "Last Name"
}
}
پاسخ نمونه برای ایجاد کانورژن از نوع لید
{
"status": "ok",
"tag": "saveConversion",
"api_version": "1.0.0",
"data": {
"id": "ydnak",
"publisher": {
"id": "gedyj",
"full_name": "نام بازاریاب"
},
"status": 1,
"type": "lead",
"is_closed": 0,
"checked_out": 0,
"checked_out_at": null,
"commission_amount": 2000,
"wage": 400,
"order_id": "7007e72b-10d8-540e-9b48-32c14a4f5f6d",
"created_at": "2022-12-31 19:36:20",
"updated_at": "2022-12-31 19:36:20",
"currency": "IRT",
"meta_data": {
"form_id": "register-form",
"uniq_param": "09123456789",
"first_name": "First Name",
"last_name": "Last Name"
},
"customer_id": null
}
}
ویرایش کانورژن
میتوانید تا قبل از پایان دوره مرجوعی و لاک شدن کانورژن، آن را ویرایش کنید. دقت داشته باشید که بعد از لاک شدن امکان اعمال تغییرات وجود نخواهد داشت.
آدرس ارسال درخواست
POST https://core.affili.ir/services/conversions/{conversionId}
*پارامتر conversionId در آدرس، شناسه کانورژن ثبت شده در افیلی است.
قالب درخواست ویرایش کانورژن
{
"order_id": string,
"amount": double,
"products": [
object (Product),
...
],
"is_first_order": boolean,
"meta_data": object (MetaData),
"coupon": string,
"status": integer,
"recalculate": integer
}
پارامترها
نام | توضیحات |
order_id |
String شمارهی سفارش انجام شده؛ این پارامتر در کانورژنهایی با نوع فروش(sale) ارسال میشود. |
amount |
Double مبلغ کل سبد خرید؛ این پارامتر در کانورژنهایی با نوع فروش(sale) ارسال میشود. |
products |
لیست محصولات خریداری شده توسط مشتری؛ این پارامتر در کانورژنهایی با نوع فروش(sale) ارسال میشود. |
is_first_order |
Boolean پارامتر مشخصکننده اولین خرید |
meta_data |
آبجکت حاوی اطلاعات لید ثبت شده؛ این پارامتر در کانورژنهایی با نوع لید(lead) ارسال میشود. |
coupon |
String کد تخفیف استفاده شده در خرید؛ این پارامتر در کانورژنهایی با نوع فروش(sale) ارسال میشود. |
status |
وضعیت کانورژن که میتواند یکی از اعداد ۱(تایید شده)، ۲(رد شده) یا ۴(نیازمند بررسی دستی) باشد. |
recalculate |
Boolean در صورت ویرایش پارامترهای تاثیرگذار در محاسبه پورسانت همانند مبلغ کل سبد خرید، محصولات خریداری شده و ... برای محاسبه مجدد پورسانت باید پارامتر recalculate برابر با مقدار یک یا true باشد. |
لیست کانورژنها
برای دریافت لیست کانورژنهای ثبت شده از API زیر استفاده کنید.
آدرس ارسال درخواست
GET https://core.affili.ir/services/conversions
قالب پارامترهای ارسالی برای اعمال فیلتر
{
"id": string,
"status" integer,
"type": string,
"external_id": string,
"is_closed": integer,
"checked_out" integer,
"min_commission_amount": double,
"max_commission_amount": double,
"min_created_at": dateTime,
"max_created_at": dateTime,
"min_updated_at": dateTime,
"max_updated_at": dateTime,
"min_amount": double,
"max_amount" double,
}
پارامترها
نام | توضیحات |
id |
String شناسه یکتای کانورژن در افیلی |
status |
وضعیت کانورژن که میتواند یکی از اعداد ۰(در انتظار تایید توسط سیستم)، ۱(تایید شده)، ۲(رد شده)، ۳(تکراری) یا ۴(نیازمند بررسی دستی) باشد. |
type |
String نوع کانورژن که میتواند sale یا lead باشد. |
order_id
|
String شماره سفارش |
is_closed |
Integer وضعیت لاک کانورژن را نشان میدهد و در صورتی که مقدار آن ۱ باشد امکان ویرایش کانورژن وجود نخواهد داشت. |
checked_out |
Integer وضعیت تسویه با بازاریاب را نشان میدهد |
min_commission_amount |
Double حداقل مبلغ پورسانت کانورژن؛ این پارامتر برای فیلتر کانورژنهایی با پورسانت بیشتر یا مساوی این مقدار استفاده میشود. |
max_commission_amount |
Double حداکثر مبلغ پورسانت کانورژن؛ این پارامتر برای فیلتر کانورژنهایی با پورسانت کمتر یا مساوی این مقدار استفاده میشود. |
min_created_at |
Double حداقل تاریخ ایجاد کانورژن؛ این پارامتر برای فیلتر کانورژنهایی با تاریخ ایجاد بیشتر یا مساوی این مقدار استفاده میشود. |
max_created_at |
Double حداکثر تاریخ ایجاد کانورژن؛ این پارامتر برای فیلتر کانورژنهایی با تاریخ ایجاد کمتر یا مساوی این مقدار استفاده میشود. |
min_updated_at |
Double حداقل تاریخ ایجاد کانورژن؛ این پارامتر برای فیلتر کانورژنهایی با تاریخ ویرایش بیشتر یا مساوی این مقدار استفاده میشود. |
max_updated_at |
Double حداکثر تاریخ ایجاد کانورژن؛ این پارامتر برای فیلتر کانورژنهایی با تاریخ ویرایش کمتر یا مساوی این مقدار استفاده میشود. |
min_amount |
Double حداقل مبلغ سبد خرید؛ این پارامتر برای فیلتر کانورژنهایی با مبلغ سبد خرید بیشتر یا مساوی این مقدار استفاده میشود. |
max_amount |
Double حداکثر تاریخ ایجاد کانورژن؛ این پارامتر برای فیلتر کانورژنهایی با مبلغ سبد خرید کمتر یا مساوی این مقدار استفاده میشود. |
موجودیتها
Product
قالب JSON
{
"name": string,
"unit_price": double,
"quantity": integer,
"total_price": double
}
پارامترها
name |
String نام محصول |
unit_price |
Double قیمت واحد محصول در سبد خرید |
quantity |
Integer تعداد محصول در سبد خرید |
total_price |
Double مجموع قیمت محصول در سبد خرید |
Meta Data
قالب JSON
"meta_data": {
"form_id": string,
"uniq_param": string,
// Any other fields can be added as extra data.
}
پارامترها
form_id |
String شناسه یکتای فرم مربوطه در وبسایت فروشگاه |
uniq_param |
String پارامتر یکتای لید ثبت شده که میتواند دادهای نظیر شماره موبایل، ایمیل، کد ملی یا هر مقدار یکتای دیگری در فرم باشد. |
Publisher
قالب JSON
{
"id": string,
"full_name": string
}
پارامترها
id | شناسه یکتای بازاریاب در افیلی |
full_name | نام بازاریاب |
ثابتها
وضعیت کانورژن
۰ | در انتظار تایید توسط سیستم |
۱ | تایید شده |
۲ | تکراری |
۳ | نیازمند بررسی دستی |
سرویس محصول
در صورتی که بخواهید لیست محصولات شما به بازاریابان نمایش داده شود یا برای دستهبندیها و محصولات مختلف پورسانتهای متفاوتی را از طریق پنل کاربری اعمال کنید؛ نیاز است که محصولات فروشگاه خود را درونریزی کنید. میتوانید از طریق پیادهسازی وب سرویس یا از طریق ست کردن وب هوک این کار را انجام دهید.
وب سرویس
پیشنیازها
برای استفاده، نیاز به ارسال Bearer توکن است. از طریق ارتباط با پشتیبانی میتوانید توکن فروشگاه خود را دریافت کنید.
آدرس پایه ارسال درخواستها
https://core.affili.ir/services/products
API محصولات
طبق توضیحات داده شده در جدول زیر، از API تعریف شده میتوانید برای ایمپورت محصولات فروشگاه خود در افیلی استفاده کنید.
نوع عملیات | نوع درخواست | توضیحات | uri |
درونریزی | POST | درونریزی محصولات؛ میتوانید حداکثر ۱۰۰۰ محصول را در هر بار فراخوانی سرویس درونریزی کنید. برای بروزرسانی هم میتوانید از همین وب سرویس استفاده کنید. | /import |
درونریزی محصولات
آدرس ارسال درخواست
POST https://core.affili.ir/services/products/import
قالب درخواست درونریزی
{
"products": [
object (Product),
...
]
}
پارامترها
نام | اجباری | توضیحات |
products | بلی |
لیست محصولات |
وب هوک
کافی است APIای با قالب پاسخی مطابق زیر آماده کرده و در اختیار پشتیبانی قرار دهید. تا کار ست کردن وب هوک توسط پشتیبانی برای فروشگاه شما انجام شود.
{
"data": {
"products": [
object (Product),
...
]
},
"meta": {
"page": object (Page)
}
}
پارامترها
products |
لیست محصولات فروشگاه |
page |
اطلاعات مربوط به صفحه دریافتی شامل شماره صفحه، تعداد آیتمها در هر صفحه و ... |
اعمال فیلتر
پیادهسازی بخش فیلتر نیازمند پیروی از قوانینی است که در ادامه به شرح آنها خواهیم پرداخت.
۱- قابلیت اعمال فیلتر روی تمامی آیتمهای آبجکت محصول و دستهبندی باید فعال باشد.
۲- برای اعمال فیلتر روی مقادیر old_price ،price و last_update که میتوانند به صورت بازهای از مقادیر باشند؛ از پیشوند _min برای تعریف پارامتر ارسالی حداقل و از پیشوند _max برای تعریف پارامتر ارسالی حداکثر استفاده میشود. به طور مثال برای اعمال فیلتر روی قیمت محصول در صورتی که پارامتر min_price از سمت افیلی ارسال شود به معنای فیلتر محصولاتی است که قیمت آنها بزرگتر مساوی مقدار پارامتر min_price باشد. برای پارامتر max_price هم به طور مشابه منظور فیلتر محصولاتی است که قیمت آنها کمتر مساوی مقدار پارامتر max_price باشد.
صفحهبندی
برای پیمایش در صفحات از پارامتر page برای ارسال شماره صفحه مدنظر و از پارامتر per_page برای تعیین تعداد محصولات هر صفحه استفاده میشود.
موجودیتها
product
قالب JSON
{
"pid": string,
"name": string,
"url": string,
"price": double,
"old_price": double,
"in_stock": boolean,
"images": [
string,
...
],
"categories": [
object (Category)
],
"created_at": dateTime,
"updated_at": datetime
}
پارامترها
pid |
String شناسه یکتای محصول در وبسایت فروشگاه |
name |
String نام محصول |
url |
String آدرس صفحه محصول در وبسایت فروشگاه |
price |
Double قیمت محصول |
old_price |
Double قیمت قدیمی محصولی؛ در صورتی که محصول قیمت قدیمی ندارد مقدار این پارامتر برابر با null میشود. |
in_stock |
Boolean وضعیت موجود بودن محصول؛ که میتواند یکی از مقادیر 0، 1، true یا false را داشته باشد. |
images |
Array آرایهای از آدرس عکسهای محصول |
categories
|
لیست دستهبندیهای محصول |
created_at |
DateTime تاریخ ایجاد محصول |
updated_at |
DateTime تاریخ آخرین بروزرسانی محصول |
Category
قالب JSON
{
"cid": string,
"name": string,
"url": string,
"parent_cid": string,
"is_primary": boolean
}
پارامترها
cid |
String شناسه یکتای دستهبندی در وبسایت فروشگاه |
name |
String نام دستهبندی |
url |
String آدرس صفحه دستهبندی در وبسایت فروشگاه |
parent_cid |
String دسته والد؛ در صورتی که دستهبندی، دسته والد ندارد مقدار این پارامتر برابر با null میشود. |
is_primary |
Boolean دستهبندی شاخص؛ در صورتی که این دستهبندی، دستهبندی شاخص محصول است مقدار این پارامتر برابر با ۱ یا true و در غیر این صورت برابر با ۰ یا false میشود. |
Page
قالب JSON
{
"current": integer,
"per": integer,
"last": integer,
"total": integer
}
پارامترها
current |
Integer شماره صفحه فعلی |
per |
Integer تعداد محصولات در هر صفحه، مقدار این پارامتر میتواند حداکثر ۱۰۰۰ باشد. |
last |
Integer شماره آخرین صفحه |
total |
Integer تعداد کل محصولات |
سرویس مشتری
در صورتی که ارائه دهنده سرویس SaaS هستید یا مشتری در ازای پرداخت حق عضویت از خدمات شما استفاده میکند و میخواهید در طول یک مدت زمان خاص یا برای تکرار خرید به بازاریاب پورسانت پرداخت کنید. نیاز است از طریق APIهای ارائه شده در این صفحه مشتریانی که از طریق بازاریابهای افیلی در سیستم شما ثبت نام میکنند را در افیلی تعریف کنید.
تعاریف
مشتری:
کاربری که برای استفاده از خدمات در سایت یا اپلیکیشن شما ثبت نام کرده است.
پیشنیازها
برای استفاده از سرویسهای تعریف شده، نیاز به ارسال Bearer توکن است. از طریق ارتباط با پشتیبانی میتوانید توکن دسترسی را دریافت کنید.
آدرس پایه ارسال درخواستها
https://core.affili.ir/services/customers
API مشتریها
طبق توضیحات داده شده در جدول زیر، از سه API تعریف شده میتوانید برای ایجاد، ویرایش و دریافت مشتریها استفاده کنید.
نوع عملیات | نوع درخواست | توضیحات | uri |
ایجاد | POST | ایجاد مشتری جدید | |
ویرایش |
POST | ویرایش مشتری ایجاد شده؛ customerId شناسه مشتری ایجاد شده در افیلی است. | /{customerId} |
لیست |
GET | دریافت لیست مشتریهای ثبت شده |
ایجاد مشتری
بعد از اینکه کاربر از طریق لینک افیلیت وارد وبسایت شما شد پارامتر referrer را به مدت زمان طول دوره کوکی (مقدار پارامتر exp)، در کوکی مرورگر وی ذخیره میکنیم.
بعد از ثبت نام کاربر، از طریق API مربوط به ایجاد مشتری اطلاعات مربوطه به افیلی ارسال میشود. همچنین دقت داشته باشید که مقدار شناسه مشتری در افیلی باید توسط شما ذخیره گردد تا در زمان ثبت کانورژن بتوانید از آن استفاده کنید. در ادامه به بررسی نمونه دیتای ارسالی و دریافتی در ایجاد مشتری خواهیم پرداخت.
آدرس ارسال درخواست
POST https://core.affili.ir/services/customers
قالب درخواست ایجاد مشتری
{
"referrer": string,
"mcs_id": string,
"meta_data": object (MetaData)
}
پارامترها
نام | اجباری |
توضیحات |
referrer | بلی |
String توکن ارجاع که قبلا در مرورگر کاربر ذخیر شده. |
mcs_id | بلی |
String شناسه یکتای مشتری در سیستم شما |
meta_data | خیر |
آبجکت حاوی اطلاعات اضافه راجع به مشتری |
قالب پاسخ ایجاد مشتری
{
"status": "ok",
"tag": "saveCustomer",
"api_version": "1.0.0",
"data": {
"id": string,
"mcs_id": string,
"meta_data": object (MetaData)
"created_at": dateTime,
"updated_at": dateTime,
"publisher": object (Publisher)
}
}
پارامترها
نام | توضیحات |
id |
String شناسه یکتای مشتری ایجاد شده در افیلی |
mcs_id |
String شناسه مشتری در سیستم شما |
meta_data |
آبجکت حاوی اطلاعات اضافه راجع به مشتری |
publisher |
آبجکت حاوی اطلاعات بازاریاب |
created_at |
DateTime تاریخ ایجاد |
updated_at |
DateTime تاریخ آخرین بروزرسانی |
ویرایش مشتری
برای تغییر در اطلاعات مشتری میتوانید از API زیر استفاده کنید.
POST https://core.affili.ir/services/customers/{customerId}
*پارامتر customerId در آدرس، شناسه مشتری ثبت شده در افیلی است.
قالب درخواست ویرایش مشتری
{
"mcs_id": string,
"meta_data": object (MetaData)
}
لیست مشتریها
برای دریافت لیست مشتریهای ثبت شده از API زیر استفاده کنید.
آدرس ارسال درخواست
GET https://core.affili.ir/services/customers
قالب پارامترهای ارسالی برای اعمال فیلتر
{
"id": string,
"mcs_id" string,
"min_created_at": dateTime,
"max_created_at": dateTime,
"min_updated_at": dateTime,
"max_updated_at": dateTime,
"publisher_id": integer
}
موجودیتها
Meta Data
قالب JSON
{
"first_name": string,
"last_name": string,
"mobile": string,
"email": string
// Any other fields can be added as extra data.
}
Publisher
قالب JSON
{
"id": string,
"full_name": string
}
پیادهسازی برای سایتساز پرتال
برای پیادهسازی کافی است فایل payment.html را مطابق زیر تغییر دهید.
<include name="layouts/header.html" />
<!--main-->
<main class="page-container cart-payment-container" cart-payment>
<div class="container">
<div class="page-context cart-payment-context bg-white rounded shadow-sm p-25 p-sm-30 p-md-35 p-lg-40" ng-switch="model.mode">
<h1 class="page-title cart-payment-title">
@@title
</h1>
<div ng-hide="loading" auto-show>
<div ng-hide="ready">
<scope name="cart-payment">
<include name="layouts/validation.html" />
</scope>
</div>
<div ng-show="ready">
<div class="page-description cart-payment-description">
لطفا از طریق فرم زیر اقدام به پرداخت سفارش کنید.
</div>
<hr class="page-separator cart-payment-separator">
<!-- Written By Affili -->
<span id="affili-payment-paid-status" style="display:none;">{{paid}}</span>
<span id="affili-payment-model" style="display:none;">{{model}}</span>
<!-- /Written By Affili -->
<div class="cart-payment-paid" ng-show="paid">
<div class="alert alert-success cart-payment-paid-description">
پرداخت سفارش با موفقیت انجام شده.
</div>
<a href="/user/store/orders/{{model.id}}" ng-hide="anonymouse" class="btn btn-primary cart-payment-paid-details">
مشاهده جزئیات
</a>
<a href="/user/store/orders/download" class="btn btn-success cart-payment-paid-download" ng-show="downloadable && !anonymouse">
دانلود
</a>
</div>
<div ng-hide="paid">
<form name="payment" ng-submit="payment.$valid && submit()" dynamic-form novalidate>
<div class="alert alert-success cart-payment-succeed" ng-class="{'mb-5':succeed}" ng-show="succeed">
<span ng-bind="succeed.description"></span>
</div>
<div ng-hide="succeed && succeed.paid !== false">
<div class="cart-payment-shipping" ng-show="shippings">
<h4 class="cart-payment-shipping-title">
<span class="badge badge-primary cart-payment-shipping-badge">
{{step(0)}}
</span>
برنامه ارسال
</h4>
<div class="cart-payment-shipping-description">
لطفا برنامه ارسال خود را انتخاب کنید.
</div>
<div class="cart-payment-shipping-items">
<div class="cart-payment-shipping-item my-2" ng-repeat="item in shippings">
<div class="custom-control custom-radio cart-payment-shipping-item-control">
<input type="radio" id="cart-payment-shipping-item-{{item.id}}" class="custom-control-input cart-payment-shipping-item-input" ng-value="item.id" ng-model="model.shipping_id" ng-disabled="progress">
<label class="custom-control-label cart-payment-shipping-item-label" for="cart-payment-shipping-item-{{item.id}}">
{{item.title}} / {{item.cost ? (item.cost | number) + ' تومان' : 'رایگان'}} {{item.description ? '/' : ''}}
<i class="fa fa-question-circle text-muted" data-toggle="tooltip" data-original-title="{{item.description}}" ng-show="item.description"></i>
</label>
</div>
</div>
</div>
</div>
<hr class="page-separator cart-payment-separator" ng-show="shippings">
<div class="cart-payment-details">
<h4 class="cart-payment-details-price">
<span class="badge badge-primary cart-payment-details-price-badge">
{{step(1)}}
</span>
مبلغ قابل پرداخت: {{model.remaining_price|number}} تومان
</h4>
<span class="cart-payment-details-created">
ثبت سفارش: {{model.created.subtract}}
</span>
<span class="cart-payment-details-duedate" ng-show="model.due_date">
، سررسید پرداخت: {{model.due_date.subtract}}
</span>
</div>
<hr class="page-separator cart-payment-separator">
<div class="cart-payment-method">
<h4 class="cart-payment-method-title">
<span class="badge badge-primary cart-payment-method-title-badge">
{{step(2)}}
</span>
روش پرداخت
</h4>
<div class="cart-payment-method-description">
لطفا نوع پرداخت مورد نظر خود را از طریق گزینههای زیر انتخاب کنید.
</div>
<div class="custom-control custom-radio cart-payment-method-online my-2" ng-show="model.payment.online">
<input type="radio" id="cart-payment-method-online" name="method" class="custom-control-input cart-payment-method-online-input" value="online_payment" ng-model="model.mode" ng-disabled="progress">
<label class="custom-control-label cart-payment-method-online-label" for="cart-payment-method-online">
پرداخت الکترونیک از طریق کارتهای عضو شتاب
</label>
</div>
<div class="custom-control custom-radio cart-payment-method-bank my-2" ng-show="model.payment.bank">
<input type="radio" id="cart-payment-method-bank" name="method" class="custom-control-input cart-payment-method-bank-input" value="bank" ng-model="model.mode" ng-disabled="progress">
<label class="custom-control-label cart-payment-method-bank-label" for="cart-payment-method-bank">
پرداخت از طریق واریز به حساب
</label>
</div>
<div class="custom-control custom-radio cart-payment-method-wallet my-2" ng-show="model.payment.wallet">
<input type="radio" id="cart-payment-method-wallet" name="method" class="custom-control-input cart-payment-method-wallet-input" value="wallet" ng-model="model.mode" ng-disabled="progress">
<label class="custom-control-label cart-payment-method-wallet-label" for="cart-payment-method-wallet">
پرداخت از طریق کیفپول
</label>
</div>
<div class="custom-control custom-radio cart-payment-method-cod my-2" ng-show="model.payment.cash_on_delivery">
<input type="radio" id="cart-payment-method-cod" name="method" class="custom-control-input cart-payment-method-cod-input" value="cash_on_delivery" ng-model="model.mode" ng-disabled="progress">
<label class="custom-control-label cart-payment-method-cod-label" for="cart-payment-method-cod">
پرداخت در محل
</label>
</div>
</div>
<hr class="page-separator cart-payment-separator" ng-show="model.mode">
<div class="cart-payment-bank-form" ng-switch-when="bank">
<h4 class="cart-payment-bank-title">
<span class="badge badge-primary cart-payment-bank-title-badge">
{{step(3)}}
</span>
حساب بانکی
</h4>
<div class="cart-payment-bank-description">
لطفا حساب بانکی مورد نظر خود را انتخاب کنید.
</div>
<div class="row">
<div class="col-md-6 col-xl-4 form-group">
<div class="cart-payment-bank-gateway">
<select name="gateway_id" class="form-control cart-payment-bank-gateway-input" ng-model="model.gateway_id" ng-disabled="progress" required>
<option ng-value="item" ng-repeat="item in accounts">
{{item.title}}
</option>
</select>
<div class="validation-inline cart-payment-inline-error text-danger" ng-messages="payment.gateway_id.$error" ng-show="payment.$submitted || payment.gateway_id.$dirty">
<span ng-message="required">
حساب بانکی را انتخاب کنید.
</span>
<span ng-message="server">
<span ng-bind="validation.gateway_id"></span>
</span>
</div>
</div>
</div>
</div>
</div>
<div class="cart-payment-transfer" ng-switch-when="bank" ng-show="model.gateway_id">
<hr class="page-separator cart-payment-separator">
<h4 class="cart-payment-transfer-title">
<span class="badge badge-primary cart-payment-transfer-title-badge">
{{step(4)}}
</span>
واریز به حساب
</h4>
<div class="cart-payment-transfer-description">
لطفا مبلغ سفارش را به حساب با اطلاعات زیر واریز کنید:
</div>
<div class="cart-payment-transfer-name">
عنوان:
<b class="cart-payment-transfer-name-value">
{{model.gateway_id.title}}
</b>
</div>
<div class="cart-payment-transfer-owner">
صاحب حساب:
<b class="cart-payment-transfer-owner-value">
{{model.gateway_id.owner}}
</b>
</div>
<div class="cart-payment-transfer-pan" ng-show="model.gateway_id.pan">
شماره کارت:
<b class="cart-payment-transfer-pan-value">
{{model.gateway_id.pan}}
</b>
</div>
<div class="cart-payment-transfer-iban" ng-show="model.gateway_id.iban">
شماره شبا:
<b class="cart-payment-transfer-iban-value">
{{model.gateway_id.iban}}
</b>
</div>
<div class="cart-payment-transfer-account" ng-show="model.gateway_id.account">
شماره حساب:
<b class="cart-payment-transfer-account-value">
{{model.gateway_id.account}}
</b>
</div>
</div>
<div class="cart-payment-fish" ng-switch-when="bank" ng-show="model.gateway_id">
<hr class="page-separator cart-payment-separator">
<h4 class="cart-payment-fish-title">
<span class="badge badge-primary cart-payment-fish-title-badge">
{{step(5)}}
</span>
سند پرداخت
</h4>
<scope name="cart-payment">
<include name="layouts/validation.html" />
</scope>
<div class="cart-payment-fish-description">
اطلاعات سند پرداخت خود را از طریق فرم زیر ثبت کنید.
</div>
<div class="row">
<div class="col-md-6 col-lg-4 form-group">
<div class="cart-payment-fish-reference">
<label for="reference_id" class="cart-payment-fish-reference-label">
کد پیگیری
</label>
<input type="text" name="reference_id" id="reference_id" class="form-control cart-payment-fish-reference-input" maxlength="100" ng-model="model.reference_id" ng-disabled="progress" required>
<div class="validation-inline cart-payment-inline-error text-danger" ng-messages="payment.reference_id.$error" ng-show="payment.$submitted || payment.reference_id.$dirty">
<span ng-message="required">
کد پیگیری را بنویسید.
</span>
<span ng-message="server">
<span ng-bind="validation.reference_id"></span>
</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 col-lg-8 form-group">
<div class="cart-payment-fish-description-field">
<label for="description" class="cart-payment-fish-description-field-label">
توضیحات
</label>
<textarea type="text" name="description" id="description" class="form-control cart-payment-fish-description-field-input" maxlength="4000" rows="5" ng-model="model.description" ng-disabled="progress"></textarea>
<div class="validation-inline cart-payment-inline-error text-danger" ng-messages="payment.description.$error" ng-show="payment.$submitted || payment.description.$dirty">
<span ng-message="maxlength">
توضیحات را کمتر از 4000 حرف بنویسید.
</span>
<span ng-message="server">
<span ng-bind="validation.description"></span>
</span>
</div>
</div>
</div>
</div>
<button class="btn btn-lg btn-success cart-payment-fish-submit" ng-switch="model.mode" ng-disabled="progress">
ثبت سند پرداخت
</button>
</div>
<div class="cart-payment-online-form" ng-switch-when="online_payment">
<h4 class="cart-payment-online-title">
<span class="badge badge-primary cart-payment-online-title-badge">
{{step(3)}}
</span>
درگاه پرداخت
</h4>
<scope name="cart-payment">
<include name="layouts/validation.html" />
</scope>
<div class="cart-payment-online-description">
لطفا درگاه پرداخت مورد نظر خود را انتخاب کنید.
</div>
<div class="row">
<div class="col-md-6 col-xl-4 form-group">
<div class="cart-payment-online-gateway">
<select name="gateway_id" class="form-control cart-payment-online-gateway-input" ng-model="model.gateway_id" ng-disabled="progress" required>
<option ng-value="item" ng-repeat="item in gateways">
{{item.title}}
</option>
</select>
<div class="validation-inline cart-payment-inline-error text-danger" ng-messages="payment.gateway_id.$error" ng-show="payment.$submitted || payment.gateway_id.$dirty">
<span ng-message="required">
درگاه پرداخت را انتخاب کنید.
</span>
<span ng-message="server">
<span ng-bind="validation.gateway_id"></span>
</span>
</div>
</div>
</div>
</div>
<button class="btn btn-lg btn-success cart-payment-online-submit" ng-switch="model.mode" ng-disabled="progress">
پرداخت
</button>
</div>
<div class="cart-payment-wallet-form" ng-switch-when="wallet">
<div class="alert alert-warning cart-payment-wallet-description" ng-show="user && model.remaining_price > user.credit">
از آنجایی که شارژ کیفپول شما کمتر از مبلغ قابل پرداخت است؛ اگر بر روی دکمهی پرداخت کلیک کنید، کل موجودی کیفپول شما به مقدار {{user.credit|number}} تومان از صورتحساب کسر خواهد شد و باقیماندهی آن را میتوانید از دیگر روشهای موجود پرداخت کنید.
</div>
<scope name="cart-payment">
<include name="layouts/validation.html" />
</scope>
<button class="btn btn-lg btn-success cart-payment-wallet-submit" ng-disabled="progress">
پرداخت
</button>
</div>
<div class="cart-payment-cod-form" ng-switch-when="cash_on_delivery">
<scope name="cart-payment">
<include name="layouts/validation.html" />
</scope>
<button class="btn btn-lg btn-success cart-payment-cod-submit" ng-disabled="progress">
ثبت درخواست
</button>
</div>
<div class="page-loading cart-payment-loading" ng-show="loading">
<i class="fa fa-refresh fa-spin fa-fw"></i>
کمی صبر کنید...
</div>
</div>
</form>
</div>
</div>
</div>
<div class="page-loading cart-loading" ng-show="loading">
<i class="fa fa-refresh fa-spin fa-fw"></i>
کمی صبر کنید...
</div>
</div>
</div>
</main>
<!--/main-->
<!-- Written By Affili -->
<script type="text/javascript">
let affiliCounter = 0;
let affiliSaleTrackInterval = setInterval(function() {
try {
let paidStatus = document.querySelector('#affili-payment-paid-status');
let model = document.querySelector('#affili-payment-model');
if (paidStatus && model && (paidStatus.textContent === 'true' || paidStatus.textContent === true)) {
model = JSON.parse(model.textContent)
affili('sale', model.id, model.price, {
coupon: model.coupons && model.coupons.constructor === Array ? model.coupons[0] : null,
products: model.items.map(item => {
return {
pid: item.id,
name: item.title,
unit_price: item.product.variant.price,
quantity: item.quantity,
total_price: item.price,
}
}),
}, true, function() {
clearInterval(affiliSaleTrackInterval)
});
affiliCounter++
if (affiliCounter > 3) {
clearInterval(affiliSaleTrackInterval);
}
}
} catch (e) {
console.log(e)
}
}, 100);
</script>
<!-- /Written By Affili -->
<include name="layouts/footer.html" />
سرویس ساب دامنه
برای پیادهسازی سرویس ساب دامنه بعد از خرید و فعالسازی سرویس، میتوانید برای ردیابی خریدهای انجام شده از اسکریپت ردیابی افیلی استفاده کنید.
ردیابی لینکها:
قطعه کد زیر را در تگ هد همه صفحات سایت خود قرار دهید.
<script async src="https://yourdomain.com/core/scripts/tracker.js"></script>
<script>
window.adtrackData = window.adtrackData || [];function adtrack(){adtrackData.push(arguments);}
adtrack('create');
</script>
ثبت مشتری:
در صورتی که ارائه دهنده سرویس SaaS هستید یا مشتری در ازای پرداخت حق عضویت از خدمات شما استفاده میکند و میخواهید در طول یک مدت زمان خاص یا برای تکرار خرید به بازاریاب پورسانت پرداخت کنید. نیاز است بعد از ثبتنام مشتری در سیستم شما از طریق قطعه کدی که در ادامه میآوریم، یک مشتری ایجاد کنید.
<script>
adtrack('customer', customerId, metaData, function (adtrackCustomerId) {
// Save adtrackCustomerId in your DB
});
</script>
پس از اینکه مشتری در سرویس ثبت شد شناسه مشتری توسط تابع callback بازگردانده میشود. شما باید این مقدار را در دیتابیس خود ذخیره کنید. در قطعه کد بالا متغیرهای customerId و metaData باید با مقادیر صحیح توسط شما پر شوند که توضیح هر کدام را در ادامه میدهیم.
customerId:
شناسه یکتای مشتری در سیستم شماست.
metaData:
آبجکتی حاوی اطلاعات اضافه راجع به مشتری است. ارسال این پارامتر اختیاری است.
تذکر: در صورتی که مشتری از سمت بازاریاب نباشد، دیتایی سمت سرویس ذخیره نشده و تابع callback نیز فراخوانی نمیشود.
ثبت فروش:
برای ثبت فروشهای انجام شده در thank you page قطعه کد زیر را قرار دهید.
<script async src="https://yourdomain.com/core/scripts/tracker.js"></script>
<script>
window.adtrackData = window.adtrackData || [];function affili(){adtrackData.push(arguments);}
adtrack('create');
adtrack('sale', uniqueSaleId, saleAmount, {
coupon: couponCode,
products: products,
customer_id: adtrackCustomerId
});
</script>
دقت داشته باشید در کد بالا متغیرهای uniqueSaleId ،saleAmount ،couponCode ،products و adtrackCustomerId باید توسط شما با مقادیر صحیح پر شود؛ که توضیح هر کدام در زیر آمده است.
uniqueSaleId:
یک شناسه یکتاست که باید در سیستم خود برای هر فروش ایجاد کنید. شما باید این متغیر را با یک تگ یا متغیر واقعی جایگزین کنید تا مقدار مربوطه را در هر فروش به صورت خودکار مقداردهی کند. شناسه یکتا میتواند هر چیزی که برای شما معنادار است باشد و باید برای هر فروش نیز منحصربفرد باشد. به طور مثال: شماره سفارش، شماره تراکنش و ... پس از ثبت فروش میتوانید این شناسه را در پنل افیلی بخش کانورژنها مشاهده کنید. این امر باعث میشود که مدیریت دادههای موجود در افیلی و سیستم شما آسانتر شود.
saleAmount:
مبلغ کل فروش یا همان مبلغ پرداختی کاربر بابت خرید است. دقت داشته باشید مبلغ مربوط به کرایه حمل و نقل و مالیات نباید لحاظ شده باشد.
couponCode:
در صورتی که مشتری هنگام خرید از کد تخفیف استفاده کرده باشد کد تخفیف مربوطه را باید وارد کنید در غیر اینصورت با مقدار null پر شود.
products:
آرایهای از محصولاتی است که توسط مشتری خریداری شده، که به صورت زیر پر میشود.
products = [
{
"name": "محصول نمونه",
"unit_price": 12000,
"quantity": 3,
"total_price": 36000
},
{
"name": "محصول نمونه شماره دو",
"unit_price": 43000,
"quantity": 1,
"total_price": 43000
}
]
adtrackCusomerId:
شناسه یکتای مشتری در افیلی است. ارسال این پارامتر اختیاری است.
واحد پولی:
به صورت پیشفرض واحد پولی فروشگاهها ریال است در صورتی که از واحد پولی تومان استفاده میکنید به پشتیبانی فروشگاهها اطلاع دهید تا واحد پولی شما تغییر کند.
ثبت لید:
برای ثبت لید هنگامی که اقدام مورد نظر رخ داد، قطعه کد زیر را فراخوانی کنید.
<script>
adtrack('lead', {
meta_data: {
form_id: "فرم صفحه لندیگ",
uniq_param: "پارامتر یکتا که میتواند شماره تماس، آیدی، کد ملی و ... باشد"
first_name: "علی",
last_name: "رمضانی",
mobile: "09123456789",
email: "test@exmpl.com",
}
});
</script>
پارامتر form_id در متا دیتا برای هر فرم باید مقدار یکتایی داشته باشد. و ارسال آن الزامی است. این مقدار میتواند از نوع عدد یا یک رشته باشد. همچنین برای فرمهای لید همانند بالا میتوانید سایر دادههای فرم را در متغیر متا دیتا برای ما ارسال کنید. ارسال این اطلاعات برای تطبیق و جلوگیری از تقلب ناشران الزامی است.