/** * Wrapper around remote get_addresses call that caches result in * the session. * * @param string $pno pno to call get_addresses for * * @return array the result of get_addresses or the cached value */ public function getAddresses($pno) { $cache = array(); // Check the session for calls if (array_key_exists(self::$_session_key, $_SESSION)) { $cache = unserialize(base64_decode($_SESSION[self::$_session_key])); } if (array_key_exists($pno, $cache)) { return $cache[$pno]; } $addrs = $this->_api->getAddresses($pno, null, KlarnaFlags::GA_GIVEN); $cache[$pno] = $addrs; $_SESSION[self::$_session_key] = base64_encode(serialize($cache)); return $addrs; }
<?php require_once dirname(dirname(__FILE__)) . '/Klarna.php'; // Dependencies from http://phpxmlrpc.sourceforge.net/ require_once dirname(dirname(__FILE__)) . '/transport/xmlrpc-3.0.0.beta/lib/xmlrpc.inc'; require_once dirname(dirname(__FILE__)) . '/transport/xmlrpc-3.0.0.beta/lib/xmlrpc_wrappers.inc'; $k = new Klarna(); $k->config(0, 'sharedSecret', KlarnaCountry::SE, KlarnaLanguage::SV, KlarnaCurrency::SEK, Klarna::BETA, 'json', './pclasses.json'); $k->setCountry('se'); // Sweden only try { $addrs = $k->getAddresses('410321-9202'); // $addrs is a list of KlarnaAddr instances. echo "OK\n"; } catch (Exception $e) { echo "{$e->getMessage()} (#{$e->getCode()})\n"; }
/** * Ajax request callback function */ function ajax_request() { // The $_REQUEST contains all the data sent via ajax if (isset($_REQUEST)) { if ('' != $this->partpay_eid && '' != $this->partpay_secret) { $klarna_eid = $this->partpay_eid; $klarna_secret = $this->partpay_secret; $klarna_testmode = $this->partpay_testmode; } elseif ('' != $this->invo_eid && '' != $this->invo_secret) { $klarna_eid = $this->invo_eid; $klarna_secret = $this->invo_secret; $klarna_testmode = $this->invo_testmode; } // Test mode or Live mode if ($klarna_testmode == 'yes') { // Disable SSL if in testmode $klarna_ssl = 'false'; $klarna_mode = Klarna::BETA; } else { // Set SSL if used in webshop if (is_ssl()) { $klarna_ssl = 'true'; } else { $klarna_ssl = 'false'; } $klarna_mode = Klarna::LIVE; } $k = new Klarna(); $k->config($klarna_eid, $klarna_secret, 'SE', 'SE', get_woocommerce_currency(), $klarna_mode, $pcStorage = 'json', $pcURI = '/srv/pclasses.json'); $pno_getadress = $_REQUEST['pno_getadress']; $return = array(); $k->setCountry('SE'); // Sweden only try { $addrs = $k->getAddresses($pno_getadress); foreach ($addrs as $addr) { //$return[] = $addr->toArray(); $return[] = array('email' => utf8_encode($addr->getEmail()), 'telno' => utf8_encode($addr->getTelno()), 'cellno' => utf8_encode($addr->getCellno()), 'fname' => utf8_encode($addr->getFirstName()), 'lname' => utf8_encode($addr->getLastName()), 'company' => utf8_encode($addr->getCompanyName()), 'careof' => utf8_encode($addr->getCareof()), 'street' => utf8_encode($addr->getStreet()), 'zip' => utf8_encode($addr->getZipCode()), 'city' => utf8_encode($addr->getCity()), 'country' => utf8_encode($addr->getCountry())); } } catch (Exception $e) { // $message = "{$e->getMessage()} (#{$e->getCode()})\n"; $return = $e; $return = array('get_address_message' => __('No address found', 'woocommerce-gateway-klarna')); } wp_send_json($return); // If you're debugging, it might be useful to see what was sent in the $_REQUEST // print_r($_REQUEST); } else { echo ''; die; } die; }
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; }