/** * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus */ public function execute(Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus) { $storeId = $transactionStatus->getStoreId(); $storeBefore = $this->getApp()->getStore(); $areaBefore = $this->getDesign()->getArea(); // Set Store $store = $this->getApp()->getStore($storeId); $this->getApp()->setCurrentStore($store); // Load Area to get Translation $this->getApp()->loadAreaPart(Mage_Core_Model_App_Area::AREA_FRONTEND, Mage_Core_Model_App_Area::PART_TRANSLATE); $this->getApp()->loadAreaPart(Mage_Core_Model_App_Area::AREA_FRONTEND, Mage_Core_Model_App_Area::PART_DESIGN); $transactionStatus->setStatusRunning(); $transactionStatus->save(); try { $this->getServiceProcess()->execute($transactionStatus); $transactionStatus->setStatusOk(); } catch (Exception $e) { $transactionStatus->setStatusError(); $transactionStatus->setProcessingError($e->getMessage()); } $transactionStatus->setProcessedAt(date('Y-m-d H:i:s')); $transactionStatus->save(); // Reset Store $this->getApp()->setCurrentStore($storeBefore); // Reset Area to old Area $this->getDesign()->setArea($areaBefore); $this->getApp()->loadArea($areaBefore); }
/** * @param Mage_Sales_Model_Order $order * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus * @return void */ public function updateByTransactionStatus(Mage_Sales_Model_Order $order, Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus) { // Update Status of Transaction $order->setPayoneTransactionStatus($transactionStatus->getTxaction()); // Update dunning status if ($transactionStatus->getReminderlevel()) { $order->setPayoneDunningStatus($transactionStatus->getReminderlevel()); } // Status mapping of Order by Transaction Status $statusMapping = $this->getConfigStore()->getGeneral()->getStatusMapping(); $txAction = $transactionStatus->getTxaction(); /** * @var $paymentMethod Payone_Core_Model_Payment_Method_Abstract */ $paymentMethod = $order->getPayment()->getMethodInstance(); $type = $paymentMethod->getMethodType(); // Mapping $mapping = $statusMapping->getByType($type); if (!is_array($mapping) or !array_key_exists($txAction, $mapping)) { return; } // Check for valid Mapping $mappingOrderState = $mapping[$txAction]; if (!is_array($mappingOrderState) or !array_key_exists('status', $mappingOrderState) or !array_key_exists('state', $mappingOrderState)) { return; } // Get State / Status and set to Order $newOrderState = $mappingOrderState['state']; $newOrderStatus = $mappingOrderState['status']; if ($newOrderState != '') { $order->setState($newOrderState, $newOrderStatus); } else { $order->setStatus($newOrderStatus); } }
/** * @param Mage_Sales_Model_Order $order * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus */ public function addByTransactionStatus(Mage_Sales_Model_Order $order, Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus) { if ($transactionStatus->isAppointed()) { $comment = 'PAYONE accepted the payment-request.'; } elseif ($transactionStatus->isCapture()) { $comment = 'PAYONE confirmed the collection.'; } elseif ($transactionStatus->isPaid()) { $comment = 'PAYONE confirmed the payment receipt.'; } elseif ($transactionStatus->isUnderpaid()) { $comment = 'PAYONE confirmed the payment receipt. There is an underpayment.'; } elseif ($transactionStatus->isCancelation()) { $comment = 'The payment was rejected.'; } elseif ($transactionStatus->isRefund()) { $comment = 'PAYONE confirmed the credit.'; } elseif ($transactionStatus->isDebit()) { $comment = 'PAYONE confirmed the claim.'; } elseif ($transactionStatus->isReminder()) { $comment = 'The dunning status was updated, status is %s'; } elseif ($transactionStatus->isTransfer()) { $comment = 'Transactionstatus: transfer'; } elseif ($transactionStatus->isVauthorization()) { $comment = 'Transactionstatus: vauthorization'; } elseif ($transactionStatus->isVsettlement()) { $comment = 'Transactionstatus: vsettlement'; } elseif ($transactionStatus->isInvoice()) { $comment = 'Transactionstatus: invoice'; } else { $comment = $transactionStatus->getTxaction(); } $this->addCommentToOrder($order, $comment); }
public function forwardToHost(array $configHost, Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus) { $url = ''; $response = ''; try { if (!array_key_exists('url', $configHost)) { throw new Payone_Core_Exception_TransactionStatusForward('Missing Url'); } $url = $configHost['url']; $timeout = self::DEFAULT_TIMEOUT; if (array_key_exists('timeout', $configHost)) { $timeout = $configHost['timeout']; } $parameters = $transactionStatus->toArray($this->allowedKeys); $configClient = array('timeout' => $timeout); $httpClient = $this->getHttpClient(); $httpClient->setUri($url); $httpClient->setConfig($configClient); $httpClient->setMethod(Varien_Http_Client::POST); $httpClient->setParameterPost($parameters); $response = $httpClient->request(); if ($response !== 'TSOK') { throw new Payone_Core_Exception_TransactionStatusForward($response); } } catch (Exception $e) { $this->addForwardException($url, $e); } return $response; }
/** * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus * @return Payone_Core_Model_Domain_Transaction */ public function updateByTransactionStatus(Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus) { $transaction = $this->getFactory()->getModelTransaction(); $transaction->load($transactionStatus->getTxid(), 'txid'); $data = $transactionStatus->getData(); unset($data['id']); unset($data['created_at']); unset($data['updated_at']); unset($data['processed_at']); unset($data['processing_status']); $transaction->setLastTxaction($transactionStatus->getTxaction()); $transaction->setLastSequencenumber($transactionStatus->getSequencenumber()); $transaction->addData($data); $transaction->save(); return $transaction; }
/** * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus * @throws Payone_Core_Exception_OrderNotFound */ public function execute(Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus) { $order = $this->getFactory()->getModelSalesOrder(); $order->loadByIncrementId($transactionStatus->getReference()); if (!$order->hasData()) { throw new Payone_Core_Exception_OrderNotFound('Reference "' . $transactionStatus->getReference() . '"."'); } // Secondary validation: is Transaction Id correct? $payment = $order->getPayment(); $lastTxId = $payment->getLastTransId(); if ($lastTxId != $transactionStatus->getTxid()) { return; // Don´t throw an exception, just abort processing. } $config = $this->helperConfig()->getConfigStore($order->getStoreId()); $transactionStatus->setStoreId($order->getStoreId()); $transactionStatus->setOrderId($order->getId()); // Update Transaction $transaction = $this->getServiceTransaction()->updateByTransactionStatus($transactionStatus); // Update Order Status $this->getServiceOrderStatus()->setConfigStore($config); $this->getServiceOrderStatus()->updateByTransactionStatus($order, $transactionStatus); // Add Order Comment $this->getServiceOrderComment()->addByTransactionStatus($order, $transactionStatus); // Store Clearing Parameters (needs to be done before the events get triggered) $this->getServiceStoreClearingParams()->execute($transactionStatus, $order); // Save before Event is triggerd $resouce = $this->getFactory()->getModelResourceTransaction(); $resouce->addObject($order); $resouce->addObject($transactionStatus); $resouce->save(); // Trigger Event $params = array(self::EVENT_PARAMETER_TRANSACTIONSTATUS => $transactionStatus, self::EVENT_PARAMETER_TRANSACTION => $transaction, self::EVENT_PARAMETER_CONFIG => $config); $this->dispatchEvent(self::EVENT_NAME_PREFIX . self::EVENT_NAME_ALL, $params); $this->dispatchEvent(self::EVENT_NAME_PREFIX . $transactionStatus->getTxaction(), $params); }
/** * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus * @return Mage_Sales_Model_Order */ protected function getOrderByTransactionStatus(Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus) { $order = $this->getFactory()->getModelSalesOrder(); $order->load($transactionStatus->getOrderId()); return $order; }
/** * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus * @return Payone_Core_Model_Domain_Transaction */ public function loadByTransactionStatus(Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus) { $this->load($transactionStatus->getTxid(), 'txid'); return $this; }
/** * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus * @param Mage_Sales_Model_Order $order * @return void */ public function execute(Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus, Mage_Sales_Model_Order $order = null) { if (!$transactionStatus->isAppointed()) { return; } if (is_null($order)) { $order = $this->getFactory()->getModelSalesOrder(); $order->load($transactionStatus->getOrderId()); } $payment = $order->getPayment(); $methodInstance = $payment->getMethodInstance(); // Clearing params need only to be mapped on SafeInvoice with request mode "authorization" abort otherwise. if (!$methodInstance instanceof Payone_Core_Model_Payment_Method_SafeInvoice) { return; } $config = $this->helperConfig()->getConfigPaymentMethodByOrder($order); if (!$config->isRequestAuthorization()) { return; } $payment->setPayoneClearingBankAccountholder($transactionStatus->getClearingBankaccountholder()); $payment->setPayoneClearingBankCountry($transactionStatus->getClearingBankcountry()); $payment->setPayoneClearingBankAccount($transactionStatus->getClearingBankaccount()); $payment->setPayoneClearingBankCode($transactionStatus->getClearingBankcode()); $payment->setPayoneClearingBankIban($transactionStatus->getClearingBankiban()); $payment->setPayoneClearingBankBic($transactionStatus->getClearingBankbic()); $payment->setPayoneClearingBankCity($transactionStatus->getClearingBankcity()); $payment->setPayoneClearingBankName($transactionStatus->getClearingBankname()); $payment->setPayoneClearingReference($transactionStatus->getClearingReference()); $payment->setPayoneClearingInstructionnote($transactionStatus->getClearingInstructionnote()); $payment->setPayoneClearingLegalnote($transactionStatus->getClearingLegalnote()); $payment->setPayoneClearingDuedate($transactionStatus->getClearingDuedate()); $payment->save(); }