ایران نت
زیرساخت، امنیت و رشد دیجیتال کسب‌وکارها میزبانی، دامنه، طراحی، پشتیبانی و اتوماسیون در یک مجموعه
WooCommerce Location & Geo API

انتخاب آدرس روی نقشه و ارسال منطقه‌ای در ووکامرس | ایران نت

چطور موقعیت مشتری را به مجاز بودن خرید، روش ارسال و هزینهٔ تحویل متصل کنیم؟ راهنمای انتخاب میان افزونهٔ وردپرس و اتصال مستقیم Geo API، همراه با سناریوی فروش محلی و نکات فنی راه‌اندازی.

قوانین فروش و ارسال معماری Geo API اتصال امن و تست عملی
فهرست مطالب
  1. چرا انتخاب آدرس روی نقشه به‌تنهایی کافی نیست؟
  2. IranNet Geo و IranNet Location چه تفاوتی دارند؟
  3. Shipping Zones ووکامرس چه کاری انجام می‌دهد؟
  4. از مختصات تا آدرس و شناسهٔ محدوده
  5. شهر، استان یا شعاع؛ کدام محدوده مناسب‌تر است؟
  6. یک سناریوی روشن برای ارسال رایگان و هزینهٔ ثابت
  7. معماری امن اتصال به Geo API چگونه است؟
  8. اشتراک Geo و مصرف موقعیت را چطور برآورد کنیم؟
  9. چک‌لیست فنی تست فروشگاه موقعیت‌محور
  10. کدام مسیر برای کسب‌وکار شما مناسب است؟
  11. پرسش‌های متداول

برای انتخاب آدرس روی نقشه در ووکامرس، فقط به ظاهر نقشه نگاه نکنید. اگر محدودهٔ فروش و هزینهٔ ارسال شما به موقعیت مشتری وابسته است، باید انتخاب آدرس، تشخیص محدوده و اجرای قواعد فروشگاه در یک جریان هماهنگ کار کنند. این مقاله از تعریف این جریان شروع می‌کند و به انتخاب مسیر اجرا می‌رسد.

نقطهٔ شروع

چرا انتخاب آدرس روی نقشه به‌تنهایی کافی نیست؟

مشتری آدرسش را روی نقشه انتخاب می‌کند، اما تازه پرسش اصلی فروشگاه شروع می‌شود: آیا به این نقطه ارسال داریم؟ آیا همهٔ کالاها در این منطقه قابل فروش‌اند؟ کدام روش ارسال باید نمایش داده شود و هزینهٔ آن چقدر است؟ اگر پاسخ این پرسش‌ها همچنان تلفنی یا پس از پرداخت مشخص شود، نقشه فقط ورود آدرس را آسان کرده است.

ارسال منطقه‌ای در ووکامرس یعنی موقعیت انتخاب‌شده وارد تصمیم‌های فروشگاه شود. فروشگاهی که کالای سنگین می‌فروشد ممکن است یک محصول را فقط در یک شهر عرضه کند؛ گل‌فروشی ممکن است داخل شعاع مشخص ارسال داشته باشد؛ یک فروشگاه دیگر برای مناطق نزدیک ارسال رایگان و برای مناطق دورتر هزینهٔ ثابت تعریف کند.

هدف این راهنما انتخاب میان یک Map Picker ساده، افزونهٔ فروشگاه موقعیت‌محور و اتصال مستقیم Geo API است. این انتخاب باید از قوانین واقعی کسب‌وکار شروع شود، نه صرفاً ظاهر نقشه.

دریافتموقعیت مشتری
پردازشآدرس و محدودهٔ استاندارد
تصمیم فروشگاهامکان خرید و ارسال
معماری محصول

IranNet Geo و IranNet Location چه تفاوتی دارند؟

IranNet Geo زیرساخت مکانی ایران‌نت است: نام مکان و آدرس را جستجو می‌کند، مختصات را به اطلاعات آدرس تبدیل می‌کند و محدوده‌های اداری پشتیبانی‌شده را با شناسهٔ استاندارد در اختیار نرم‌افزار قرار می‌دهد. این سرویس به وردپرس محدود نیست و می‌تواند در CRM، اپلیکیشن یا Backend اختصاصی استفاده شود.

IranNet Location افزونهٔ WordPress و WooCommerce است که از همین زیرساخت استفاده می‌کند. انتخاب موقعیت، نگهداری موقعیت مشتری، دفترچه آدرس، اتصال به Checkout و قوانین فروش و ارسال در این لایه قرار می‌گیرند. به بیان عملی، Geo اطلاعات موقعیت را فراهم می‌کند و Location آن را وارد منطق فروشگاه می‌کند.

