设置自定义订单状态以完成贝宝网站付款标准付款吗?


9

我们将Magento EE 1.13.0.2PayPal网站付款标准付款方式一起使用。不幸的是,无法在后端为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;

当然,事件观察者(例如订单或订单状态事件之一)会好得多,但是我不确定在通过PayPal完全支付订单时是否存在100%可靠的方式来捕获一次事件。

有任何想法吗?

更新资料

我们选择修改订单状态流程,而无需再修改状态。如果有人想回答这个问题,我将开放一段时间。

Answers:


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,我想我们将无法在Magento 1.x中获得更好的解决方案。:-)
Matthias Zeis 2014年

0

我最终得到了另一个解决方案。经过几个小时的努力后,我意识到在我的特殊情况下,仅PayPal订单是否处于特定状态并不重要(这是针对ERP连接的,它搜索处于特定状态的订单)。

PayPal不会设置订单状态。它只是捕获付款。Magento将订单的状态设置为“正在处理”(请参阅参考资料Mage_Sales_Model_Order_Payment::registerCaptureNotification()),并将状态设置为该状态内的默认状态。

我所要做的就是通过管理界面(系统 » 订单状态)将处理状态中的默认状态更改为所需的状态

希望这对某人有帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.