Ejemplo n.º 1
0
 function fetchElement($name, $value, &$node, $control_name)
 {
     $countriesData = KlarnaHandler::countriesData();
     $logo = '<a href="https://www.klarna.com" target="_blank"><img src="' . JURI::root() . VMKLARNAPLUGINWEBROOT . '/klarna/assets/images/logo/logo_small.png" /></a> ';
     $flagImgHtml = '';
     foreach ($countriesData as $countryData) {
         $flagImg = JURI::root(true) . '/administrator/components/com_virtuemart/assets/images/flag/' . strtolower($countryData['language_code']) . '.png';
         $flagImgHtml .= '<img style="margin-right: 5px;margin-top: 15px;" src="' . $flagImg . '"  alt="' . JText::_('VMPAYMENT_KLARNA_CONF_SETTINGS_' . $countryData['language_code']) . '"/>';
     }
     return $logo . $flagImgHtml;
 }
Ejemplo n.º 2
0
    function getInput()
    {
        vmJsApi::addJScript('/plugins/vmpayment/klarnacheckout/klarnacheckout/assets/js/admin.js');
        vmJsApi::css('klarnacheckout', 'plugins/vmpayment/klarnacheckout/klarnacheckout/assets/css/');
        $jlang = JFactory::getLanguage();
        $lang = $jlang->getTag();
        $langArray = explode("-", $lang);
        $lang = strtolower($langArray[1]);
        $countriesData = KlarnaHandler::countriesData();
        $signLang = "en";
        foreach ($countriesData as $countryData) {
            if ($countryData['country_code'] == $lang) {
                $signLang = $lang;
                break;
            }
        }
        /*
        		$logo = '<a href="https://merchants.klarna.com/signup?locale=' . $signLang . '&partner_id=7829355537eae268a17667c199e7c7662d3391f7" target="_blank">
        	             <img src="' . JURI::root () . VMKLARNAPLUGINWEBROOT . '/klarna/assets/images/logo/get_klarna_now.png" /></a> ';
        */
        $logo = '<img src="' . JURI::root() . VMKLARNAPLUGINWEBROOT . '/klarna/assets/images/logo/get_klarna_now.jpg" style="margin-bottom: 10px"/>';
        $html = '<p><a href="#" id="klarna_getklarna_link" ">' . $logo . '</a></p>';
        // https://merchants.klarna.com/signup?locale=en&partner_id=7829355537eae268a17667c199e7c7662d3391f7&utm_campaign=Platform&utm_medium=Partners&utm_source=Virtuemart
        $html .= '<div id="klarna_getklarna_show_hide" >';
        $url = "https://merchants.klarna.com/signup/?locale=" . $signLang . "&partner_id=7829355537eae268a17667c199e7c7662d3391f7&utm_campaign=Platform&utm_medium=Partners&utm_source=Virtuemart";
        $js = '
		jQuery(document).ready(function( $ ) {
			$("#klarna_getklarna_show_hide").hide();
			jQuery("#klarna_getklarna_link").click( function() {
				 if ( $("#klarna_getklarna_show_hide").is(":visible") ) {
				  $("#klarna_getklarna_show_hide").hide("slow");
			        $("#klarna_getklarna_link").html("' . addslashes($logo) . '");
				} else {
				 $("#klarna_getklarna_show_hide").show("slow");
			       $("#klarna_getklarna_link").html("' . addslashes(vmText::_('VMPAYMENT_KLARNA_GET_KLARNA_HIDE')) . '");
			    }
		    });
		});
';
        vmJsApi::addJScript('vm.getKlarna', $js);
        $html .= '<iframe src="' . $url . '" scrolling="yes" style="x-overflow: none;" frameborder="0" height="600px" width="850px"></iframe>';
        $html .= '</div>';
        $html .= '<p><a target="_blank" href="http://cdn.klarna.com/1.0/shared/content/integration/guide/virtuemart.pdf" class="signin-button-link">' . vmText::_('VMPAYMENT_KLARNA_DOCUMENTATION') . '</a></p>';
        return $html;
    }
