/**
     * 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'));
        }
    }
Example #2
0
 /**
  *  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);
     }
 }