توسعهدهندگان
در این بخش روشهای مختلف پیادهسازی و استفاده از سرویسهای ارائه شده به فروشگاهها، توضیح داده خواهد شد.
اسکریپت ردیابی
در صورتی که تیم فنی شما امکان پیادهسازی سرویسها را ندارد یا تمایلی به پیادهسازی 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 affili(){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 در متا دیتا برای هر فرم باید مقدار یکتایی داشته باشد. و ارسال آن الزامی است. این مقدار میتواند از نوع عدد یا یک رشته باشد. همچنین برای فرمهای لید همانند بالا میتوانید سایر دادههای فرم را در متغیر متا دیتا برای ما ارسال کنید. ارسال این اطلاعات برای تطبیق و جلوگیری از تقلب ناشران الزامی است.