Chuyển đổi tùy chỉnh Trích dẫn theo đơn đặt hàng - Có thể truy xuất phương thức thanh toán


10

Đôi khi tôi đã thấy một trường hợp đặt hàng, ủy quyền được thực hiện để thanh toán trên thẻ khách hàng, khách hàng nhận được email xác nhận đơn hàng - nhưng không có đơn hàng nào tồn tại trong Magento sales_flat_orderhay sales_flat_order_grid.

Vũ khí được lựa chọn ở đây là yêu cầu quản trị viên vô hiệu hóa khoản thanh toán trong cổng, yêu cầu khách hàng đặt lại.

Tuy nhiên, chúng tôi có tất cả các báo giá, báo giá, báo giá thanh toán, địa chỉ báo giá. Về lý thuyết , đơn hàng này là hợp lệ, sau tất cả, chúng tôi có ủy quyền và khách hàng có email đặt hàng. Lỗi xảy ra đôi khi sau khi tạo email đặt hàng gây ra sự quay trở lại (lý thuyết làm việc hiện tại).

Tôi đã tạo một kịch bản thử nghiệm một lần để chuyển đổi trích dẫn này bằng cách sử dụng cổng hộp cát. Tuy nhiên, tôi gặp khó khăn trong việc tạo thanh toán. Tôi đã cố gắng để sử dụng checkmo, free, authorizenet, tất cả trở lại cùng một ngoại lệ:

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

Xem mã của tôi dưới đây . Phản hồi hoan nghênh.

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

Câu trả lời:


7

Bạn đang gửi đơn đặt hàng

 $quote->getPayment()

mã của bạn sẽ trông như thế này

...

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

$order->setPayment($payment);

...

Bạn nói đúng - chỉ vậy thôi. Cuộc gọi tốt
philwinkle

Tôi đang gặp lỗi PHP Fatal error: Uncaught exception 'Mage_Core_Exception' with message 'The requested Payment Method is not available.' in /var/www/html/app/Mage.php:594Tôi đã kích hoạt phương thức thanh toán là Đơn đặt hàng và muốn tạo đơn hàng mới với chi phí bằng 0 mà không có phương thức thanh toán.
Raul
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.