Ejemplo n.º 3
0
    function fetchElement($name, $value, &$node, $control_name)
    {
        $jlang = JFactory::getLanguage();
        $lang = $jlang->getTag();
        $langArray = explode("-", $lang);
        $lang = strtolower($langArray[1]);
        $countriesData = KlarnaHandler::countriesData();
        $signLang = "en";
        foreach ($countriesData as $countryData) {
            if ($countryData['country_code'] == $lang) {
                $signLang = $lang;
                break;
            }
        }
        $logo = '<a href="https://merchants.klarna.com/signup?locale=' . $signLang . '&partner_id=7829355537eae268a17667c199e7c7662d3391f7" target="_blank">
	             <img src="' . JURI::root() . VMKLARNAPLUGINWEBROOT . '/klarna/assets/images/logo/get_klarna_now.png" /></a> ';
        return $logo;
    }
    function fetchElement($name, $value, &$node, $control_name)
    {
        return "TO DO ";
        $jlang = JFactory::getLanguage();
        $lang = $jlang->getTag();
        $langArray = explode("-", $lang);
        $lang = strtolower($langArray[1]);
        $countriesData = KlarnaHandler::countriesData();
        $signLang = "en";
        foreach ($countriesData as $countryData) {
            if ($countryData['country_code'] == $lang) {
                $signLang = $lang;
                break;
            }
        }
        /*
        		$logo = '<a href="https://merchants.klarna.com/signup?locale=' . $signLang . '&partner_id=7829355537eae268a17667c199e7c7662d3391f7" target="_blank">
        	             <img src="' . JURI::root () . VMKLARNAPLUGINWEBROOT . '/klarna/assets/images/logo/get_klarna_now.png" /></a> ';
        */
        $logo = '<img src="' . JURI::root() . VMKLARNAPLUGINWEBROOT . '/klarna/assets/images/logo/get_klarna_now.jpg" />';
        $html = '<a href="#" id="klarna_getklarna_link" ">' . $logo . '</a>';
        // https://merchants.klarna.com/signup?locale=en&partner_id=7829355537eae268a17667c199e7c7662d3391f7&utm_campaign=Platform&utm_medium=Partners&utm_source=Virtuemart
        $html .= '<div id="klarna_getklarna_show_hide" >';
        $url = "https://merchants.klarna.com/signup/?locale=" . $signLang . "&partner_id=7829355537eae268a17667c199e7c7662d3391f7&utm_campaign=Platform&utm_medium=Partners&utm_source=Virtuemart";
        $js = '
		jQuery(document).ready(function( $ ) {
			$("#klarna_getklarna_show_hide").hide();
			jQuery("#klarna_getklarna_link").click( function() {
				 if ( $("#klarna_getklarna_show_hide").is(":visible") ) {
				  $("#klarna_getklarna_show_hide").hide("slow");
			        $("#klarna_getklarna_link").html("' . addslashes($logo) . '");
				} else {
				 $("#klarna_getklarna_show_hide").show("slow");
			       $("#klarna_getklarna_link").html("' . addslashes(JText::_('VMPAYMENT_KLARNA_GET_KLARNA_HIDE')) . '");
			    }
		    });
		});
';
        $doc = JFactory::getDocument();
        $doc->addScriptDeclaration($js);
        $html .= '<iframe src="' . $url . '" scrolling="yes" style="x-overflow: none;" frameborder="0" height="600px" width="850px"></iframe>';
        $html .= '</div>';
        return $html;
    }
Ejemplo n.º 5
0
 function fetchElement($name, $value, &$node, $control_name)
 {
     $jlang = JFactory::getLanguage();
     $lang = $jlang->getTag();
     $langArray = explode("-", $lang);
     $lang = strtolower($langArray[1]);
     $countriesData = KlarnaHandler::countriesData();
     $signLang = "en";
     foreach ($countriesData as $countryData) {
         if ($countryData['country_code'] == $lang) {
             $signLang = $lang;
             break;
         }
     }
     $url = "https://merchants.klarna.com/signup/?locale=" . $signLang . "&partner_id=7829355537eae268a17667c199e7c7662d3391f7&utm_campaign=Platform&utm_medium=Partners&utm_source=Virtuemart";
     $logo = '<img src="' . JURI::root() . VMKLARNAPLUGINWEBROOT . '/klarna/assets/images/logo/get_klarna_now.jpg" />';
     $html = '<a target="_blank" href="' . $url . '" id="klarna_getklarna_link" ">' . $logo . '</a>';
     return $html;
 }
Ejemplo n.º 6
0
 function getInput()
 {
     $jlang = JFactory::getLanguage();
     $lang = $jlang->getTag();
     $langArray = explode("-", $lang);
     $lang = strtolower($langArray[1]);
     $countriesData = KlarnaHandler::countriesData();
     $signLang = "en";
     foreach ($countriesData as $countryData) {
         if ($countryData['country_code'] == $lang) {
             $signLang = $lang;
             break;
         }
     }
     $url = "https://merchants.klarna.com/signup/?locale=" . $signLang . "&partner_id=7829355537eae268a17667c199e7c7662d3391f7&utm_campaign=Platform&utm_medium=Partners&utm_source=Virtuemart";
     $logo = '<img src="' . JURI::root() . VMKLARNAPLUGINWEBROOT . '/klarna/assets/images/logo/get_klarna_now.jpg" />';
     $html = '<div><a target="_blank" href="' . $url . '" id="klarna_getklarna_link" ">' . $logo . '</a> ';
     $html .= ' <a target="_blank" href="https://static.klarna.com/integration_sales/partner/VirtueMart/v1.0/Klarna_documentation.pdf" class="signin-button-link">' . vmText::_('VMPAYMENT_KLARNA_DOCUMENTATION') . '</a></div>';
     return $html;
 }
 /**
  * @param $product
  * @return bool
  */
 private function showPP($product)
 {
     if (!isset($this->klarna_virtuemart) || !$this->klarna_virtuemart instanceof Klarna_virtuemart) {
         return FALSE;
     }
     if (!VMKLARNA_SHOW_PRODUCTPRICE) {
         return FALSE;
     }
     // the price is in the vendor currency
     // convert price in NLD currency= euro
     $price = KlarnaHandler::convertPrice($product->prices['salesPrice'], $product->product_currency, 'EUR');
     if (strtolower($this->cData['country_code']) == 'nl' && $price > 250) {
         vmDebug('showPP', 'dont show price for NL', $this->cData['country_code'], $price);
         return FALSE;
     }
     if ($price <= $this->cData['min_amount'] and !empty($this->cData['min_amount'])) {
         return FALSE;
     }
     return TRUE;
 }
