Мы используем 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. ,
Любые идеи?
Обновить
Мы решили изменить поток статуса нашего заказа, и нам больше не нужно изменять статус. Я оставлю вопрос открытым на некоторое время, если кто-то захочет ответить на него.
источник
Я закончил с другим решением. Поработав с этой проблемой в течение нескольких часов, я понял, что в моем конкретном случае не имело значения, имеют ли только заказы PayPal определенный статус (это для соединения ERP, которое ищет заказы в определенном статусе).
PayPal не устанавливает статус заказа. Он просто фиксирует платеж. Magento устанавливает состояние заказа на Обработка (см.
Mage_Sales_Model_Order_Payment::registerCaptureNotification()
) И устанавливает статус на статус по умолчанию в этом состоянии.Все, что мне нужно было сделать, это изменить статус по умолчанию в состоянии « Обработка» на необходимый мне статус через интерфейс администратора (« Система » Статусы заказов ).
Надеюсь, это поможет кому-то!
источник