function db_insert() { global $config; $this->payment_test = !empty($this->config['test']) || $this->payment_test; $payment = array('payment_module_name' => $this->manifest['name'], 'payment_status' => $this->payment_status, 'payment_provider_id' => $this->payment_provider_id, 'payment_account_id' => $this->payment_account_id, 'payment_account_name' => $this->payment_account_name, 'payment_user_id' => $this->payment_user_id, 'payment_user_name' => $this->payment_user_name, 'payment_dark_matter_paid' => $this->payment_dark_matter_paid, 'payment_dark_matter_gained' => $this->payment_dark_matter_gained, 'payment_amount' => $this->payment_amount, 'payment_currency' => $this->payment_currency, 'payment_external_id' => $this->payment_external_id, 'payment_external_amount' => $this->payment_external_amount, 'payment_external_currency' => $this->payment_external_currency, 'payment_external_date' => $this->payment_external_date, 'payment_test' => $this->payment_test ? 1 : 0, 'payment_comment' => $this->description_generated[PAYMENT_DESCRIPTION_MAX], 'payment_external_lots' => $this->payment_dark_matter_paid / get_mm_cost()); $replace = false; if ($this->payment_id) { $payment['payment_id'] = $this->payment_id; $replace = true; } $query = array(); foreach ($payment as $key => $value) { $value = is_string($value) ? '"' . db_escape($value) . '"' : $value; $query[] = "`{$key}` = {$value}"; } $this->db->doquery(($replace ? 'REPLACE' : 'INSERT') . ' INTO `{{payment}}` SET ' . implode(',', $query) . ';'); return $this->db_get_by_id($this->db->db_insert_id()); }
} } } } // Поддержка передачи данных для многошаговых платежных систем if (is_array($pay_link['DATA'])) { foreach ($pay_link['DATA'] as $key => $value) { $template->assign_block_vars('pay_link_data', array('FIELD' => $key, 'VALUE' => $value)); } } if (is_array($pay_link) && in_array($pay_link['PAY_LINK_METHOD'], array('POST', 'GET', 'LINK', 'STEP'))) { // TODO Переделать это под assign_vars_recursive и возвращать пустые строки если нет платежного метода - для унификации формы в темплейте $template->assign_vars(array('PAY_LINK_METHOD' => $pay_link['PAY_LINK_METHOD'], 'PAY_LINK_URL' => $pay_link['PAY_LINK_URL'])); } else { throw new exception($lang['pay_msg_request_paylink_unsupported'], ERR_ERROR); } } catch (exception $e) { $template->assign_block_vars('result', $response = array('STATUS' => $e->getCode(), 'MESSAGE' => $e->getMessage())); $debug->warning('Результат операции: код ' . $e->getCode() . ' сообщение "' . $e->getMessage() . '"', 'Ошибка платежа', LOG_INFO_PAYMENT); } } // Прегенерированные пакеты foreach ($unit_available_amount_list as $unit_amount => $discount) { $temp = sn_module_payment::currency_convert($unit_amount, 'MM_', $player_currency); $template->assign_block_vars('mm_amount', array('VALUE' => $unit_amount, 'PRICE_TEXT' => pretty_number($temp, 2), 'CURRENCY' => $player_currency, 'DISCOUNT' => $discount, 'DISCOUNT_PERCENT' => $discount * 100, 'DISCOUNTED' => $unit_amount * (1 + $discount), 'TEXT' => pretty_number($unit_amount), 'TEXT_DISCOUNTED' => pretty_number($unit_amount * (1 + $discount)))); } $currency = $payment_module ? sn_module_payment::$payment_methods[$payment_type_selected][$payment_method_selected]['currency'] : ''; $bonus_percent = round(sn_module_payment::bonus_calculate($request['metamatter'], true, true) * 100); $income_metamatter_text = pretty_number(sn_module_payment::bonus_calculate($request['metamatter']), true, true); $template->assign_vars(array('PAGE_HEADER' => $lang['sys_metamatter'], 'URL_PURCHASE' => $config->url_purchase_metamatter, 'PAYMENT_TYPE' => $payment_type_selected, 'PAYMENT_METHOD' => $payment_method_selected, 'PAYMENT_METHOD_NAME' => $lang['pay_methods'][$payment_method_selected], 'PAYMENT_MODULE' => $payment_module, 'PAYMENT_MODULE_NAME' => $lang["module_{$payment_module}_name"], 'PAYMENT_MODULE_DESCRIPTION' => $lang["module_{$payment_module}_description"], 'PLAYER_CURRENCY' => $player_currency, 'PLAYER_CURRENCY_PRICE_PER_MM' => sn_module_payment::currency_convert(1, $player_currency, 'MM_', 10), 'UNIT_AMOUNT' => (double) $request['metamatter'], 'UNIT_AMOUNT_TEXT' => pretty_number($request['metamatter']), 'UNIT_AMOUNT_BONUS_PERCENT' => $bonus_percent, 'UNIT_AMOUNT_TEXT_DISCOUNTED' => $income_metamatter_text, 'UNIT_AMOUNT_TEXT_COST_BASE' => pretty_number(sn_module_payment::currency_convert($request['metamatter'], 'MM_', $player_currency), 2), 'PAYMENT_CURRENCY_EXCHANGE_DEFAULT' => pretty_number(get_mm_cost(), true, true), 'PAYMENT_CURRENCY_DEFAULT_TEXT' => $lang['pay_currency_list'][$config->payment_currency_default], 'METAMATTER' => mrc_get_level($user, '', RES_METAMATTER), 'METAMATTER_COST_TEXT' => sprintf($lang['pay_mm_buy_conversion_cost'], pretty_number($request['metamatter'], true, true), pretty_number(sn_module_payment::currency_convert($request['metamatter'], 'MM_', $currency), 2, true), $currency), 'METAMATTER_COST_BONUS_TEXT' => $bonus_percent ? sprintf($lang['pay_mm_buy_real_income'], pretty_number($bonus_percent, true, true), $income_metamatter_text) : '', 'DARK_MATTER_DESCRIPTION' => $lang['info'][RES_DARK_MATTER]['description'], 'PAYMENT_AVAILABLE' => sn_module_get_active_count('payment') && !defined('SN_GOOGLE'))); display($template, $lang['sys_metamatter']);
/** * Получение курса обмены валюты в серверную валюту * * @param $currency_symbol * * @return float */ function get_exchange_rate($currency_symbol) { global $config; $currency_symbol = strtolower($currency_symbol); $config_field = 'payment_currency_exchange_' . $currency_symbol; // Заворачиваем получение стоимости ММ через перекрываемую процедуру $exchange_rate = floatval($currency_symbol == 'mm_' ? get_mm_cost() : $config->{$config_field}); return $exchange_rate; }