Ejemplo n.º 8
0
 /**
  * plgVmOnCheckAutomaticSelectedPayment
  * Checks how many plugins are available. If only one, the user will not have the choice. Enter edit_xxx page
  * The plugin must check first if it is the correct type
  * @author Valerie Isaksen
  * @param VirtueMartCart cart: the cart object
  * @return null if no plugin was found, 0 if more then one plugin was found,  virtuemart_xxx_id if only one plugin is found
  *
  */
 function plgVmOnCheckAutomaticSelectedPayment(VirtueMartCart $cart, array $cart_prices = array(), &$paymentCounter)
 {
     $nbMethod = 0;
     if ($this->getPluginMethods($cart->vendorId) === 0) {
         return false;
     }
     foreach ($this->methods as $method) {
         $cData = KlarnaHandler::getcData($method, $this->getCartAddress($cart, $type, false));
         if ($cData) {
             if ($nb = (int) $this->checkCountryCondition($method, $cData['country_code_3'], $cart)) {
                 $nbMethod = $nbMethod + $nb;
             }
         }
     }
     $paymentCounter = $paymentCounter + $nbMethod;
     if ($nbMethod == 0) {
         return NULL;
     } else {
         return 0;
     }
 }
Ejemplo n.º 9
0
 function getInput()
 {
     $countriesData = KlarnaHandler::countriesData();
     $logo = '<a href="https://www.klarna.com" target="_blank"><img src="https://cdn.klarna.com/public/images/SE/logos/v1/basic/SE_basic_logo_std_blue-black.png?width=100&" /></a> ';
     return $logo;
 }
Ejemplo n.º 10
0
 static function getcData($method, $address)
 {
     if (!isset($address['virtuemart_country_id'])) {
         $vendor_country = KlarnaHandler::getVendorCountry();
         $cData = self::countryData($method, $vendor_country);
     } else {
         $cart_country_code_3 = ShopFunctions::getCountryByID($address['virtuemart_country_id'], 'country_3_code');
         // the user gave an address, get info according to his country
         $cData = self::countryData($method, $cart_country_code_3);
     }
     return $cData;
 }
Ejemplo n.º 11
0
 function checkPartpriceCondition($cData, $cart)
 {
     //  Since 12/09/12: merchants can sell goods with Klarna Invoice up to thousands of euros.
     // convert price in euro
     //$euro_currency_id = ShopFunctions::getCurrencyByName( 'EUR');
     $amount = KlarnaHandler::convertPrice($cart->cartPrices['billTotal'], $cart->pricesCurrency, 'EUR', $cart->pricesCurrency);
     if ($amount <= $cData['min_amount'] and !empty($cData['min_amount'])) {
         return FALSE;
     }
     return true;
 }
Ejemplo n.º 12
0
 /**
  *
  */
 function cancelReservation($order, $payments)
 {
     $rno = $this->getReservationNumber($payments);
     if (!$rno) {
         return;
         // error already sent
     }
     $this->initKlarnaParams($this->method);
     $klarna = new Klarna_virtuemart();
     $klarna->config($this->merchantid, $this->sharedsecret, $this->country_code_3, NULL, $this->currency_code_3, $this->mode, VMKLARNA_PC_TYPE, KlarnaHandler::getKlarna_pc_type(), $this->ssl);
     $modelOrder = VmModel::getModel('orders');
     try {
         $result = $klarna->cancelReservation($rno);
         $info = vmText::sprintf('VMPAYMENT_KLARNACHECKOUT_RESERVATION_CANCELED', $rno);
         VmInfo($info);
         $history = array();
         $history['customer_notified'] = 1;
         //$history['order_status'] = $this->method->checkout_complete;
         $history['comments'] = $info;
         // $order['details']['BT']->order_number);
         $modelOrder->updateStatusForOneOrder($order->virtuemart_paymentmethod_id, $history, TRUE);
         $dbValues['order_number'] = $payments[0]->order_number;
         $dbValues['payment_name'] = '';
         $dbValues['virtuemart_paymentmethod_id'] = $payments[0]->virtuemart_paymentmethod_id;
         $dbValues['action'] = 'cancelReservation';
         $dbValues['klarna_status'] = 'cancelReservation';
         $dbValues['data'] = $info;
         $this->debugLog($dbValues, 'storePSPluginInternalData cancelReservation', 'debug');
         $values = $this->storePSPluginInternalData($dbValues, $this->_tablepkey);
     } catch (Exception $e) {
         $error = $e->getMessage();
         VmError($e->getMessage(), vmText::sprintf('VMPAYMENT_KLARNACHECKOUT_ERROR_OCCURRED', $this->method->payment_name));
         $this->debugLog($e->getMessage(), 'cancelReservation', 'error');
         return FALSE;
     }
     //$dbValues['data'] = $vm_invoice_name;
     return true;
 }
