Özel Teklifi Siparişe Dönüştür - “Ödeme yöntemi örneği alınamıyor”


10

Ben, bir yetkilendirme müşteri kartında ödeme için yapılır, zaman zaman sipariş verildikten davayı gördük müşteriye sipariş onayı e-postası alır - ancak hiçbir emir var Magento en bölgesi sales_flat_orderveya sales_flat_order_grid.

Burada tercih edilen silah, yöneticinin ağ geçidindeki ödemeyi geçersiz kılmasını, müşteriden yeniden yerleştirmesini istemektir.

Ancak, biz tüm teklif, teklif öğeleri, teklif ödeme, teklif adresi. Teorik olarak bu sipariş geçerlidir, sonuçta yetkimiz var ve müşterinin sipariş e-postası var. Hata, geri alma işlemine neden olan sipariş e-postası oluşturma işleminden bir süre sonra meydana geldi (mevcut çalışma teorisi).

Bir sanal alan ağ geçidi kullanarak bu teklifi dönüştürmek için bir test bir kerelik komut dosyası oluşturduk. Ancak, ödemeyi oluşturma konusunda sorun yaşıyorum. Ben kullanımına denedim checkmo, free, authorizenet, hepsi aynı istisna dönüş:

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...')

Aşağıdaki koduma bakın . Geribildirim memnuniyetle karşıladı.

<?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();

Yanıtlar:


7

Siparişi gönderiyorsunuz

 $quote->getPayment()

kodun böyle görünmeli

...

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

$order->setPayment($payment);

...

Haklısın - hepsi bu. İyi karar.
philwinkle

Hata alıyorum PHP Fatal error: Uncaught exception 'Mage_Core_Exception' with message 'The requested Payment Method is not available.' in /var/www/html/app/Mage.php:594Satın alma veya ödeme yöntemi olmadan sıfır maliyetle yeni sipariş oluşturmak istediği için ödeme yöntemini etkinleştirdim.
Rahul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.