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

1- سبد خرید

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

جداولی که با sales_flat_quote شروع می‌شوند، اطلاعات مربوط به سبد خرید را در خود ذخیره می‌کنند. یعد از تکمیل سفارش این اطلاعات به جداولی با پیشوند sales_flat_order منتقل می‌شوند. به عبارتی ممکن است تعداد زیادی سبد خرید در جدول quote توسط کاربران ایجاد شود، اما تنها آنهایی که نهایی می‌شوند به عنوان سفارش ثبت شده و به جدول order منتقل می‌شوند. ارتباط quote و order در تصویر زیر نشان داده شده است.


برای دسترسی به این اطلاعات توابع زیر در مجنتو وجود دارند:

Mage::getSingleton('checkout/session');

جلسه (Session) مربوط به روال خرید (Checkout) اطلاعاتی در مورد آخرین Quote فعال (سبد خرید فعلی)، آخرین Order ایجاد شده، آخرین Quote تبدیل شده به Order را در خود نگه داشته است.

لذا برای دسترسی به آخرین سفارش ثبت شده کاربر جاری می‌توان از کد زیر استفاده کرد:

try {
  $session = Mage::getSingleton('checkout/session');
  $order = Mage::getModel('sales/order');
  $order->loadByIncrementId($session->getLastRealOrderId());
  if (!$order->getId()) {
    Mage::throwException('No order for processing found');
  }
} catch (Mage_Core_Exception $e) {
  $this->_getCheckout()->addError($e->getMessage());
} catch (Exception $e) {
  Mage::logException($e);
}

به این صورت که از Session مربوط به کاربر که شامل اطلاعاتی مشابه زیر است، شناسه increment_id مربوط به آخرین سفارش را پیاده کرده و با استفاده از آن Order را پیدا می‌کنیم.

[quote_id_1] => 365
[last_quote_id] => 364
[last_success_quote_id] => 364
[last_billing_agreement_id] =>
[redirect_url] => http://bahar-jewelry.ir/pasargad/index/redirect/
[last_order_id] => 56
[last_real_order_id] => 400000003

توجه کنید quote_id_1 به این دلیل وجود دارد که هنوز Session فعلی پاک نشده و کاربر سبد خرید خود را دوباره پر کرده است، این کار وظیفه ماژول پرداخت است.

$session->clear();

 

دیدگاه‌ها

تصویر Yekta

Yekta (تایید نشده)

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

تو سایت های پربازدید دروپالی بیشتر مشکل با کدوم بخش هست ؟ به نظر من ، دیتابس خیلی مهمه.

تصویر محمدعلی اکبری

محمدعلی اکبری

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

تصویر غزاله

غزاله (تایید نشده)

سلام، من تازه با مجنتو دارم کار میکنم کلا تنظیمات مربوط به سبد خرید برای فروشگاه در ایران به چه ترتیبه چه جوری این روش ارسال و روش پرداخت رو میشه بومی کرد اگر پاسخمو بدین بسیار ممنون و سپاسگزار میشم چون بدجوری گیر کردم

تصویر مرصاد

مرصاد (تایید نشده)

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

تصویر vahid

vahid (تایید نشده)

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

افزودن نظر جدید