نیازIranNet GeoIranNet Location
جستجوی مکان و تبدیل مختصاتقابلیت API زیرساختاستفاده در تجربهٔ انتخاب آدرس
محدودهٔ شهر و استانشناسه و اطلاعات محدودهٔ پشتیبانی‌شدهاستفاده در قواعد فروشگاه و ارسال
محدودیت محصول و دسته‌بندیتصمیم بر عهدهٔ نرم‌افزار مصرف‌کنندهقوانین جغرافیایی در ووکامرس
دفترچه آدرس و Checkoutنیازمند پیاده‌سازی در محصول شماامکانات افزونهٔ وردپرس
کاربرد در نرم‌افزار غیروردپرسیاتصال مستقیم به APIمخصوص اکوسیستم وردپرس

اگر سایت‌ساز ایران‌نت دارید، این سیستم در همان اکوسیستم در اختیار شماست. اگر سایت وردپرسی مستقلی دارید، مسیر افزونه را بررسی کنید؛ برای محصول اختصاصی، راهنمای توسعه‌دهندگان Geo نقطهٔ شروع مناسب‌تری است.

تفاوت با امکانات پایه

Shipping Zones ووکامرس چه کاری انجام می‌دهد؟

در تنظیمات استاندارد ووکامرس، Shipping Zone محدوده‌ای است که روش‌های ارسال مربوط به آن را تعریف می‌کنید. ناحیه‌ها بر اساس آدرس مشتری تطبیق داده می‌شوند و ترتیبشان اهمیت دارد: اولین ناحیهٔ منطبق انتخاب می‌شود. برای همین معمولاً محدوده‌های کوچک‌تر پیش از محدوده‌های بزرگ‌تر قرار می‌گیرند. جزئیات در مستند رسمی مناطق حمل‌ونقل ووکامرس آمده است.

هنگام طراحی فروشگاه موقعیت‌محور، دو مفهوم را جدا کنید: «ناحیهٔ حمل‌ونقل ووکامرس» برای ارائهٔ روش‌های ارسال و «محدودهٔ مکانی افزونه» برای قواعد مبتنی بر موقعیت. نام مشابه Zone به معنی یکسان بودن نقش آن‌ها نیست. تنظیم هر دو لایه باید با سیاست فروشگاه هماهنگ باشد.

مثلاً محدود کردن یک محصول خاص به شهر تهران با تعیین هزینهٔ ارسال برای همهٔ کالاهای یک ناحیه، یک مسئله نیست. پیش از خرید افزونه مشخص کنید فقط به دسته‌بندی روش‌های ارسال نیاز دارید، یا باید موقعیت روی نقشه، شعاع خدمت و مجاز بودن خرید محصول نیز بررسی شود.

دادهٔ فنی

از مختصات تا آدرس و شناسهٔ محدوده

در جریان انتخاب آدرس، سه داده را از هم تفکیک کنید: مختصات جغرافیایی، متن قابل نمایش برای مشتری و شناسهٔ استاندارد محدوده. مختصات برای محاسبات مکانی لازم است؛ متن آدرس برای خواندن و تکمیل جزئیات کاربرد دارد؛ شناسهٔ محدوده نیز ارتباط قواعد با شهر یا استان را پایدارتر می‌کند.

تکیه بر مقایسهٔ رشته‌ای نام شهر می‌تواند به خطا منجر شود؛ فاصله، تفاوت نگارشی و نام‌های مشابه الزاماً یک کلید مطمئن برای تصمیم تجاری نمی‌سازند. در محدوده‌های پشتیبانی‌شدهٔ Geo، از شناسهٔ area_id استفاده کنید و نام شهر را برای نمایش نگه دارید.

  • /v1/search: جستجوی نام مکان، محله، شهر یا آدرس.
  • /v1/reverse: دریافت اطلاعات آدرس مرتبط با یک مختصات.
  • /v1/areas/search، /v1/areas/resolve و /v1/areas/{area_id}: کار با محدوده‌های اداری.

پاسخ بدون نتیجه یا محدودهٔ نامشخص را از آدرس معتبر جدا کنید. خطای شبکه نیز نشانهٔ خارج بودن مشتری از محدوده نیست. پیام مناسب این است که بررسی موقعیت تکمیل نشده و باید دوباره تلاش شود؛ تصمیم نهایی به سیاست مشخص فروشگاه نیاز دارد.

