/** * Klarna Invoice action method */ public function KlarnaPaymentAction() { try { $pclassId = 0; $pclasses = array(); $k = piKlarnaCreateKlarnaInstance(); $this->addKlarnaArticles($k); $this->addKlarnaShippingCosts($k); $this->addKlarnaAddress($k); $this->addKlarnaComment($k); echo $k->checkoutHTML(); if($this->getPaymentShortName() == 'KlarnaInvoice'){ $pclasses = $k->getPClasses(null); $pclassId = -1; $pclasses = $pclasses[0]; } else{ $pclasses = $k->getPClasses(); if(!$pclasses){ $piKlarnaLang = array(); $piKlarnaLang = piKlarnaGetLanguage(Shopware()->Locale()->getLanguage()); throw new Exception($piKlarnaLang['rate']['noPclass'],777); } $pclassId = $pclasses[0]->getId(); $pclasses = $pclasses[0]; } $result = $this->reserveAmount($k,$pclassId); $invno = $result[0]; $hash = $this->createPaymentUniqueId(); if ($result[1] == KlarnaFlags::PENDING || $result[1] == KlarnaFlags::ACCEPTED) { $this->saveOrder($invno, $hash); $myordernumber=piKlarnaGetOrdernumberByTransactionId($invno); $this->ordernumber = $myordernumber; if ($result[1] == KlarnaFlags::ACCEPTED) { $this->setAcceptedStatus(); } elseif ($result[1] == KlarnaFlags::PENDING) { $this->setPendingStatus(); } $this->saveKlarnaOrder($invno, $pclasses, $hash); } } catch (Exception $e) { if ($e->getCode() == 2102) { Shopware()->Session()->klarnaDenied = true; } $this->setDenied(); Shopware()->Session()->sPaymentError = $this->_convertEncoding(htmlentities($e->getMessage())) . " (#" . $e->getCode() . ")"; Shopware()->Session()->sPaymentErrorMethod = $this->getPaymentShortName(); $this->view->sPaymentError = $e->getMessage() . " (#" . $e->getCode() . ")"; $this->redirect(array('controller' => 'account', 'action' => 'payment', 'sTarget' => 'checkout')); } }
/** * Expands the e-mail with Klarna inpi_klarna_formations * * @param Enlight_Hook_HookArgs $piKlarnaArgs */ public static function piKlarnaOnSendMail(Enlight_Hook_HookArgs $piKlarnaArgs) { $piKlarnaLang = array(); $piKlarnaLang = piKlarnaGetLanguage(Shopware()->Locale()->getLanguage()); $piKlarnaMailVars = $piKlarnaArgs->variables; $PigmbhKlarnaPaymentAction = $piKlarnaArgs->variables['additional']['payment']['action']; if ($PigmbhKlarnaPaymentAction == "PiPaymentKlarna") { if ($piKlarnaMailVars['additional']['payment']['additionaldescription'] == "Bezahlung via Rechnung innerhalb von 14 Tagen!"){ $piKlarnaMailVars['additional']['payment']['additionaldescription'] = $piKlarnaLang['invoice']['mailtext']; } else $piKlarnaMailVars['additional']['payment']['additionaldescription'] = $piKlarnaLang['rate']['mailtext']; $piKlarnaArgs->set('variables', $piKlarnaMailVars); } }