Tam PayPal Web Sitesi Ödemeleri için özel sipariş durumu belirle Standart ödeme?


9

Biz kullandığınız Magento EE 1.13.0.2 ile PayPal Web Sitesi Ödemeleri Standart ödeme yöntemi. Maalesef arka uçta ücretli PayPal siparişleri için sipariş durumu ayarlamak mümkün değildir.

Sipariş başarıyla ödendiğinde (kısmi değil) özel bir sipariş durumu ayarlamamız gerekir. PayPal sipariş durumunu değiştirmek için eğiticiler eski, yanlış veya çirkin hackler gibi görünüyor.

Topladığımdan:

  • ödeme güncellemeleri PayPal IPN tarafından gerçekleştirilecektir.
  • Mage_Paypal_Model_Ipn::_registerPaymentCapture()"İşlem tamamlanmış ödeme (tam veya kısmi)" den sorumlu bir yöntem var .
  • In Mage_Paypal_Model_Ipn::_registerTransaction()PayPal talebi analiz edilir ve ödeme durumu ile karşılaştırılır Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED.

Dürüst olmak gerekirse, bu bilgilerle ne yapacağımdan emin değilim. Yeniden yazabilir Mage_Paypal_Model_Ipn::_registerTransaction()ve sadece kodumu ekleyebilirim:

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

Tabii ki bir olay gözlemcisi (örneğin, sipariş veya sipariş durumu olaylarından biri için) çok daha iyi olurdu, ancak sipariş tamamen PayPal ile ödendiğinde bir kerelik bir olayı yakalamak için% 100 güvenilir bir yol olup olmadığından emin değilim .

Herhangi bir fikir?

Güncelleme

Sipariş durumu akışımızı değiştirmeyi seçtik ve artık durumu değiştirmemiz gerekmiyor. Birinin cevap vermek istemesi durumunda soruyu bir süre açık bırakacağım.

Yanıtlar:


2

Büyük sorun, tüm paypal iş akışında tek bir olay bile yok.

Yani iki seçenek var:

Bu Paypal modellerinden herhangi birini yeniden yazın

Söylediğiniz gibi, sadece modeli yeniden yazın, davranışı değiştirin ve her şey beklendiği gibi çalışır - umarım ya da ...

İçine kanca sales_order_save_before

Ardından, aşağıdakilerle \Mage_Paypal_Model_Standard::$_codebirlikte olması gereken ödeme türünü kontrol edersiniz :

protected $_code  = Mage_Paypal_Model_Config::METHOD_WPS;

\Mage_Paypal_Model_Config
-> const METHOD_WPS         = 'paypal_standard';

Ve sonra, durum istemediğiniz duruma değiştirildiğinde, istediğiniz duruma değiştirin.


Teşekkürler Fabian, sanırım Magento 1.x daha iyi bir çözüm elde edemeyiz. :-)
Matthias Zeis

0

Sonunda başka bir çözüm buldum. Bu sorunla birkaç saat uğraştıktan sonra, özel durumumda sadece PayPal siparişlerinin belirli bir statüye sahip olup olmasının önemli olmadığını fark ettim (belirli bir durumda siparişleri arayan bir ERP bağlantısı için).

PayPal siparişin durumunu belirlemiyor. Sadece ödemeyi yakalar. Magento, siparişin durumunu İşleme olarakMage_Sales_Model_Order_Payment::registerCaptureNotification() ayarlar (bkz. ) Ve durumu bu durum içindeki varsayılan duruma ayarlar.

Tüm yapmam gereken, durum içinde varsayılan durumu İşleme arayüzü ( Sistem » Sipariş Durumları ) aracılığıyla ihtiyacım olan duruma değiştirmekti .

Umarım bu birine yardımcı olur!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.