Ejemplo n.º 13
0
 /**
  * Build the Special Campaign module.
  */
 public function specCamp($cart)
 {
     $this->code = "klarna_SpecCamp";
     if (!isset($this->klarna) || !$this->klarna instanceof Klarna_virtuemart) {
         return 0;
     }
     if (!class_exists('KlarnaAPI')) {
         require JPATH_VMKLARNAPLUGIN . DS . 'klarna' . DS . 'helpers' . DS . 'klarnaapi.php';
     }
     $totalSum = $cart->pricesUnformatted['salesPrice'];
     $this->paymeny_charge_link = "https://online.klarna.com/villkor.yaws?eid=" . $this->eid . "&charge=0";
     if (!class_exists('KlarnaVm2API')) {
         require JPATH_VMKLARNAPLUGIN . DS . 'klarna' . DS . 'helpers' . DS . 'klarna_vm2api.php';
     }
     $kCheckout = new KlarnaVm2API($this->country, $this->lang, 'spec', $totalSum, KlarnaFlags::CHECKOUT_PAGE, $this->klarna, array(KlarnaPClass::SPECIAL), JPATH_VMKLARNAPLUGIN);
     $kCheckout->addSetupValue('eid', $this->eid);
     $kCheckout->addSetupValue('payment_id', 'virtuemart_paymentmethod_id');
     if (strtolower($this->country) == 'de') {
         $vendor_id = 1;
         $link = JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=tos&virtuemart_vendor_id=' . $vendor_id);
         $kCheckout->addSetupValue('agb_link', $link);
     }
     //$kCheckout->addSetupValue('agreementLink', $this->getTermsLink());
     $title = JText::_('VMPAYMENT_KLARNA_SPEC_TITLE');
     if (KlarnaHandler::getKlarnaError($klarnaError, $klarnaOption)) {
         $kCheckout->addSetupValue('red_baloon_content', $klarnaError);
         $kCheckout->addSetupValue('red_baloon_paymentBox', 'klarna_box_' . $klarnaOption);
         KlarnaHandler::clearKlarnaError();
     }
     // Something went wrong, refill what we can.
     if (isset($_SESSION['KLARNA_DATA'])) {
         $this->setPreviouslyFilledIn($_SESSION['KLARNA_DATA']);
     }
     $aParams = $this->getParams();
     $aValues = $this->getValues();
     return array('id' => "klarna_SpecCamp", 'module' => $title, 'fields' => $kCheckout->retrieveLayout($aParams, $aValues), 'pClasses' => $kCheckout->getPClassesInfo());
 }
Ejemplo n.º 14
0
	function plgVmOnCheckoutAdvertise ($cart, &$payment_advertise) {

		$vendorId = 1;
		$loadScriptAndCss = FALSE;
		if (!class_exists ('Klarna_payments')) {
			require (JPATH_VMKLARNAPLUGIN . DS . 'klarna' . DS . 'helpers' . DS . 'klarna_payments.php');
		}
		$country_code = NULL;
		$countryId = 0;
		if ($this->getPluginMethods ($cart->vendorId) === 0) {
			return FALSE;
		}

		$this->_getCountryCode ($cart, $country_code, $countryId);
		foreach ($this->methods as $method) {
			if ($cart->virtuemart_paymentmethod_id == $method->virtuemart_paymentmethod_id) {
				continue;
			}
			if (!($cData = $this->checkCountryCondition ($method, $country_code, $cart))) {
				return NULL;
			}
			if (strtolower ($country_code) == 'nld') {
				//  Since 12/09/12: merchants can sell goods with Klarna Invoice up to thousands of euros. So the price check has been moved here
				if (!KlarnaHandler::checkPartNLpriceCondition ($cart)) {
					// We can't show our payment options for Dutch customers
					// if price exceeds 250 euro. Will be replaced with ILT in
					// the future.
					return NULL;
				}
			}
			if (in_array ('part', $cData['payments_activated'])) {
				$payments = new klarna_payments($cData, KlarnaHandler::getShipToAddress ($cart));

				// TODO: change to there is a function in the API
				$sFee = $payments->getCheapestMonthlyCost ($cart, $cData);
				if ($sFee) {
					$payment_advertise[] = $this->renderByLayout ('cart_advertisement',
						array("sFee"   => $sFee,
							  "eid"    => $cData['eid'],
							  "country"=> $cData['country_code']
						));
				}
			}
		}

	}