آدرس حاصل از نقشه هم لزوماً تمام جزئیات تحویل را ندارد. پلاک، واحد و توضیح دسترسی باید قابل تکمیل باشند. کد پستی نیز باید از مشتری دریافت و بررسی شود؛ یک نقطه روی نقشه جای کد پستی اختصاصی واحد را نمی‌گیرد.

طراحی قواعد

شهر، استان یا شعاع؛ کدام محدوده مناسب‌تر است؟

فروش محدود به شهر

City

برای کالایی که فقط در یک شهر عرضه می‌شود، قاعدهٔ شهری را بررسی کنید. وجود محدودهٔ موردنظر در دادهٔ پشتیبانی‌شده باید تأیید شود.

پوشش گسترده‌تر

Province

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

ارسال محلی

Radius

برای شعاع خدمت اطراف فروشگاه، نقطهٔ مبنا و شعاع مجاز را مشخص کنید و مرز آن را جداگانه تست کنید.

در قانون شعاعی، فاصلهٔ مشتری تا نقطهٔ مبنا با شعاع مقایسه می‌شود. یک سیاست نمونه می‌تواند مشتری با فاصلهٔ کمتر یا مساوی ۱۰ کیلومتر را مجاز بداند. رفتار نقطهٔ دقیقاً روی مرز را باید در تنظیم و تست خود صریح کنید؛ نتیجهٔ مرزی نباید وابسته به برداشت مبهم مدیر باشد.

فاصلهٔ مستقیم با مسافت مسیر یکی نیست.

قابلیت فعلی محاسبهٔ فاصله در Location بر فاصلهٔ مستقیم جغرافیایی تکیه دارد. رودخانه، مسیر یک‌طرفه یا بزرگراه ممکن است طول مسیر واقعی را بیشتر کند. این عدد را زمان رسیدن پیک، مسافت جاده یا سرویس مسیریابی معرفی نکنید.

قاعدهٔ کل فروشگاه، دسته‌بندی و محصول را با هدف مشخص تعریف کنید. برای نمونه، سیاست کلی فروشگاه می‌تواند گسترده باشد اما کالای حساس فقط در چند محدوده ارائه شود. ترکیب‌ها، استثناها و حالت «موقعیت هنوز انتخاب نشده» را با شبیه‌ساز بررسی کنید؛ از روی نام یک گزینه دربارهٔ نتیجهٔ چند قانون هم‌زمان قضاوت نکنید.

نمونهٔ اجرایی

یک سناریوی روشن برای ارسال رایگان و هزینهٔ ثابت

فرض کنید یک فروشگاه محلی تا شعاع ۱۰ کیلومتری خدمت می‌دهد. برای فاصلهٔ نزدیک ارسال رایگان تعریف می‌کند و از آن فاصله تا انتهای پوشش، مبلغ ثابت می‌گیرد. جدول زیر صرفاً نمونهٔ طراحی قانون است؛ مبلغ آن تعرفهٔ ایران‌نت یا تنظیم پیش‌فرض افزونه نیست.

فاصلهٔ مستقیمامکان خرید در این سناریوارسال
صفر تا ۳ کیلومتر، شامل مرزمجازرایگان
بیش از ۳ تا ۱۰ کیلومتر، شامل مرزمجاز۵۰٬۰۰۰ تومان ثابت
بیش از ۱۰ کیلومترغیرمجاز طبق سیاست این فروشگاهخارج از محدودهٔ خدمت

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

در IranNet Location امکانات کنترل روش ارسال، هزینهٔ ثابت، ارسال رایگان منطقه‌ای، محاسبه بر مبنای فاصلهٔ مستقیم و قوانین یا کمپین‌های ارسال وجود دارد. نمونهٔ تعاملی ارسال در صفحهٔ افزونه این ایده را نشان می‌دهد؛ تست تنظیم واقعی فروشگاه را با شبیه‌ساز قوانین و شبیه‌ساز ارسال انجام دهید.

قوانین فروشگاه خودتان را مشخص کنید

ارسال محلی شما چه قاعده‌ای دارد؟

شهر یا شعاع خدمت، استثناهای محصول و روش محاسبه هزینه را آماده کنید؛ برای بررسی نصب و اتصال Location از پنل مشتریان شروع کنید.

اتصال مستقیم API

معماری امن اتصال به Geo API چگونه است؟

