コード例 #1
0
 /**
  * @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);
 }
コード例 #2
0
 /**
  * @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);
     }
 }
コード例 #3
0
 /**
  * @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);
 }
コード例 #4
0
 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;
 }
コード例 #5
0
 /**
  * @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;
 }
コード例 #6
0
 /**
  * @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);
 }
コード例 #7
0
ファイル: InvoiceCreate.php プロジェクト: vberzsin/shop
 /**
  * @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;
 }
コード例 #8
0
 /**
  * @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;
 }
コード例 #9
0
 /**
  * @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();
 }