Ejemplo n.º 15
0
 function checkPartNLpriceCondition($cart)
 {
     //  Since 12/09/12: merchants can sell goods with Klarna Invoice up to thousands of euros.
     // convert price in euro
     //$euro_currency_id = ShopFunctions::getCurrencyByName( 'EUR');
     $price = KlarnaHandler::convertPrice($cart->pricesUnformatted['billTotal'], $cart->pricesCurrency, 'EUR', $cart->pricesCurrency);
     return self::checkNLpriceCondition($price);
 }
 /**
  * Build the Payment params
  */
 public function get_payment_params($method, $payment_type, $cart = NULL, $country_currency_code = '')
 {
     if (!class_exists('CurrencyDisplay')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php';
     }
     if (!class_exists('KlarnaAPI')) {
         require JPATH_VMKLARNAPLUGIN . DS . 'klarna' . DS . 'helpers' . DS . 'klarnaapi.php';
     }
     $payment_params = array();
     $invoice_fee = 0;
     if (!isset($this->klarna) || !$this->klarna instanceof Klarna_virtuemart) {
         return NULL;
     }
     $payment_params['payment_currency_info'] = "";
     if ($cart->pricesCurrency != $this->virtuemart_currency_id) {
         $payment_params['payment_currency_info'] = JText::_('VMPAYMENT_KLARNA_PAYMENT_CURRENCY_INFO');
     }
     if ($payment_type == 'invoice') {
         KlarnaHandler::getInvoiceFeeInclTax($method, $this->country_code_3, $cart->pricesCurrency, $this->virtuemart_currency_id, $display_invoice_fee, $invoice_fee);
         $billTotalInCountryCurrency = 0;
         $aTypes = NULL;
         $payment_params['pClasses'] = NULL;
     } else {
         $display_fee = 0;
         $billTotalInCountryCurrency = 0;
         if (isset($cart->pricesUnformatted['billTotal'])) {
             $billTotalInCountryCurrency = KlarnaHandler::convertPrice($cart->pricesUnformatted['billTotal'], $cart->pricesCurrency, $country_currency_code);
         }
         if ($billTotalInCountryCurrency <= 0) {
             return NULL;
         }
         $aTypes = array(KlarnaPClass::ACCOUNT, KlarnaPClass::CAMPAIGN, KlarnaPClass::FIXED);
     }
     $payment_params['sType'] = $payment_type;
     $kCheckout = new KlarnaAPI($this->country, $this->lang, $payment_type, $billTotalInCountryCurrency, KlarnaFlags::CHECKOUT_PAGE, $this->klarna, $aTypes, JPATH_VMKLARNAPLUGIN);
     if ($payment_type == 'invoice') {
         if ($invoice_fee) {
             $payment_params['module'] = JText::sprintf('VMPAYMENT_KLARNA_INVOICE_TITLE', $display_invoice_fee);
         } else {
             $payment_params['module'] = JText::_('VMPAYMENT_KLARNA_INVOICE_TITLE_NO_PRICE');
         }
         $payment_params['pClasses'] = NULL;
         $payment_params['id'] = 'klarna_invoice';
     } elseif ($payment_type == 'part') {
         $pclasses = $kCheckout->aPClasses;
         if (empty($pclasses)) {
             return NULL;
         }
         $cheapest = 0;
         $minimum = '';
         foreach ($pclasses as $pclass) {
             if ($cheapest == 0 || $pclass['monthlyCost'] < $cheapest) {
                 $cheapest = $pclass['monthlyCost'];
             }
             if ($pclass['pclass']->getMinAmount() < $minimum || $minimum === '') {
                 $minimum = $pclass['pclass']->getMinAmount();
             }
         }
         if ($billTotalInCountryCurrency < $minimum) {
             return NULL;
         }
         if (!class_exists('VirtueMartModelCurrency')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'currency.php';
         }
         // Cheapest is in the Klarna country currency, convert it to the current currency display
         //$currencyDisplay = CurrencyDisplay::getInstance( );
         //$countryCurrencyId = $this->virtuemart_currency_id;
         //$sFee = $currencyDisplay->priceDisplay($cheapest, 0, 1,false);
         $sFee = $kCheckout->getPresentableValuta($cheapest);
         $payment_params['module'] = JText::sprintf('VMPAYMENT_KLARNA_PARTPAY_TITLE', $sFee);
         $payment_params['pClasses'] = $kCheckout->getPClassesInfo();
         $payment_params['id'] = 'klarna_partPayment';
     } else {
         $pclasses = $kCheckout->aPClasses;
         if (empty($pclasses)) {
             return NULL;
         }
         $payment_params['module'] = JText::_('VMPAYMENT_KLARNA_SPEC_TITLE');
         $payment_params['pClasses'] = $kCheckout->getPClassesInfo();
         $payment_params['id'] = 'klarna_SpecCamp';
     }
     $payment_params['payment_link'] = "https://online.klarna.com/villkor.yaws?eid=" . $this->eid . "&charge=" . $invoice_fee;
     if (strtolower($this->country) == 'de') {
         $vendor_id = 1;
         $payment_params['agb_link'] = JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=tos&virtuemart_vendor_id=' . $vendor_id);
     }
     //$lang = KlarnaHandler::getLanguageForCountry($method, $this->country);
     $symbol = KlarnaHandler::getCurrencySymbolForCountry($method, $this->country);
     if (KlarnaHandler::getKlarnaError($klarnaError, $klarnaOption)) {
         if ($klarnaOption == 'klarna_' . $payment_type) {
             $payment_params['red_baloon_content'] = $klarnaError;
             $payment_params['red_baloon_paymentBox'] = 'klarna_box_' . $klarnaOption;
             //KlarnaHandler::clearKlarnaError ();
         }
     }
     // Something went wrong, refill what we can.
     $session = JFactory::getSession();
     $sessionKlarna = $session->get('Klarna', 0, 'vm');
     if (!empty($sessionKlarna)) {
         $sessionKlarnaData = unserialize($sessionKlarna);
         if (isset($sessionKlarnaData->KLARNA_DATA)) {
             $klarnaData = $sessionKlarnaData->KLARNA_DATA;
             $this->setPreviouslyFilledIn($klarnaData);
         }
     }
     $payment_params['paymentPlan'] = '';
     if (is_array($kCheckout->aPClasses)) {
         foreach ($kCheckout->aPClasses as $pclass) {
             if ($pclass['default'] === TRUE) {
                 $payment_params['paymentPlan'] = $pclass['pclass']->getId();
                 break;
             }
         }
     }
     if ($payment_type != "spec") {
         //$payment_params['conditionsLink'] = $aTemplateData['conditions'];
     }
     $payment_params['fields'] = $this->shipTo;
     $payment_params['payment_id'] = 'virtuemart_paymentmethod_id';
     $payment_params['checkout'] = $this->klarna->checkoutHTML();
     $payment_params['eid'] = $this->eid;
     $payment_params['year_salary'] = $this->klarna_year_salary;
     $payment_params['agreement_link'] = $this->payment_charge_link;
     $payment_params['sum'] = $invoice_fee;
     $payment_params['fee'] = $invoice_fee;
     $payment_params['invoice_fee'] = $invoice_fee;
     $payment_params['langISO'] = $this->lang;
     $payment_params['countryCode'] = $this->country;
     $payment_params['flag'] = KlarnaFlags::CHECKOUT_PAGE;
     $payment_params['payment_id'] = "payment";
     $payment_params['invoice_name'] = 'klarna_invoice';
     $payment_params['part_name'] = 'klarna_partPayment';
     $payment_params['spec_name'] = 'klarna_SpecCamp';
     return $payment_params;
 }