در محصول اختصاصی، Secret دائمی سایت باید روی Backend بماند. Backend از مسیر POST /v1/token توکن کوتاه‌عمر می‌گیرد و مرورگر یا اپلیکیشن با توکن محدودشده به قابلیت‌های مجاز به API متصل می‌شود. قرار دادن Secret در JavaScript عمومی، راه میان‌بر مناسبی برای اتصال نیست.

جریان مفهومی اتصال؛ نه نمونهٔ اجرایی API
Application Backend
  └─ Site Credential / Secret
      └─ POST /v1/token
          └─ Short-lived scoped JWT
              └─ Client → Search / Reverse / Areas

Scopeهای معرفی‌شده برای این قابلیت‌ها geo.search، geo.reverse و geo.areas هستند. تنظیم Site، Origin و Scope باید با مصرف واقعی پروژه هماهنگ شود. پارامترهای درخواست، شکل پاسخ و آدرس پایه را از قرارداد اتصال سرویس بگیرید؛ نام مسیرها به‌تنهایی برای نوشتن یک کلاینت کامل کافی نیست.

برای جستجوی آدرس، درخواست را با هر فشار کلید بدون کنترل تکرار نکنید. یک تأخیر کوتاه پس از تایپ، مدیریت درخواست‌های قبلی و نمایش جداگانهٔ حالت بارگذاری، بدون نتیجه و خطا، تجربهٔ قابل فهم‌تری می‌سازد. در ثبت سفارش، به دادهٔ قابل تغییر مرورگر به‌عنوان تأیید نهایی خدمت اعتماد نکنید؛ قاعدهٔ خرید باید در سمت سرور نیز اعمال شود.

راهنمای عمومی اتصال، مسیرها و خطاهای تجاری در مستندات توسعه‌دهندگان IranNet Geo آمده است. در وردپرس، استفاده از افزونهٔ Location می‌تواند شما را از پیاده‌سازی دوبارهٔ دفترچه آدرس و اتصال Checkout بی‌نیاز کند؛ برای توسعهٔ سفارشی هم Shortcode و API PHP در اختیار توسعه‌دهنده است.

هزینه و مصرف

اشتراک Geo و مصرف موقعیت را چطور برآورد کنیم؟

تعداد سفارش با تعداد درخواست مکانی برابر نیست. یک مشتری ممکن است چند بار جستجو کند، نقطه را تغییر دهد و چند عملیات تشخیص محدوده انجام دهد. بنابراین برای برآورد ظرفیت، سفر انتخاب آدرس را بررسی کنید، نه فقط تعداد سفارش ماهانه را.

در مدل فعلی Geo، هر Search، Reverse یا عملیات Areas پذیرفته‌شده با نتیجهٔ معتبر موفق یا بدون نتیجه، یک واحد مصرف دارد. رد احراز هویت، اعتبارسنجی، محدودیت سرعت یا ظرفیت و خطای داخلی Backend از ظرفیت تجاری کم نمی‌شوند. واحدها از ظرفیت اشتراک کم می‌شوند؛ مدل محصول برداشت پول از کیف پول به‌ازای هر درخواست نیست.

اشتراک‌های معرفی‌شده پرداخت سالانه و ظرفیت دورهٔ ماهانه دارند. اگر ظرفیت تمام شود، درخواست جدید رد می‌شود اما این وضعیت با تعلیق سرویس یکسان نیست. افزایش ظرفیت همان دوره، مصرف قبلی را پاک نمی‌کند و محدودیت سرعت دقیقه، ساعت یا روز را هم افزایش نمی‌دهد.

برای عدد دقیق ظرفیت، قیمت و شرایط آزمایش Starter، تعرفه‌های IranNet Geo را ببینید. شرایط دریافت افزونه را جداگانه از مسیر درخواست Location بررسی کنید؛ تعرفهٔ زیرساخت Geo را خودکار به‌عنوان قیمت افزونه در نظر نگیرید.

پیش از انتشار

چک‌لیست فنی تست فروشگاه موقعیت‌محور

