Đặt trạng thái đơn hàng tùy chỉnh để hoàn thành Thanh toán trang web PayPal Thanh toán tiêu chuẩn?


9

Chúng tôi đang sử dụng Magento EE 1.13.0.2 với phương thức thanh toán Tiêu chuẩn Thanh toán Trang web PayPal . Thật không may, không thể đặt trạng thái đơn hàng cho các đơn đặt hàng PayPal đã thanh toán ở mặt sau.

Chúng ta cần đặt trạng thái đơn hàng tùy chỉnh khi đơn hàng đã được thanh toán thành công (và không phải một phần). Hướng dẫn sửa đổi trạng thái đơn hàng PayPal dường như đã lỗi thời, sai hoặc xấu.

Từ những gì tôi thu thập được:

  • các cập nhật thanh toán sẽ được xử lý bởi PayPal IPN.
  • Có một phương thức Mage_Paypal_Model_Ipn::_registerPaymentCapture()chịu trách nhiệm cho "Quá trình thanh toán đã hoàn thành (toàn bộ hoặc một phần)".
  • Trong Mage_Paypal_Model_Ipn::_registerTransaction()yêu cầu từ PayPal được phân tích và trạng thái thanh toán được so sánh với Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED.

Thành thật mà nói tôi không biết phải làm gì với thông tin này. Tôi có thể viết lại Mage_Paypal_Model_Ipn::_registerTransaction()và chỉ cần thêm mã của tôi:

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

Tất nhiên, một người quan sát sự kiện (ví dụ: đối với một trong các sự kiện trạng thái đơn hàng hoặc đơn hàng) sẽ đẹp hơn nhiều nhưng tôi không chắc có cách nào đáng tin cậy 100% để bắt sự kiện một lần đó khi đơn hàng được thanh toán hoàn toàn qua PayPal .

Có ý kiến ​​gì không?

Cập nhật

Chúng tôi đã chọn sửa đổi dòng trạng thái đơn hàng của mình và không cần sửa đổi trạng thái nữa. Tôi sẽ để câu hỏi mở một thời gian trong trường hợp ai đó muốn trả lời nó.

Câu trả lời:


2

Vấn đề lớn là, thậm chí không có một sự kiện nào trong toàn bộ dòng công việc paypal.

Vì vậy, có hai lựa chọn:

Viết lại bất kỳ mô hình Paypal nào

Như bạn đã nói, chỉ cần viết lại mô hình, thay đổi hành vi và mọi thứ hoạt động như mong đợi - hy vọng hoặc ...

Móc vào sales_order_save_before

Sau đó, bạn kiểm tra loại thanh toán, phải \Mage_Paypal_Model_Standard::$_codebằng:

protected $_code  = Mage_Paypal_Model_Config::METHOD_WPS;

\Mage_Paypal_Model_Config
-> const METHOD_WPS         = 'paypal_standard';

Và sau đó, khi trạng thái được thay đổi thành trạng thái bạn không muốn, hãy thay đổi trạng thái thành trạng thái bạn muốn.


Cảm ơn Fabian, tôi đoán chúng ta sẽ không có được giải pháp tốt hơn trong Magento 1.x. :-)
Matthias Zeis

0

Tôi đã kết thúc với một giải pháp khác. Sau khi vật lộn với vấn đề này trong vài giờ, tôi nhận ra rằng trong trường hợp cụ thể của mình, không có vấn đề gì nếu chỉ các đơn đặt hàng PayPal có trạng thái cụ thể (đó là kết nối ERP, tìm kiếm các đơn hàng trong một trạng thái cụ thể).

PayPal không đặt trạng thái của đơn đặt hàng. Nó chỉ nắm bắt thanh toán. Magento đặt trạng thái của đơn hàng thành Xử lý (xem Mage_Sales_Model_Order_Payment::registerCaptureNotification()) và đặt trạng thái về trạng thái mặc định trong trạng thái đó.

Tất cả những gì tôi phải làm là thay đổi trạng thái mặc định trong trạng thái Xử lý thành trạng thái tôi cần thông qua giao diện quản trị viên ( Hệ thống » Trạng thái đơn hàng ).

Hy vọng điều này sẽ giúp được ai đó!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.