แปลงใบเสนอราคาแปลงเป็นคำสั่งซื้อแบบกำหนดเอง -“ ไม่สามารถเรียกคืนวิธีการชำระเงินได้”


10

ฉันได้เห็นในโอกาสกรณีที่สั่งซื้อสินค้าวาง, การขออนุมัติจะทำสำหรับการชำระเงินในบัตรของลูกค้าที่ลูกค้าจะได้รับอีเมล์ยืนยันการสั่งซื้อ - แต่เพื่อไม่อยู่ในวีโอไอพีหรือsales_flat_ordersales_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ฉันได้เปิดใช้วิธีการชำระเงินเป็นคำสั่งซื้อและต้องการสร้างคำสั่งซื้อใหม่โดยไม่มีค่าใช้จ่าย
ราหุล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.