He visto en ocasiones el caso en que se realiza un pedido, se realiza una autorización para el pago en la tarjeta del cliente , el cliente recibe un correo electrónico de confirmación del pedido , pero no existe ningún pedido en Magento's sales_flat_order
o sales_flat_order_grid
.
El arma de elección aquí es requerir que el administrador anule el pago en la puerta de enlace, solicite al cliente que lo reemplace.
Sin embargo, tenemos todos los presupuestos, artículos de cotización, pago de cotización, dirección de cotización. En teoría, este pedido es válido, después de todo, tenemos autorización y el cliente tiene un correo electrónico de pedido. El error ocurrió en algún momento después de la generación del correo electrónico del pedido que causó una reversión (la teoría de trabajo actual).
He creado un script de prueba único para convertir esta cita usando una puerta de enlace de sandbox. Sin embargo, tengo problemas para generar el pago. He tratado de uso checkmo
, free
, authorizenet
, toda devolver la misma excepció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...')
Ver mi código a continuación . Comentarios bienvenidos.
<?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
He habilitado el método de pago como pedido de compra y deseo crear un nuevo pedido con costo cero sin método de pago.