قم بزيادة quote_id يدويًا
-
13-12-2019 - |
سؤال
أواجه مشكلات تتعلق بمعاملة الدفع ببطاقة الائتمان وأنا متأكد من أن quote_id هو السبب وراء ذلك.المشكلة هي أنني لا أعرف كيفية زيادة quote_id يدويًا لمعرفة ما إذا كنت على صواب أم على خطأ.
المحلول 2
أولاً على الإطلاق، كانت المشكلة التي كنت أواجهها هي الحصول على إجابة "تم إحباطها"، وكان السبب هو أنه تم إرسال حقل واحد دائمًا بنفس القيمة، وكانت تلك القيمة هي معرف الطلب (وهو في الواقع quote_id لأن معرف الطلب لم يتم تم إنشاؤه في تلك المرحلة)، وهو أمر محظور لأنه حقل فريد في قاعدة البيانات الخاصة بهم.لا يقوم Magento أبدًا بإنشاء عرض أسعار جديد لمستخدم واحد حتى تكتمل معاملته الحالية (أو عند إنشاء جلسة أخرى، لست متأكدًا بعد)، يتم إرسال quote_id (كمعرف طلب) بنفس القيمة لمستخدم واحد، مرارًا وتكرارًا مرة أخرى لذلك يتم إحباط كل معاملة.
الحل:فقط قم بإلغاء تنشيط عرض الأسعار الحالي عندما لا تجيب بوابة بطاقة الائتمان بالسلسلة "تمت الموافقة عليه"، في sales_flat_quote
مجموعة للتو is_active
إلى 0، لذلك ستقدم Magento للمستخدم عرض أسعار جديدًا تمامًا.تكمن المشكلة في أن كل شيء في سلة التسوق سيفقده المستخدم (لا يزال السجل موجودًا، ولكن لن يتمكن المستخدم من الوصول إليه بعد الآن)، لذلك سيتعين على Magento استنساخ الاقتباس، ثم إلغاء تنشيط التيار وحفظ كليهما، سيكون الاقتباس المستنسخ الآن هو الاقتباس الحالي ولكن مع مختلف quote_id
.
// get the current quote
$current_quote = Mage::getModel('sales/quote')->load(23);
// create a new one
$cloned_quote = Mage::getModel('sales/quote');
// copy the content of the current one into the new one
$cloned_quote->merge($current_quote);
// deactive the current quote
$current_quote->setIsActive(false);
// save the cloned quote
$cloned_quote->collectTotals()->save();
// and save the changes of the current quote
$current_quote->save();
// now the current save is inactive
// and the cloned one is the "new" current quote
تم أخذ الحل من هنا كيفية نسخ عرض أسعار واحد (عناصر سلة التسوق فقط) إلى عرض أسعار آخر (العناصر فقط)
الآن الخطوة الأخيرة (أو ربما الأولى) هي زيادة quote_id
يدويا، لماذا؟تحتوي بوابة بطاقة الائتمان بالفعل على الكثير من معرفات الطلبات المسجلة في هذا المتجر الإلكتروني، 149 على وجه الدقة (باستخدام Magento 1.7، بالمناسبة).لقد قمت بترحيل كل شيء تقريبًا إلى Magento 1.9، ولكن مع قاعدة بيانات جديدة تمامًا، تم ضبط عروض الأسعار على الصفر، لذلك سيتم رفض عرض الأسعار الأول الذي تم إنشاؤه من بوابة cc.هذا هو الحل:
ALTER TABLE sales_flat_quote AUTO_INCREMENT = 149;
لذلك، في الأساس هذا يلخص الحل لمشكلتي.نأمل أن يكون هذا مفيدا لشخص آخر.
نصائح أخرى
أولاً
لا يمكنك القيام بالزيادة يدويًا quote_id
منذ أن تم ضبطه على auto increment
في قاعدة البيانات منذ ذلك الحين primary key
من الطاولة.
لذلك عندما يتم إنشاء أي اقتباس، quote_id
يتم إنشاؤه تلقائيًا لأنه زيادة تلقائية ويجب أن يكون فريدًا طوال الوقت وفقًا لذلك sql
قاعدة.
لمشكلتك
إذا كان لديك مشكلة مع credit card payment
ثم يجب عليك تصحيح الأخطاء payment
قسم.إذا كنت تستخدم أي ملحق خارجي لنظام الدفع الخاص بك، فيرجى الاتصال بهم.وإلا فيجب على الماجنتو التعامل بشكل افتراضي مع جميع المدفوعات دون أي خطأ.