処理としてのPaypal IPNマーキング注文のMagentoイベント

私はMagento(1.4 CE)の拡張機能を手にしています。これは、注文が支払われた後にトリガーされる必要があります。私は、Paypal IPN(Paypal Standard)がそのことをしたときに誘発するイベントを見つけ出すのが難しいです。

私はsales_order_invoice_save_afterとsales_order_invoice_registerイベントを使ってみましたが、どちらもPaypal IPNレスポンスによって起動されていないようです。

sales_order_save_afterイベントを使用して、注文が「処理中」ステータスになるタイミングを検出しようとしています:

class Lightbulb_Blastramp_Model_Observer {

    public function sendOrderToBlastramp(Varien_Event_Observer $observer) {

        Mage::log('Start' . "\n\n", null, 'blastramp.log');

        $order = $observer->getEvent()->getOrder();//get order data

       //make sure the order is in the processing state
        if ($order->getState() != Mage_Sales_Model_Order::STATE_PROCESSING) {
            Mage::log('Not processing, return.' . "\n\n", null, 'blastramp.log');
            return $this;
        }
       //order has reached "processing" state, do stuff...
    }
}

ログファイルから、注文が最初に「支払い保留中」状態で作成されたが、「処理中」状態に移行したときにトリガーされないときに、自分のコードがトリガーされることがわかります。 PayPal IPNで設定された注文が処理中の段階に達したときにトリガーするイベントがありますか?

乾杯

3

2 答え

これとしばらくの間苦労した後、私は最終的にMage_Sales_Model_Order_Paymentの_isCaptureFinal($ amount)メソッドをオーバーライドして成功しました。

例えば。

class Lightbulb_Blastramp_Model_Order_Payment extends Mage_Sales_Model_Order_Payment {
    public function _isCaptureFinal($amount) {
       //do things here
        return parent::_isCaptureFinal($amount);
    }
}

This is thanks to the answer to another question: https://stackoverflow.com/a/5024475/602734

うまくいけば、これは誰かを助ける!

2
追加された

誰もが私のようにこの質問に遭遇した場合、これを行うオブザーバーは当初要求したとおりです。

checkout_onepage_controller_success_action

これは単に注文IDを返します。

$order_id = $observer->getData('order_ids');
$order = Mage::getModel('sales/order')->load($order_id);

注文ステータスが「処理中」で、支払いが改善されている(またはされていない)ことがわかります。

1
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com