require_once 'class.KlarnaInstaller.php'; require_once 'class.KlarnaUninstaller.php'; require_once 'class.KlarnaUtils.php'; require_once 'class.xtcKlarnaDB.php'; require_once 'class.xtcDBResult.php'; // This is to prevent XMLRPC from overwriting a variable that osCommerce uses. if (isset($i)) { $_i = $i; } /** * Dependencies from {@link http://phpxmlrpc.sourceforge.net/} * * Ugly include due to problems in XMLRPC lib (external) */ require_once DIR_KLARNA . 'api/transport/xmlrpc-3.0.0.beta/lib/xmlrpc.inc'; require_once DIR_KLARNA . 'api/transport/xmlrpc-3.0.0.beta/lib/xmlrpc_wrappers.inc'; // Restore OScommerces variable. if (isset($_i)) { $i = $_i; } require_once 'api/Klarna.php'; require_once 'api/pclasses/mysqlstorage.class.php'; require_once 'KITT/classes/KiTT.php'; KiTT_String::$platformEncoding = $_SESSION['language_charset']; class KlarnaCore { public static function getCurrentVersion() { return '1.0.5'; } }
/** * Format the price * * @param float $price the price to format * @param KiTT_Locale $locale unused in this implementation * * @return float formatted price */ public function formatPrice($price, KiTT_Locale $locale = null) { global $xtPrice; $val = $xtPrice->xtcFormat((double) $price, true); return KiTT_String::encode($val, null, 'UTF-8'); }
/** * Update orderstatuses in the database * * @param int $customer The order status id to show the customer * @param int $admin The order status id to show in the administration page * * @return void */ public function updateOrderDatabase($customer, $admin) { global $insert_id; $orderid = mysqli_real_escape_string(xtc_db_connect(), $insert_id); $refno = mysqli_real_escape_string(xtc_db_connect(), $_SESSION['klarna_refno']); $sql_data_arr = array('orders_id' => $orderid, 'orders_status_id' => $customer, 'comments' => "Accepted by Klarna. Reference #: {$refno}", 'customer_notified' => 1, 'date_added' => date("Y-m-d H:i:s")); xtc_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_arr); $has_ordernum_table = xtc_db_fetch_array(xtc_db_query("SELECT COUNT(*) " . "FROM information_schema.tables " . "WHERE table_schema = '" . DB_DATABASE . "' " . "AND table_name = 'klarna_ordernum';")); $has_ordernum_table = $has_ordernum_table['COUNT(*)']; if ($has_ordernum_table > 0) { xtc_db_query("INSERT INTO `klarna_ordernum` (orders_id, klarna_ref) " . "VALUES ({$orderid}, {$refno})"); } // Set pending status and hide it from customer. $status = $_SESSION['klarna_orderstatus']; if (isset($status)) { $orderStatusQuery = $this->_klarnaDB->query("SELECT orders_status_id FROM " . TABLE_ORDERS_STATUS . " WHERE orders_status_name = '{$status}'"); $orderStatusID = $orderStatusQuery->getArray(); $sql_data_arr = array('orders_id' => $orderid, 'orders_status_id' => $orderStatusID['orders_status_id'], 'comments' => "Klarna Orderstatus: {$status}", 'customer_notified' => 0, 'date_added' => date("Y-m-d H:i:s")); xtc_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_arr); xtc_db_query("UPDATE " . TABLE_ORDERS . " SET orders_status='" . $orderStatusID['orders_status_id'] . "' WHERE orders_id='" . $orderid . "'"); } try { $this->_klarna->setEstoreInfo(KiTT_String::encode($orderid)); $this->_klarna->update($_SESSION['klarna_refno']); } catch (Exception $e) { Klarna::printDebug(__METHOD__, "{$e->getMessage()} #({$e->getCode()})"); } //Delete Session with user details unset($_SESSION['klarna_data']); unset($_SESSION['klarna_refno']); unset($_SESSION['klarna_orderstatus']); }
/** * Build an xtcommerce address Array from a KlarnaAddr object. * * @param object $address KlarnaAddr object * * @return array xtcommerce address */ public function klarnaAddrToXtcAddr($address) { global $order; return array('firstname' => KiTT_String::decode($address->getFirstName()), 'lastname' => KiTT_String::decode($address->getLastName()), 'street_address' => KiTT_String::decode($address->getStreet() . ' ' . $address->getHouseNumber() . ' ' . $address->getHouseExt()), 'postcode' => KiTT_String::decode($address->getZipCode()), 'city' => KiTT_String::decode($address->getCity()), 'telephone' => KiTT_String::decode($address->getTelNo()), 'email_address' => KiTT_String::decode($address->getEmail()), 'company' => KiTT_String::decode($address->getCompanyName()), 'state' => $order->delivery['state'], 'zone_id' => $order->delivery['zone_id'], 'country_id' => $order->delivery['country_id'], 'country' => array('id' => $order->delivery['country']['id'], 'title' => $order->delivery['country']['title'], 'iso_code_2' => $order->delivery['country']['iso_code_2'], 'iso_code_3' => $order->delivery['country']['iso_code_3'])); }