1

独自のサードパーティゲートウェイを実装するためにmagentoのコードの一部を変更できましたが、誰かが注文を行ったときに取引の「購入」カウントが正しくないという問題があります。saveOrderActionが実行されるとカウントが直接増加します(成功または失敗する前)ページ-失敗すると、カウントは再び減少します、これは正しいです-しかし、成功ページの前に増加させたくありません)この段階では、注文はシステムに「処理中」として保存されます

私が持っていないコードは基本的に次のとおりです。「saveOrderAction」には、選択した支払い方法をチェックする条件があります。

サードパーティの場合は、サードパーティのページにリダイレクトし、サードパーティのページからmagentoに戻って「successAction」または「failureAction」(どちらの場合でも)にいくつかのパラメータを渡します。

次に、それに応じて注文を保存し、その状態を完了として設定します。

私がやりたいのは、支払いが成功した後に「購入した」カウントを増やすことだけです。誰かが「購入した」がmagentoでどのように実装されるかのロジックの洞察を私に与えることができれば

これは、model mage \ checkout \ model \ type \ onepage.phpの関数saveOrder()で発生することを私は知っています:

$service = Mage::getModel('sales/service_quote', $this->getQuote());
$service->submitAll(); 

しかし、submitAllのどこで発生しているのかわかりません...最初は注文を保存しないか、カウントされない別の状態に設定するか、何がわからないのでしょうか。

どんな助け/提案も大歓迎です!ありがとう :)

4

1 に答える 1

0

これを行う1つの方法は、問題を回避できる可能性がありますが、ニーズに一致するイベントにオブザーバーを追加することです。特に、Mage_Sales_Model_Order_Paymentには、適切な可能性のあるいくつかのイベントがあります。

sales_order_payment_save_after
sales_order_payment_capture
sales_order_payment_pay
... several more ...

これらのイベントを見ると、そのうちの1つが販売数に追加するのに妥当な時間であることがわかる場合があります。同様に、注文をキャンセルまたは返金するためのイベントがそのオブジェクトにあり、必要に応じて売上を減らすために使用できます。

Magentoが常にそのアクションを私が想定している方法で使用することを保証できないため、私は通常、このタイプの動作のコントローラーアクションにフックすることを避けます。

とにかく、それが役に立ったかどうか、または同じ質問がある場合はお知らせください。お役に立てば幸いです。

ありがとう、ジョー

于 2011-04-25T16:10:17.570 に答える