PayPalウェブペイメントスタンダードの完全な支払いにカスタムオーダーステータスを設定しますか?


9

私たちは、使用しているMagentoのEE 1.13.0.2をしてペイパルウェブペイメントスタンダードの支払い方法。残念ながら、バックエンドで有料PayPal注文の注文ステータスを設定することはできません。

注文が部分的にではなく正常に支払われたときに、カスタム注文ステータスを設定する必要があります。PayPal注文ステータスを変更するチュートリアルは、古くなっているか、間違っているか、醜いハッキングのようです。

私が集めたものから:

  • 支払いの更新はPayPal IPNによって処理されます。
  • Mage_Paypal_Model_Ipn::_registerPaymentCapture()「完了した支払いを処理する(全額または一部)」を担当する方法があります。
  • Mage_Paypal_Model_Ipn::_registerTransaction()PayPalからの要求に分析され、支払い状況が比較されますMage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED

正直に言うと、この情報をどうするかわかりません。私は書き換えMage_Paypal_Model_Ipn::_registerTransaction()てコードを追加するだけです:

// paid
case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
    $this->_registerPaymentCapture(true);
    // my code here
    break;

もちろん、イベントオブザーバー(注文または注文状態イベントの1つなど)の方がはるかに優れていますが、PayPalを介して注文が完全に支払われたときに、1回限りのイベントをキャッチする100%信頼できる方法があるかどうかはわかりません。

何か案は?

更新

注文ステータスフローの変更を選択したため、ステータスを変更する必要はありません。誰かが答えたい場合に備えて、質問はしばらく開いておきます。

回答:


2

大きな問題は、ペイパルのワークフロー全体で単一のイベントさえ存在しないことです。

したがって、2つのオプションがあります。

これらのPaypalモデルのいずれかを書き換えます

あなたが言ったように、モデルを書き直し、動作を変更すると、すべてが期待どおりに機能します-うまくいけばまたは...

フックする sales_order_save_before

次に、支払いタイプを確認します\Mage_Paypal_Model_Standard::$_code

protected $_code  = Mage_Paypal_Model_Config::METHOD_WPS;

\Mage_Paypal_Model_Config
-> const METHOD_WPS         = 'paypal_standard';

そして、ステータスが不要なものに変わったら、必要なものに変更します。


Fabianに感謝します。Magento1.xではこれ以上の解決策は得られないでしょう。:-)
マティアスツァイス

0

私は別の解決策に行き着きました。この問題に数時間取り組んだ後、私は特定のケースではPayPal注文のみが特定のステータスを取得することは問題ではないことに気付きました(特定のステータスの注文を検索するERP接続用です)。

PayPalは注文のステータスを設定しません。支払いを受け取るだけです。Magentoは注文の状態を処理中にMage_Sales_Model_Order_Payment::registerCaptureNotification()設定し(を参照)、ステータスをその状態内のデフォルトのステータスに設定します。

私がしなければならなかったのは、Processing状態のデフォルトのステータスを、管理インターフェイス(System » Order Statuses)で必要なステータスに変更することだけでした。

これが誰かを助けることを願っています!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.