कस्टम कन्वर्ट कोट टू ऑर्डर - "भुगतान विधि को पुनः प्राप्त नहीं कर सकता"


10

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

जवाबों:


7

आप आदेश भेज रहे हैं

 $quote->getPayment()

आपका कोड इस तरह दिखना चाहिए

...

$payment = $convert->paymentToOrderPayment($quote->getPayment());

$order->setPayment($payment);

...

आप सही कह रहे हैं - वह यह था। अच्छा निर्णय।
philwinkle

मुझे त्रुटि हो रही है कि PHP Fatal error: Uncaught exception 'Mage_Core_Exception' with message 'The requested Payment Method is not available.' in /var/www/html/app/Mage.php:594मैंने भुगतान विधि सक्षम कर दी है क्योंकि खरीद ऑर्डर बिना भुगतान विधि के शून्य लागत के साथ नया ऑर्डर बनाना चाहता है।
राहुल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.