আমি ঘটনাটি দেখেছি যেখানে অর্ডার দেওয়া হয়, গ্রাহক কার্ডে অর্থ প্রদানের জন্য কোনও অনুমোদন দেওয়া হয়, গ্রাহক একটি আদেশের নিশ্চয়তা ইমেল পান - তবে ম্যাগেন্টোর বা তে কোনও আদেশ বিদ্যমান নেই ।sales_flat_order
sales_flat_order_grid
এখানে পছন্দের অস্ত্রটি হ'ল অ্যাডমিনকে গেটওয়েতে অর্থ প্রদানের শোধ করতে হবে, গ্রাহককে পুনরায় স্থাপন করতে বলুন।
তবে, আমাদের কাছে সমস্ত উদ্ধৃতি, উদ্ধৃতি আইটেম, উদ্ধৃতি প্রদান, উদ্ধৃতি ঠিকানা রয়েছে। তত্ত্বগতভাবে এই আদেশটি বৈধ, সর্বোপরি, আমাদের কাছে অনুমোদন রয়েছে এবং গ্রাহকের একটি আদেশ ইমেল রয়েছে। অর্ডার ইমেল জেনারেশনের পরে ত্রুটিটি ঘটেছিল যা একটি রোলব্যাক (বর্তমানের কার্যকারী তত্ত্ব) তৈরি করে।
স্যান্ডবক্স গেটওয়ে ব্যবহার করে এই উদ্ধৃতিটি রূপান্তর করতে আমি একটি পরীক্ষার এক-অফ স্ক্রিপ্ট তৈরি করেছি। তবে, অর্থ প্রদানের ক্ষেত্রে আমার সমস্যা হচ্ছে। আমি ব্যবহার করার চেষ্টা করেছি checkmo
, free
, authorizenet
, সমস্ত আসতে একই ব্যতিক্রম:
PHP Fatal error: Uncaught exception 'Mage_Core_Exception' with message 'Cannot retrieve payment method instance.' in /var/www/vhosts/magento/app/Mage.php:563
Stack trace:
#0 /var/www/vhosts/magento/app/code/core/Mage/Payment/Model/Info.php(83): Mage::throwException('Cannot retrieve...')
নীচে আমার কোড দেখুন । মতামত স্বাগত।
<?php
//.... stuff
$quote = Mage::getModel('sales/quote')->load(745);
$convert = Mage::getModel('sales/convert_quote');
$order = $convert->toOrder($quote);
$order->addressToOrder($quote->getAddress(),$order);
foreach($quote->getAllItems() as $item){
$orderItem = $convert->itemToOrderItem($item);
if ($item->getParentItem()) {
$orderItem->setParentItem($order->getItemByQuoteItemId($item->getParentItem()->getId()));
}
$order->addItem($orderItem);
}
$data = array(
'method' => 'authorizenet',
'cc_type' => 'VI',
'cc_number' => '4111111111111111',
'cc_exp_month' => '1',
'cc_exp_year' => (date('Y') + 6),
'cc_cid' => '444'
);
$quote->getShippingAddress()->setPaymentMethod('authorizenet');
$quote->getShippingAddress()->setCollectShippingRates(true);
$payment = $quote->getPayment();
$payment->importData($data);
$quote->save();
$payment = $convert->paymentToOrderPayment($quote->getPayment());
$order->setPayment($quote->getPayment());
$message = '[Notice] - Order converted from quote manually';
$order->addStatusToHistory($order->getStatus(), $message);
$order->place();
$order->save();
$quote->setIsActive(false)->save();