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());
 }
Beispiel #2
0
                    }
                }
            }
        }
        // Поддержка передачи данных для многошаговых платежных систем
        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']);
Beispiel #3
0
/**
 * Получение курса обмены валюты в серверную валюту
 *
 * @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;
}