मैं इस अवसर पर इस मामले में जहां एक आदेश रखा गया है देखा है, एक प्राधिकरण ग्राहक कार्ड पर भुगतान के लिए किया जाता है, ग्राहक एक आदेश पुष्टिकरण ईमेल प्राप्त करता है - लेकिन कोई आदेश मौजूद Magento के में 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();