ตั้งค่าสถานะคำสั่งซื้อที่กำหนดเองสำหรับการชำระเงินผ่านเว็บไซต์ PayPal อย่างสมบูรณ์การชำระเงินมาตรฐานหรือไม่


9

เราใช้Magento EE 1.13.0.2กับวิธีการชำระเงินผ่านเว็บไซต์ PayPal แบบมาตรฐาน น่าเสียดายที่ไม่สามารถกำหนดสถานะการสั่งซื้อสำหรับคำสั่งซื้อ 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;

แน่นอนว่าผู้สังเกตการณ์เหตุการณ์ (เช่นสำหรับหนึ่งในคำสั่งซื้อหรือเหตุการณ์สถานะคำสั่งซื้อ) จะดีกว่า แต่ฉันไม่แน่ใจว่ามีวิธีที่เชื่อถือได้ 100% ในการจับเหตุการณ์ครั้งเดียวเมื่อคำสั่งซื้อได้รับการชำระเงินอย่างสมบูรณ์ผ่าน PayPal .

ความคิดใด ๆ

ปรับปรุง

เราเลือกที่จะแก้ไขขั้นตอนการสั่งซื้อและไม่จำเป็นต้องแก้ไขสถานะอีกต่อไป ฉันจะเปิดคำถามทิ้งไว้ซักพักเผื่อว่าใครบางคนต้องการที่จะตอบคำถาม

คำตอบ:


2

ปัญหาใหญ่คือไม่มีแม้แต่เหตุการณ์เดียวในกระบวนการทำงานของ paypal ทั้งหมด

ดังนั้นจึงมีสองตัวเลือก:

เขียนซ้ำโมเดล 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';

จากนั้นเมื่อสถานะเปลี่ยนเป็นสถานะที่คุณไม่ต้องการให้เปลี่ยนเป็นสถานะที่คุณต้องการ


ขอบคุณเฟเบียนฉันเดาว่าเราจะไม่ได้คำตอบที่ดีกว่าใน Magento 1.x :-)
Matthias Zeis

0

ฉันลงเอยด้วยวิธีอื่น หลังจากที่ต้องดิ้นรนกับปัญหานี้สองสามชั่วโมงฉันก็รู้ว่าในกรณีของฉันมันไม่สำคัญว่าจะมีเพียงคำสั่งซื้อของ PayPal เท่านั้นที่มีสถานะเฉพาะ (สำหรับการเชื่อมต่อ ERP ซึ่งค้นหาคำสั่งซื้อในสถานะเฉพาะ)

PayPal ไม่ได้ตั้งสถานะของคำสั่งซื้อ มันแค่จับการจ่ายเงิน วีโอไอพีตั้งค่าสถานะของคำสั่งเป็นประมวลผล (ดูMage_Sales_Model_Order_Payment::registerCaptureNotification()) และตั้งสถานะเป็นสถานะเริ่มต้นภายในสถานะนั้น

สิ่งที่ฉันต้องทำคือเปลี่ยนสถานะเริ่มต้นภายในสถานะการประมวลผลเป็นสถานะที่ฉันต้องการผ่านส่วนต่อประสานผู้ดูแลระบบ ( ระบบ » สถานะคำสั่งซื้อ )

หวังว่านี่จะช่วยใครซักคน!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.