cancel
Showing results for 
Search instead for 
Did you mean: 

How to get order id and print details on success page after order creating programmatically in Magen

How to get order id and print details on success page after order creating programmatically in Magen

Hi Everybody

 

I am using Magento 1.9.x and I would like to create order via quote and I can do that like this:

private function createOrder()
{
    $orderId = $session->getTransactionId();
    $quote = $this->_getCheckout()->getQuote();
    $quote->setReservedOrderId($orderId);
    $quote->collectTotals()->getPayment()->setMethod($this->_getPaymentMethod());
    $quoteId = $quote->getId();
    $service = Mage::getModel('sales/service_quote', $quote);
    $service->submitAll();
    $order = $service->getOrder();
    $order->setStatus('complete');
    $order->save();

   $checkoutSession = Mage::getSingleton('checkout/type_onepage')->getCheckout();

    $checkoutSession->setLastSuccessQuoteId($quoteId);
    $checkoutSession->setLastQuoteId($quoteId);
    $checkoutSession->setLastOrderId($order->getIncrementId());
}

    protected function _getCheckout()
    {
        return Mage::getSingleton('checkout/session');
    }

    protected function _getPaymentMethod()
    {
        return $this->_getCheckout()->getQuote()->getPayment()->getMethod();
    }

But my problem is success page. When I redict to success page just apper like

mySuccess

 

Not appear order id or print detail like 

 

def

 

How can I fix it.

 

Edit:

I want to create custom payment method. If customer choose my method I delete "Place Order" button and I create iframe at order review.

app\design\frontend\base\default\layout\mymodule.xml

<?xml version="1.0"?>
<layout version="0.1.0">
<checkout_onepage_review>
<reference name="checkout.onepage.review.button">
<action method="setTemplate">
<template helper="mymodule/data/getReviewButtonTemplate">
<name>mymodule/onepage/iframe.phtml</name>
<block>checkout.onepage.review.button</block>
</template>
</action>
</reference>
</checkout_onepage_review>
</layout>

app\code\local\Mycompany\Mymodule\Helper\data.php

 

<?php

class Mycompany_Mymodules_Helper_Data extends Mage_Core_Helper_Abstract
{


public function getHostedUrl()
{
//get iframe url from soap
}

public function GetHostedPaymentProcessStatusResult()
{
//check from soap responce is correct
}

public function getReviewButtonTemplate($name, $block)
{
$paymentcode = $this->_getPaymentMethod();

if ($paymentcode == 'mymodule')
return $name;
if ($blockObject = Mage::getSingleton('core/layout')->getBlock($block))
return $blockObject->getTemplate();
return '';
}
public function getConfigData($configName)
{
return Mage::getStoreConfig('payment/mymodule/' . $configName, Mage::app()->getStore());
}
protected function _getCheckout()
{
return Mage::getSingleton('checkout/session');
}

protected function _getPaymentMethod()
{
return $this->_getCheckout()->getQuote()->getPayment()->getMethod();
}
}

Payment is complete at in iframe and call mymodule responce page with some parameter.

app\code\local\Mycompany\Mymodule\controllers\PaymentController.php

<?php

class Mycompany_Mymodule_PaymentController extends Mage_Core_Controller_Front_Action
{
public function responseAction()
{
$session = Mage::getSingleton('core/session');
$transactionId = $_GET['TransactionId'];
$orderId = $session->getTransactionId();
$mymoduleTransId = $_GET['MymoduleTransId'];
$helper = Mage::helper('mymodule');
if ($_GET['Result'] == 'PaymentOk' && $transactionId == $orderId) {
$quote = Mage::getSingleton('checkout/session')->getQuote();
$result = $helper->getHostedPaymentProcessStatus($transactionId, $mymoduleTransId);
if ($result) {
$result = $result->GetHostedPaymentProcessStatusResult;
$resultCode = $result->ResultCode;
if ($resultCode === "Success") {
$quote->setReservedOrderId($orderId);
$quoteId = $quote->getId();

$quote->collectTotals()->getPayment()->setMethod($this->_getPaymentMethod());

$service = Mage::getModel('sales/service_quote', $quote);
$service->submitAll();
$order = $service->getOrder();
$order->setStatus(Mage::helper('mymodule')->getConfigData('after_pay_status'));
$order->save();

$checkoutSession = Mage::getSingleton('checkout/type_onepage')->getCheckout();

$checkoutSession->setLastSuccessQuoteId($quoteId);
$checkoutSession->setLastQuoteId($quoteId);
$checkoutSession->setLastOrderId($order->getIncrementId());

$this->_clearQuote($quoteId);
$returnUrl = Mage::getUrl('checkout/onepage/success', array('_secure' => true));
} else
$returnUrl = Mage::getUrl('checkout/onepage/failure', array('_secure' => true));
} else {
$returnUrl = Mage::getUrl('checkout/onepage/failure', array('_secure' => true));
}
echo '<script> window.top.location.href = "' . $returnUrl . '";</script>';
}
}

protected function _getCheckout()
{
return Mage::getSingleton('checkout/session');
}

protected function _getPaymentMethod()
{
return $this->_getCheckout()->getQuote()->getPayment()->getMethod();
}

protected function _clearQuote($quoteID)
{
$quote = Mage::getModel("sales/quote")->load($quoteID);
$quote->setIsActive(0)->save();
$quote->delete();
$quote->save();

$cart = Mage::getSingleton('checkout/cart');
$quoteItems = Mage::getSingleton('checkout/session')
->getQuote()
->getItemsCollection();
foreach ($quoteItems as $item) {
$cart->removeItem($item->getId());
}
$cart->save();
}
}

 

1 REPLY 1

Re: How to get order id and print details on success page after order creating programmatically in M