Ejemplo n.º 17
0
 /**
  *
  */
 function cancelReservation($order, $payments)
 {
     $rno = $this->getReservationNumber($payments);
     if (!$rno) {
         return;
         // error already sent
     }
     $klarna = new Klarna_virtuemart();
     $klarna->config($this->_currentMethod->merchantid, $this->_currentMethod->sharedsecret, $this->country_code_3, NULL, $this->currency_code_3, $this->mode, VMKLARNA_PC_TYPE, KlarnaHandler::getKlarna_pc_type(), $this->ssl);
     $modelOrder = tmsModel::getModel('orders');
     try {
         $result = $klarna->cancelReservation($rno);
         $info = tsmText::sprintf('VMPAYMENT_KLARNACHECKOUT_RESERVATION_CANCELED', $rno);
         VmInfo($info);
         $history = array();
         $history['customer_notified'] = 1;
         //$history['order_status'] = $this->_currentMethod->checkout_complete;
         $history['comments'] = $info;
         // $order['details']['BT']->order_number);
         $modelOrder->updateStatusForOneOrder($order->virtuemart_order_id, $history, TRUE);
     } catch (Exception $e) {
         $error = $e->getMessage();
         $this->KlarnacheckoutError($e->getMessage(), tsmText::sprintf('VMPAYMENT_KLARNACHECKOUT_ERROR_OCCURRED', $this->_currentMethod->payment_name));
         return FALSE;
     }
     //$dbValues['data'] = $vm_invoice_name;
     return $result;
 }
Ejemplo n.º 18
0
 function fetchElement($name, $value, &$node, $control_name)
 {
     $countriesData = KlarnaHandler::countriesData();
     $logo = '<a href="https://www.klarna.com" target="_blank"><img src="https://cdn.klarna.com/public/images/SE/logos/v1/basic/SE_basic_logo_std_blue-black.png?width=100&" /></a> ';
     return $logo;
 }
