4

支払いモデルに getCheckoutRedirectUrl() メソッドを実装した Magento 用の独自の支払いモジュールを実装しています。

class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {}

このメソッドは、ユーザーがリダイレクトされる支払いゲートウェイの URL を返すだけのはずですが、現在の orderId もこの URL に追加する必要があります。

問題は、orderId を取得できないことです。ここですでに受け入れられているように解決策を試しました

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

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

私も試しました:

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

これも空の $orderId を返します。

何か案は?

4

1 に答える 1

15

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

チェックアウト時にオーダー ID はありません。チェックアウト中に、Magento は sales/quoteオブジェクトを作成します。このオブジェクトは、見積もりアイテムを追跡するために使用されます。sales/order見積もりからオブジェクトが作成されるのは、チェックアウトが完了するまでではありません。

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

チェックアウト プロセスの現在の時点と、注文 ID を使用して何をしようとしているのかについて質問を言い換えると、誰かが、あなたが必要としているのを知らない情報を思いつくのに役立つ場合があります。

幸運を!


著者の解決策:

この問題は、最初にチェックアウト/セッションから見積もり ID を取得することで解決されました。

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

次に、引用 ID でオブジェクトを引用します。

$quote = Mage::getModel("sales/quote")->load($quoteId); 
于 2012-01-12T22:17:14.310 に答える