Czasami widziałem przypadek złożenia zamówienia, autoryzacja płatności na karcie klienta, klient otrzymuje wiadomość e - mail z potwierdzeniem zamówienia - ale w Magento lub nie ma żadnego zamówienia .sales_flat_order
sales_flat_order_grid
Broń tutaj polega na tym, że administrator musi unieważnić płatność w bramie, poprosić klienta o zmianę miejsca.
Mamy jednak wszystkie wyceny, przedmioty wyceny, wycenę płatności, adres wyceny. Teoretycznie to zamówienie jest ważne, w końcu mamy autoryzację, a klient ma e-mail z zamówieniem. Błąd wystąpił jakiś czas po wygenerowaniu wiadomości e-mail zamówienia, co spowodowało wycofanie (obecna działająca teoria).
Stworzyłem testowy skrypt jednorazowy, aby przekonwertować ten cytat za pomocą bramy piaskownicy. Mam jednak problemy z wygenerowaniem płatności. Próbowałem do użytku checkmo
, free
, authorizenet
, wszyscy zwracają ten sam wyjątek:
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...')
Zobacz mój kod poniżej . Informacje zwrotne mile widziane.
<?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();
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
Pojawia się błąd. Włączyłem metodę płatności jako zamówienie zakupu i chcę utworzyć nowe zamówienie o zerowym koszcie bez metody płatności.