Ejemplo n.º 19
0
 /**
  * cf https://docs.klarna.com/en/rest-api#supported_locales
  * @param $method
  */
 function initKlarnaParams()
 {
     $return = true;
     $db = JFactory::getDBO();
     $q = 'SELECT country_2_code , country_3_code FROM `#__virtuemart_countries` WHERE virtuemart_country_id = ' . (int) $this->_currentMethod->purchase_country;
     $db->setQuery($q);
     $country = $db->loadObject();
     if (!$country) {
         $this->KlarnacheckoutError('Klarna Checkout: No country has been found with country id=' . $this->_currentMethod->purchase_country, vmText::sprintf('VMPAYMENT_KLARNACHECKOUT_ERROR_OCCURRED', $this->_currentMethod->payment_name));
         $this->debugLog('No country has been found with country id=' . $this->_currentMethod->purchase_country, 'initKlarnaParams', 'debug');
         $return = false;
     }
     $this->country_code_2 = $country->country_2_code;
     $this->country_code_3 = $country->country_3_code;
     $this->getPaymentCurrency($this->_currentMethod);
     $this->currency_code_3 = shopFunctions::getCurrencyByID($this->_currentMethod->payment_currency, 'currency_code_3');
     if (!$this->currency_code_3) {
         $this->KlarnacheckoutError('Klarna Checkout: No currency has been found with currency id=' . $this->_currentMethod->payment_currency, vmText::sprintf('VMPAYMENT_KLARNACHECKOUT_ERROR_OCCURRED', $this->_currentMethod->payment_name));
         $this->debugLog('No currency has been found with currency id=' . $this->_currentMethod->payment_currency, 'initKlarnaParams', 'debug');
         $return = false;
     }
     $this->currency_id = $this->_currentMethod->payment_currency;
     if (empty($this->_currentMethod->sharedsecret) or empty($this->_currentMethod->merchantid)) {
         $this->KlarnacheckoutError('Klarna Checkout: Missing mandatory values merchant id=' . $this->_currentMethod->merchantid . ' shared secret=' . $this->_currentMethod->sharedsecret, vmText::sprintf('VMPAYMENT_KLARNACHECKOUT_ERROR_OCCURRED', $this->_currentMethod->payment_name));
         $this->debugLog('Missing mandatory values merchant id=' . $this->_currentMethod->merchantid . ' shared secret=' . $this->_currentMethod->sharedsecret, 'initKlarnaParams', 'debug');
         $return = false;
     }
     $this->locale = $this->_currentMethod->locale;
     $this->sharedsecret = $this->_currentMethod->sharedsecret;
     $this->merchantid = $this->_currentMethod->merchantid;
     if ($this->_currentMethod->server == 'beta') {
         $this->mode = Klarna::BETA;
     } else {
         $this->mode = Klarna::LIVE;
     }
     $this->ssl = KlarnaHandler::getKlarnaSSL($this->mode);
     if (!isset($this->_currentMethod->email_currency)) {
         $this->_currentMethod->email_currency = 'vendor';
     }
     if (!isset($this->_currentMethod->terms_uri)) {
         $this->_currentMethod->terms_uri = '';
     }
     return $return;
 }
Ejemplo n.º 20
0
                ?>
</td>
							<td class="pclass_number"><?php 
                echo $pclass->getInterestRate() . "%";
                ?>
</td>
							<td class="pclass_number"><?php 
                echo $pclass->getInvoiceFee() . " " . KlarnaHandler::getCurrencySymbolForCountry($data, $klarna->getCountryCode());
                ?>
</td>
							<td class="pclass_number"><?php 
                echo $pclass->getStartFee() . " " . KlarnaHandler::getCurrencySymbolForCountry($data, $klarna->getCountryCode());
                ?>
</td>
							<td class="pclass_number"><?php 
                echo $pclass->getMinAmount() . " " . KlarnaHandler::getCurrencySymbolForCountry($data, $klarna->getCountryCode());
                ?>
</td>
							<td class="pclass_flag"><img src="<?php 
                echo JURI::root(true);
                ?>
/administrator/components/com_virtuemart/assets/images/flag/<?php 
                echo $klarna->getLanguageCode();
                ?>
.png" /></td>
						</tr>
	<?php 
            }
            ?>

					</tbody>
Ejemplo n.º 21
0
 /**
  * Build the Payment params
  */
 public function getCheapestMonthlyCost($cart = NULL, $cData)
 {
     if (!class_exists('CurrencyDisplay')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php';
     }
     if (!class_exists('KlarnaAPI')) {
         require JPATH_VMKLARNAPLUGIN . DS . 'klarna' . DS . 'helpers' . DS . 'klarnaapi.php';
     }
     if (!isset($this->klarna) || !$this->klarna instanceof Klarna_virtuemart) {
         return NULL;
     }
     $display_fee = 0;
     $billTotalInCountryCurrency = 0;
     if (isset($cart->pricesUnformatted['billTotal'])) {
         $billTotalInCountryCurrency = KlarnaHandler::convertPrice($cart->pricesUnformatted['billTotal'], $cData['vendor_currency'], $cData['virtuemart_currency_id'], $cart->pricesCurrency);
     }
     if ($billTotalInCountryCurrency <= 0) {
         return NULL;
     }
     $aTypes = array(KlarnaPClass::ACCOUNT, KlarnaPClass::CAMPAIGN);
     $kCheckout = new KlarnaAPI($this->country, $this->lang, 'part', $billTotalInCountryCurrency, KlarnaFlags::CHECKOUT_PAGE, $this->klarna, $aTypes, JPATH_VMKLARNAPLUGIN);
     KlarnaHandler::getCheapestPclass($kCheckout, $cheapest, $minimum);
     vmdebug('getCheapestMonthlyCost', $cart->pricesUnformatted['billTotal'], $billTotalInCountryCurrency, $cheapest, $minimum);
     if ($billTotalInCountryCurrency < $minimum) {
         return NULL;
     }
     if (!class_exists('VirtueMartModelCurrency')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'currency.php';
     }
     $sFee = $kCheckout->getPresentableValuta($cheapest);
     return $sFee;
 }
