2012-01-12 13 views
5

私は自分の支払いモデルでgetCheckoutRedirectUrl()メソッドを実装したMagento用の支払いモジュールを実装しています。チェックアウト時にmagento支払いモジュールで現在の注文IDを取得

class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {} 

このメソッドは、単にユーザーのリダイレクト先の決済ゲートウェイのURLを返すことになっているが、私はまた、このURLに現在の注文IDを追加する必要があります。

問題は注文IDを取得できません。私はすでにaccepted here

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 

としてソリューションを試してみましたが、私は空の$の注文IDを取得します。これは私の方法ではうまくいかないようです。呼び出しはエラーを生成しないので、オブジェクトを取得します(たとえば、Mage :: getSingleton( 'checkout/session') - > getQuote() - > getSubtotal()は注文金額を返します)、orderIdは空です。

私も試してみました:

$order = Mage::getModel('sales/order'); 
$order->load(Mage::getSingleton('sales/order')->getLastOrderId()); 
$orderId = $order->getIncrementId(); 

再び空に$の注文IDを返します。

すべてのアイデア?

答えて

15

あなたの質問は、書かれているように、非論理的です。

チェックアウト時に注文IDはです。あなたがチェックアウトしている間、Magentoはsales/quoteオブジェクトを作成します。このオブジェクトは、見積もり項目を追跡するために使用されます。見積もりが完了するまで、sales/orderオブジェクトが見積もりから作成されるまでではありません。

getLastOrderIdが空に戻る理由は、注文が行われていないためです。

あなたが行っているチェックアウトプロセスのポイントで質問を再現し、注文IDを使って何をしようとしているかは、あなたが必要としていない情報。

幸運を祈る!


著者のソリューション:

問題は、まず、チェックアウト/セッションから引用IDを取得することによって解決された:引用IDによって

Mage::getSingleton('checkout/session')->getQuoteId(); 

、次に引用オブジェクト:

$quote = Mage::getModel("sales/quote")->load($quoteId); 
+0

それ私の推測の命令はまだ存在しませんでした、私にこれを明確にしてくれてありがとう、私は命令がすでに以前のdbに保存されていると思った。 しかし、支払いゲートウェイがバックグラウンドで行う個別の独立したリクエスト(クッキーなし)で注文情報(金額など)を取得するための識別子が必要です。おそらく私はセッションIDとセッションを渡すことができたので、見積もり(カート内の注文)にアクセスできますか? – KoviNET

+3

引用符と引用符の項目は、データベースにも保持されます。それは、マゼンタがカートを放棄する方法です。私はあなたが望む情報を得るためにそれらのオブジェクトを使用することに集中するでしょう。 –

+3

私はquoteIdを支払いゲートウェイ(Mage :: getSingleton( 'checkout/session') - > getQuoteId();)に渡して問題を解決し、別のリクエストで見積もりデータを取得することができました:$ quote = Mage: :getModel( "sales/quote") - > load($ quoteId);ありがとう! – KoviNET

関連する問題