بلاگ همرانیک معماری و یکپارچه‌سازی ۴ دقیقه

اتصال درگاه و وب‌هوک سفارش فروشگاه؛ کی فروشگاه آماده به توسعه اختصاصی نیاز دارد؟

پرداخت وقتی تمام می‌شود که وضعیت سفارش از وب‌هوک درست بیاید—نه فقط از برگشت کاربر به سایت. اگر استثناء و مغایرت زیاد شود، فروشگاه آماده دیگر کافی نیست.

کارتخوان کنار لپ‌تاپ صف سفارش؛ فلش رویداد وب‌هوک پرداخت به وضعیت سفارش

در فروشگاه، پرداخت وقتی «تمام» است که وضعیت سفارش با رویداد درگاه یکی باشد—نه فقط وقتی کاربر به صفحهٔ تشکر برگشته. اتصال درگاه و وب‌هوک سفارش دقیقاً همان نقطه است که فروشگاه آماده یا باید سفارشی شود.

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

مرز مهم مقاله

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

چرا برگشت کاربر به سایت برای وضعیت سفارش کافی نیست؟

کاربر ممکن است پرداخت را تمام کند و قبل از برگشت مرورگر را ببندد. یا شبکه قطع شود. منبع حقیقت باید رویداد سمت درگاه (وب‌هوک/کال‌بک) باشد، با تأیید امضا و ثبت امن.

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

نشانه‌هایی که فروشگاه آماده دیگر کافی نیست

اگر این‌ها تکرار شوند، توسعه اختصاصی معمولاً ارزان‌تر از دور زدن مداوم پلاگین است:

۱. استثناء زیاد

وضعیت‌های میانی پیچیده

پیش‌پرداخت، پرداخت در محل، چندقسطی یا چنددرگاهی که پلاگین پوشش نمی‌دهد.

۲. مغایرت روزانه

گزارش درگاه ≠ گزارش فروشگاه

تیم مالی هر روز دستی تطبیق می‌دهد؛ علامت ضعف ایدمپوتنسی و لاگ رویداد است.

۳. موجودی و انبار

رزرو و آزادسازی نادرست

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

۴. امنیت و حسابرسی

لاگ قابل دفاع نیست

برای اختلاف مشتری باید زنجیرهٔ رویداد قابل ارائه باشد—نه اسکرین چت پشتیبانی.

حداقل‌های یک اتصال درست

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

برای مسیرهای حساس، صفحه طراحی API و وب‌سرویس همرانیک و نکات امنیت اپلیکیشن تحت وب را جدی بگیرید.

یک روز واقعی عملیات: از پرداخت تا موجودی

صبح مالی گزارش درگاه را با فروشگاه تطبیق می‌دهد و چند سفارش «پرداخت‌شده در درگاه / در انتظار در فروشگاه» پیدا می‌کند. پشتیبانی باید دستی وضعیت را عوض کند؛ انبار یا کالا را آزاد نکرده یا برعکس رزرو اضافه دارد. این دقیقاً جایی است که اتصال درگاه و وب‌هوک سفارش از پلاگین آماده جلو می‌زند.

منبع حقیقت باید رویداد تأییدشدهٔ درگاه باشد، با ایدمپوتنسی: یک پرداخت دو بار سفارش را تکمیل نکند. OWASP API Security Top 10 یادآوری می‌کند احراز، مدیریت خطا و عدم اعتماد به ورودی کلاینت بخشی از طراحی است—نه کار پایانی. برای بسترهای وردپرسی، WooCommerce REST API مسیر اتصال سفارش و وضعیت را نشان می‌دهد، اما قواعد کسب‌وکار شما (پیش‌پرداخت، چنددرگاهی، آزادسازی موجودی) اغلب از سقف پلاگین بالاتر می‌رود.

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

سخت‌سازی: امضا، لاگ، و بازیابی

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

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

معیارهایی که نشان می‌دهد اتصال سالم است

سه عدد را هفتگی نگاه کنید: درصد سفارش‌هایی که فقط با وب‌هوک (نه ریدایرکت) تکمیل شده‌اند، تعداد رویدادهای تکراری که ایدمپوتنسی بلعیده، و زمان میانگین رفع مغایرت مالی. اگر مغایرت بیش از چند مورد در روز است، پلاگین دیگر «کافی» نیست.

تست قطع شبکه و پرداخت موفق بدون برگشت کاربر را در UAT اجباری کنید. پذیرش قبل از Go-live فقط برای UI نیست؛ برای پول و موجودی حیاتی‌تر است. مسیر اجرا را می‌توانید با طراحی فروشگاه همرانیک و لایهٔ API هم‌تراز کنید.

چک‌لیست آمادگی: پلاگین یا توسعه اختصاصی؟

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

جمع‌بندی: پرداخت بدون رویداد قابل اتکا، عملیات نیست

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

قبل از بازنویسی کل فروشگاه، همان لایهٔ رویداد و وضعیت را درست کنید؛ اغلب همان کافی است.

اتصال درگاه و وضعیت سفارش را مرور کنیم

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

پرسش‌های پرتکرار

وب‌هوک با ریدایرکت کاربر چه فرقی دارد؟

ریدایرکت به رفتار مرورگر وابسته است. وب‌هوک از سمت درگاه می‌آید و برای ثبت قطعی وضعیت قابل اتکاتر است—به شرط تأیید امضا و ایدمپوتنسی.

آیا همیشه باید فروشگاه را از صفر ساخت؟

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

اولین علامت خطر چیست؟

تطبیق دستی روزانه مالی بین درگاه و فروشگاه، یا سفارش‌های پرداخت‌شده بدون تغییر وضعیت.

امنیت وب‌هوک چه حداقل‌هایی دارد؟

اعتبارسنجی امضا، HTTPS، محدودیت IP در صورت پشتیبانی درگاه، و عدم اعتماد به پارامترهای سمت کلاینت برای تأیید پرداخت.