Ejemplo n.º 22
0
 function getKlarnaAddress()
 {
     if (JVM_VERSION >= 2) {
         require_once JPATH_ROOT . DS . 'plugins' . DS . 'vmpayment' . DS . 'klarna' . DS . 'klarna.php';
         require_once JPATH_ROOT . DS . 'plugins' . DS . 'vmpayment' . DS . 'klarna' . DS . 'klarna' . DS . 'api' . DS . 'klarnaaddr.php';
     } else {
         require_once JPATH_ROOT . DS . 'plugins' . DS . 'vmpayment' . DS . 'klarna.php';
         require_once JPATH_ROOT . DS . 'plugins' . DS . 'vmpayment' . DS . 'klarna' . DS . 'api' . DS . 'klarnaaddr.php';
     }
     $klarna = new Klarna();
     $q = "select * from #__virtuemart_paymentmethods where payment_element = 'klarna' and published = '1' limit 0,1";
     $db = JFactory::getDBO();
     $db->setQuery($q);
     $res = $db->loadAssoc();
     if (empty($res)) {
         return null;
     }
     $id = $res['virtuemart_paymentmethod_id'];
     jimport('joomla.html.parameter');
     $params = explode('|', $res['payment_params']);
     $obj = new stdclass();
     foreach ($params as $item) {
         $item = explode('=', $item);
         $key = $item[0];
         unset($item[0]);
         $item = implode('=', $item);
         if (!empty($item)) {
             $obj->{$key} = @json_decode($item);
         }
     }
     $cData = KlarnaHandler::countryData($obj, 'SWE');
     $language = KlarnaLanguage::fromCode('SE');
     $currency = KlarnaCurrency::fromCode($cData['currency_code']);
     $klarna->config($cData['eid'], $cData['secret'], $cData['country_code'], $language, $currency, $cData['mode']);
     /*
     	$country = JRequest::getVar('virtuemart_country_id', ''); 
     	
     	if (!empty($country) && (is_numeric($country)))
     {
       $q = 'select * from #__virtuemart_countries where virtuemart_country_id = '.$country.' limit 0,1'; 
       $db->setQuery($q); 
       $r = $db->loadAssoc(); 
       $e = $db->getErrorMsg(); 
       
       if (empty($r)) $c = 'se';
       else
       $c = strtolower($r['country_2_code']); 
       
     }
     else 
     */
     $c = 'se';
     $klarna->setCountry($c);
     $klarna->setLanguage($language);
     $klarna->setCurrency($currency);
     //Attempt to get the address(es) associated with the SSN/PNO.
     $pn = JRequest::getVar('socialNumber', '');
     $addrs = $klarna->getAddresses($pn);
     if (empty($addrs)) {
         return null;
     }
     $a = array();
     foreach ($addrs as $key => $addr) {
         $a = $addr->toArray();
         foreach ($a as $k => $v) {
             $a[$k] = utf8_encode($v);
         }
         return $a;
         //if (empty($ar)) return null;
         if ($addr->isCompany) {
             $a['company_name'] = $addr->getCompanyName();
         } else {
             $a['company_name'] = '';
         }
         $a['first_name'] = $addr->getFirstName();
         $a['last_name'] = $addr->getLastName();
         $a['address_1'] = $addr->getStreet();
         $a['email'] = $addr->getEmail();
         $a['phone_1'] = $addr->getTelno();
         $a['phone_2'] = $addr->getCellno();
         $a['address_2'] = $addr->getHouseExt();
         $a['zip'] = $addr->getZipCode();
         $a['city'] = $addr->getCity();
         return $a;
     }
     return null;
     /* If there exists several addresses you would want to output a list in 
          which the customer could choose the address which suits him/her. 
        */
     // Print them if available:
     foreach ($addrs as $key => $addr) {
         echo "<table>\n";
         // This only works if the right getAddresses type is used.
         if ($addr->isCompany) {
             echo "\t<tr><td>Company</td><td> {$addr->getCompanyName()} </td></tr>\n";
         } else {
             echo "\t<tr><td>First name</td><td>{$addr->getFirstName()}</td></tr>\n";
             echo "\t<tr><td>Last name</td><td>{$addr->getLastName()}</td></tr>\n";
         }
         echo "\t<tr><td>Street</td><td>{$addr->getStreet()}</td></tr>\n";
         echo "\t<tr><td>Zip code</td><td>{$addr->getZipCode()}</td></tr>\n";
         echo "\t<tr><td>City</td><td>{$addr->getCity()}</td></tr>\n";
         echo "\t<tr><td>Country</td><td>{$addr->getCountryCode()}</td></tr>\n";
         echo "</table>\n";
     }
     //Something went wrong
     return null;
     echo "{$e->getMessage()} (#{$e->getCode()})\n";
     return null;
     return null;
 }