sajad.azتوسعه وب و نرم‌افزارگفت‌وگو درباره پروژه ←
→ یادداشت‌ها ووکامرس · اتصال حسابداری

اتصال سفارش‌های ووکامرس به نرم‌افزار حسابداری؛ مسیر داده و خطاها

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

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

برای مراحل دریافت کالا و تصمیم مالی، راهنمای مرجوعی و بازپرداخت جزئی را ببینید.

برای تشخیص اختلاف پرداخت و سفارش پیش از ثبت سند، راهنمای تأیید پرداخت ووکامرس را ببینید.

اول مشخص کنید چه رویدادی سند می‌سازد

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

مسیر داده را فیلد به فیلد بنویسید

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

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

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

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

ثبت سند باید تکرار امن داشته باشد

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

اگر حسابداری سند را ساخت اما پاسخ نرسید چه؟

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

لغو، مرجوعی و ویرایش را از سفارش اولیه جدا کنید

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

بازپرداخت جزئی را فقط از وضعیت سفارش تشخیص ندهید

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

Order Refunds API برای هر بازپرداخت شناسهٔ مستقل دارد. کلید عملیات برگشت را با شناسهٔ فروشگاه، سفارش و بازپرداخت تعریف کنید تا دو برگشت متفاوت به اشتباه یکی نشوند. ارتباط سند برگشت با فروش اولیه، اثر بر مالیات و حمل، و تأیید مسئول مالی را جدا مشخص کنید. ثبت سند مالی، برگشت وجه و بازگشت فیزیکی کالا سه نتیجهٔ جدا هستند؛ موفقیت یکی دلیل انجام دو مورد دیگر نیست.

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

خطا باید قابل مشاهده و قابل اصلاح باشد

تطبیق دوره‌ای، خطاهای ساکت را پیدا می‌کند

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

مثال فرضی یک جریان قابل آزمون

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

چهار آزمون پذیرش قبل از انتقال سفارش واقعی

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

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

چک‌لیست قبل از برآورد توسعه

منابع فنی

مستندات رسمی در ۲۰۲۶/۱۰/۰۴ بازبینی شدند؛ قابلیت‌های API را با نسخهٔ نصب‌شدهٔ فروشگاه و نرم‌افزار مقصد تطبیق دهید.

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

شرح مسئلهٔ اتصال را بفرستید