protected function processOrderStateChange($new_order_state, array $payload, \Payin7\Models\OrderModel $order, &$message, &$code) { $ret = true; $message = null; $code = null; switch ($new_order_state) { case 'cancel': /** @var OrderCore $orderm */ /** @noinspection PhpUndefinedClassInspection */ $orderm = new Order($order->getOrderId()); if (ValidateCore::isLoadedObject($orderm)) { $state = $orderm->current_state; if ($state == $this->module->getConfigIdOrderStatePending()) { // temporarily disable updating history back to Payin7 $this->module->setHistoryUpdateEnabled(false); $orderm->setCurrentState($this->module->getConfigIdOrderStateCancelled()); // reenable history $this->module->setHistoryUpdateEnabled(true); $message = 'Local order state set to (1): ' . $this->module->getConfigIdOrderStateCancelled(); } } else { $message = 'Local order could not be loaded (2)'; $ret = false; } break; case 'active': $is_verified = isset($payload['is_verified']) ? (bool) $payload['is_verified'] : false; $is_paid = isset($payload['is_paid']) ? (bool) $payload['is_paid'] : false; // update the order state if (!$order->getPayin7OrderAccepted()) { $order->setPayin7OrderAccepted(true); $order->savePayin7Data(); } if ($is_verified && $is_paid) { /** @var OrderCore $orderm */ /** @noinspection PhpUndefinedClassInspection */ $orderm = new Order($order->getOrderId()); $state = $orderm->current_state; if ($state == $this->module->getConfigIdOrderStatePending()) { // temporarily disable updating history back to Payin7 $this->module->setHistoryUpdateEnabled(false); $orderm->setCurrentState($this->module->getConfigIdOrderStateAccepted()); // reenable history $this->module->setHistoryUpdateEnabled(true); $message = 'Local order state set to (2): ' . $this->module->getConfigIdOrderStateAccepted(); } } else { $message = 'Order not verified / paid'; $ret = false; } break; } return $ret; }