Мы используем 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. ,
Любые идеи?
Обновить
Мы решили изменить поток статуса нашего заказа, и нам больше не нужно изменять статус. Я оставлю вопрос открытым на некоторое время, если кто-то захочет ответить на него.