অর্ডারে কাস্টম রূপান্তর মূল্য - "অর্থ প্রদানের পদ্ধতি উদাহরণ পুনরুদ্ধার করতে পারবেন না"


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

...

আপনি ঠিক বলেছেন - এটি ছিল। ভাল কল.
ফিলিওঙ্কল

আমি ত্রুটি 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.