Kami menggunakan Magento EE 1.13.0.2 dengan metode pembayaran Standar Pembayaran Situs Web PayPal . Sayangnya tidak mungkin untuk menetapkan status pesanan untuk pesanan PayPal berbayar di back-end.
Kita perlu mengatur status pesanan khusus ketika pesanan telah berhasil dibayar (dan tidak sebagian). Tutorial untuk mengubah status pesanan PayPal tampaknya sudah ketinggalan zaman, hack yang salah atau jelek.
Dari apa yang saya kumpulkan:
- pembaruan pembayaran akan ditangani oleh PayPal IPN.
- Ada metode yang
Mage_Paypal_Model_Ipn::_registerPaymentCapture()
bertanggung jawab untuk "Memproses pembayaran yang diselesaikan (baik penuh atau sebagian)". - Dalam
Mage_Paypal_Model_Ipn::_registerTransaction()
permintaan dari PayPal dianalisis dan status pembayaran dibandingkan denganMage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED
.
Sejujurnya saya tidak yakin apa yang harus dilakukan dengan informasi ini. Saya dapat menulis ulang Mage_Paypal_Model_Ipn::_registerTransaction()
dan menambahkan kode saya:
// paid
case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
$this->_registerPaymentCapture(true);
// my code here
break;
Tentu saja pengamat acara (mis. Untuk salah satu acara atau acara acara negara) akan jauh lebih baik tetapi saya tidak yakin apakah ada cara yang dapat diandalkan 100% untuk menangkap peristiwa satu kali itu ketika pesanan dibayar sepenuhnya melalui PayPal .
Ada ide?
Memperbarui
Kami memilih untuk mengubah aliran status pesanan kami dan tidak perlu mengubah status lagi. Saya akan membiarkan pertanyaan terbuka untuk beberapa waktu jika seseorang ingin menjawabnya.
sumber
Saya berakhir dengan solusi lain. Setelah berjuang dengan masalah ini selama beberapa jam, saya menyadari bahwa dalam kasus khusus saya, tidak masalah jika hanya pesanan PayPal yang mendapatkan status tertentu (ini untuk koneksi ERP, yang mencari pesanan dalam status tertentu).
PayPal tidak menetapkan status pesanan. Itu hanya menangkap pembayaran. Magento mengatur status pesanan ke Pemrosesan (lihat
Mage_Sales_Model_Order_Payment::registerCaptureNotification()
) dan mengatur status ke status default di dalam status itu.Yang harus saya lakukan adalah mengubah status default dalam status Memproses ke status yang saya butuhkan melalui antarmuka admin ( Sistem » Status Pesanan ).
Semoga ini bisa membantu seseorang!
sumber