public function testGenerateConfirmResponseHtmlCommentOKString() { $response = WirecardCEE_QMore_ReturnFactory::generateConfirmResponseString('', true); $this->assertEquals('<!--<QPAY-CONFIRMATION-RESPONSE result="OK" />-->', $response); }
/** * Process transaction confirm message */ public function confirmAction() { /** @var Wirecard_CheckoutSeamless_Helper_Data $helper */ $helper = Mage::helper('wirecard_checkoutseamless'); try { if (!$this->getRequest()->isPost()) { throw new Exception('Not a POST message'); } $data = $this->getRequest()->getPost(); $helper->log(__METHOD__ . ':' . print_r($data, true)); if (!isset($data['mage_orderId'])) { throw new Exception('Magent OrderId is missing'); } $return = WirecardCEE_QMore_ReturnFactory::getInstance($data, $helper->getConfigData('settings/secret')); if (!$return->validate()) { throw new Exception('Validation error: invalid response'); } /** @var Mage_Sales_Model_Order $order */ $order = Mage::getModel('sales/order'); $order->loadByIncrementId($data['mage_orderId']); if (!$order->getId()) { throw new Exception('Order not found with Id:' . $data['mage_orderId']); } /** @var Wirecard_CheckoutSeamless_Model_Abstract $paymentInst */ $paymentInst = $order->getPayment()->getMethodInstance(); $paymentInst->setResponse($data); switch ($return->getPaymentState()) { case WirecardCEE_QMore_ReturnFactory::STATE_SUCCESS: case WirecardCEE_QMore_ReturnFactory::STATE_PENDING: $this->_confirmOrder($order, $return); break; case WirecardCEE_QMore_ReturnFactory::STATE_CANCEL: /** @var WirecardCEE_QMore_Return_Cancel $return */ $this->_cancelOrder($order); break; case WirecardCEE_QMore_ReturnFactory::STATE_FAILURE: /** @var WirecardCEE_QMore_Return_Failure $return */ if (!$this->_succeeded($order)) { $msg = array(); foreach ($return->getErrors() as $error) { $msg[] = $error->getConsumerMessage(); } if (!count($msg)) { // dont show technical error to consumer $message = $helper->__('An error occured during the payment process'); } else { $message = implode("<br/>\n", $msg); } $payment = $order->getPayment(); $additionalInformation = array('confirmProcessed' => true, 'consumerMessage' => $message); $payment->setAdditionalInformation($additionalInformation); $payment->setAdditionalData(serialize($additionalInformation)); $payment->save(); $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, $helper->__('An error occured during the payment process'))->save(); $order->cancel(); } break; default: throw new Exception('Unhandled Wirecard Checkout Seamless payment state:' . $return->getPaymentState()); } $order->save(); die(WirecardCEE_QMore_ReturnFactory::generateConfirmResponseString()); } catch (Exception $e) { $helper->log(__METHOD__ . ':' . $e->getMessage(), Zend_Log::ERR); die(WirecardCEE_QMore_ReturnFactory::generateConfirmResponseString($e->getMessage())); } }