2016-03-30 13 views
1

Magento 1.9.xを使用していますので、引用符で注文したいと思います。Magento 1.9.xでプログラムで作成した注文後の注文IDと印刷詳細の取得

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

しかし、私の問題は成功ページです。私は成功のページにredictときだけ this

ようapper私はそれを修正するにはどうすればよい

thisのような順序IDや印刷の詳細を表示されません。

はあなたに 編集ありがとう:

私は、カスタム支払い方法を作成したいです。お客様が自分の方法を選択した場合は、「Place Order」ボタンを削除し、注文レビューでiframeを作成します。

アプリ\設計\フロントエンド\ベース\デフォルト\レイアウト\の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> 

アプリは\ code \ローカル\ MyCompanyの\ MyModuleという\ヘルパー\

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

支払いdata.phpですiframeで完了し、いくつかのパラメータでmymodule応答ページを呼び出します。

アプリは\ code \ローカル\ MyCompanyの\ MyModuleという\コントローラ\ 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(); 
    } 
} 
+0

あなたはセソンを使用してそれを得ることができます –

答えて

0

(そして実際に私は、これはMagentoのは、使用する方法であると信じて)最良の方法は、セッションに注文IDを渡すことです。これを行うには、Mage::getSingleton('core/session')->setIncrementId($order->getIncrementId());を使用してください。 成功ページでは、Mage::getSingleton('core/session')->getIncrementId($order->getIncrementId());を使用して注文の増分IDを取得してください。

+0

それは私の問題の解決ではありません。しかし私は解決策を見つける私のばかげた、私はorderIncrementIdとして設定したので、私は設定しました $ checkoutSession-> setLastOrderId($ order-> getId());解決した。 – SpeedFreak

関連する問題