صرفاً ظاهر شدن نقشه به معنی آماده بودن اتصال نیست. حداقل این موارد را با دادهٔ آزمایشی بررسی کنید؛ به‌خصوص اگر صفحهٔ محصول با Elementor یا تسویه‌حساب سفارشی ساخته شده است.

  • مشتری بدون موقعیت: آیا برای محصول محدودشده، پیام روشن و مسیر انتخاب آدرس وجود دارد؟
  • داخل، بیرون و مرز: یک نقطه در هر حالت را با محصول عادی و محصول دارای قانون تست کنید.
  • تغییر آدرس پس از افزودن کالا: آیا مجاز بودن خرید و روش ارسال دوباره با موقعیت جدید هماهنگ می‌شود؟
  • کاربر مهمان و واردشده: انتخاب موقعیت و دفترچهٔ آدرس را در مسیرهای مربوط به هر کدام بررسی کنید.
  • Checkout واقعی شما: تسویه‌حساب کلاسیک یا بلوکی، قالب و ویجت‌های استفاده‌شده در سایت خود را تست کنید.
  • قوانین هم‌زمان: حالت رایگان، هزینهٔ ثابت، استثنای محصول و تغییر دسته‌بندی را جداگانه و ترکیبی بررسی کنید.
  • بدون نتیجه و خطای سرویس: خطا نباید به آدرس تأییدشده یا ارسال رایگان تبدیل شود.
  • موبایل و متن طولانی: آدرس بلند، صفحه کوچک، باز و بسته شدن انتخابگر و دکمهٔ تأیید را بررسی کنید.

Location از Checkout کلاسیک، WooCommerce Blocks و Elementor پشتیبانی می‌کند؛ با این حال تست ترکیب واقعی قالب و افزونه‌های سایت شما ضروری است. شبیه‌ساز، بررسی قانون را آسان می‌کند و تست نهایی مسیر خرید نیز تعامل اجزا را مشخص می‌کند.

از راهنما تا اجرا

کدام مسیر برای کسب‌وکار شما مناسب است؟

اپلیکیشن، CRM یا Backend اختصاصی

IranNet Geo

برای دادهٔ مکانی مستقل از وردپرس، از معرفی سرویس Geo و راهنمای اتصال API شروع کنید.

برای دریافت راهنمایی دقیق، در درخواست خود این چهار مورد را بنویسید: نوع سایت و Checkout، شهرها یا شعاع خدمت، استثناهای محصول و مدل هزینهٔ ارسال. اگر تیم توسعه دارید، فناوری Backend و برآورد تعداد دفعات انتخاب آدرس را هم اضافه کنید. با این اطلاعات می‌توان مشخص کرد افزونه کافی است یا به اتصال اختصاصی API نیاز دارید.

مسیر فعلی شروع همکاری، ورود به پنل مشتریان ایران‌نت است. انتشار افزونه در مخزن رسمی وردپرس در برنامه قرار دارد؛ تا انتشار، لینک دریافت از مخزن ارائه نشده است.

FAQ

پرسش‌های متداول نقشه و ارسال منطقه‌ای

آیا افزونه انتخاب آدرس روی نقشه، ارسال منطقه‌ای را هم مدیریت می‌کند؟

همهٔ انتخابگرهای نقشه چنین قابلیتی ندارند. IranNet Location علاوه بر انتخاب و نگهداری موقعیت، آن را به دسترسی فروشگاه، دسته‌بندی و محصول و همچنین روش و هزینهٔ ارسال در ووکامرس متصل می‌کند.

برای فروش فقط در یک شهر یا شعاع مشخص چه چیزی لازم است؟

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

آیا Geo API فقط برای وردپرس است؟

خیر. IranNet Geo زیرساخت مستقل مکانی است و می‌تواند مستقیماً در نرم‌افزار، CRM یا اپلیکیشن اختصاصی مصرف شود. IranNet Location مصرف‌کنندهٔ این سرویس در اکوسیستم وردپرس است.

آیا فاصلهٔ افزونه همان مسافت مسیر پیک است؟

خیر. فاصلهٔ فعلی مستقیم و جغرافیایی است. مسافت خیابان، زمان رسیدن، مسیریابی و بهینه‌سازی مسیر را نباید از آن نتیجه گرفت.

آیا Secret سرویس را می‌توان داخل JavaScript گذاشت؟

Secret دائمی باید روی Backend نگهداری شود. Backend توکن کوتاه‌عمر با دسترسی مجاز دریافت می‌کند و کلاینت با آن به قابلیت‌های سرویس متصل می‌شود.

برای شروع و دریافت افزونه از کجا اقدام کنیم؟

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

موقعیت را وارد منطق کسب‌وکار کنید

فروشگاه وردپرسی یا نرم‌افزار اختصاصی؛ مسیر اتصال شما روشن است.

برای افزونه Location، درخواست نصب و اتصال بدهید. برای محصول اختصاصی، دسترسی آزمایشی Geo و قرارداد API را درخواست کنید. هر دو مسیر فعلاً از ورود به پنل مشتریان ایران‌نت آغاز می‌شوند.