<h3 class="b-layout__h3">Привязанная платежная система</h3> <?php if (!WalletTypes::checkWallet($wallet)) { ?> <a href="javascript:void(0)" onclick="toggleWalletPopup(event);" class="b-button b-button_rectangle_color_green"> <span class="b-button__b1"> <span class="b-button__b2"> <span class="b-button__txt">Привязать</span> </span> </span> </a> <?php } else { //if ?> <div class="b-layout__txt b-layout__txt_fontsize_15 b-layout__txt_color_808080"> <?php echo WalletTypes::getNameWallet($wallet->data['type'], 1); ?>   <?php echo $wallet->getWalletBySecure(); ?> </div> <div class="b-layout__txt"> <a class="b-layout__link b-layout__link_dot_c10600 b-layout__link_fontsize_15" href="javascript:void(0)" onclick="toggleWalletPopup(event);">Настроить</a> </div> <?php } //else ?> </div>
if (!($freeze_set || $freezed_now)) { return; } ?> <div class="b-layout__txt <?php echo !$pro_last ? 'b-layout__txt_hide' : ''; ?> buyed_pro"> <table class="b-layout__table b-layout__table_center b-layout__table_width_940 b-layout__table_margtop_20 b-layout__table_margbot_30"> <tr class="b-layout__tr"> <td id="autoprolong_html" class="b-layout__td b-layout__td_left b-layout__td_width_50ps b-layout__td_width_full_ipad"> <?php if ($u_is_pro_auto_prolong == 't') { ?> <?php $wallet = WalletTypes::initWalletByType(get_uid(false)); if ($wallet != false) { include $_SERVER['DOCUMENT_ROOT'] . '/bill/widget/tpl.info_wallet.php'; } else { $service = array('auto' => $u_is_pro_auto_prolong, 'id' => get_uid(false)); $_SESSION['redirect_uri_wallet'] = is_emp() ? '/payed-emp/' : '/payed/'; ?> <span class="walletInfo"> <div class="b-layout__h3 b-layout__h3_padbot_5">Автопродление</div> </span> <span id="wallet"> <?php $popup_content = $_SERVER['DOCUMENT_ROOT'] . '/bill/widget/popups/popup.wallet.php'; include $_SERVER['DOCUMENT_ROOT'] . '/bill/widget/tpl.popup.php'; ?>
<div class="walletSelect b-fon__body b-fon__body_pad_10 b-fon__body_margbot_1 b-fon__body_padleft_30 b-fon__body_fontsize_13 b-fon__body_bg_ffebbf <?php echo $service['auto'] == 't' && !WalletTypes::isWalletActive() ? '' : 'b-layout__txt_hide'; ?> " id="select_wallet<?php echo $service['id']; ?> "> <span class="b-icon b-icon_sbr_oattent b-icon_margleft_-25"></span>Настройте <a href="javascript:void(0)" class="b-layout__link" onclick="toggleWalletPopup(event);">платежную систему</a>! </div>
/** * Активирует метод платежа по его типу и ИД пользователя. * * @param int $type Тип метода платежа @see WalletTypes::getAllTypes(); * @param int $uid ИД Пользователя * * @return mixed */ public static function setActiveWallet($type, $uid) { global $DB; if (!WalletTypes::isValidType($type)) { return false; } self::clearActiveWallet($uid); $sql = 'UPDATE bill_wallet SET active = true WHERE type = ?i AND uid = ?i'; return $DB->query($sql, $type, $uid); }
<?php include $_SERVER['DOCUMENT_ROOT'] . "/bill/widget/tpl.last_history.php"; ?> <?php include $_SERVER['DOCUMENT_ROOT'] . "/bill/widget/tpl.right_help.php"; ?> <span class="walletRightBlock"> <?php $wallet = $bill->wallet; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $u = new users(); $u->GetUserByUID(get_uid('false')); ?> <?php if ($u->GetField(get_uid(false), $e, 'is_pro_auto_prolong', false) == 't' && WalletTypes::checkWallet($wallet)) { ?> <?php include $_SERVER['DOCUMENT_ROOT'] . "/bill/widget/tpl.right_wallet.php"; ?> <?php } ?> </span>
} else { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers_answers.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/op_codes.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/rating.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wallet/wallet.php'; $js_file = array('payed.js', 'billing.js'); $user = new freelancer(); // Изменяем авто продление PRO, если нужно if (strtolower($_POST['pro_auto_prolong']) == 'on') { $user->setPROAutoProlong('on', $uid); $result['success'] = true; if (!WalletTypes::isWalletActive($uid)) { $result['wallet_popup'] = true; } echo json_encode($result); exit; } if (strtolower($_POST['pro_auto_prolong']) == 'off') { $user->setPROAutoProlong('off', $uid); echo json_encode(array('success' => true)); exit; } if ($uid) { $bill = new billing($uid); $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['is_freezed'] ? false : $_SESSION['pro_last']['cnt']; $_SESSION['is_was_pro'] = $_SESSION['pro_last'] ? true : payed::isWasPro($_SESSION['uid']);
/** * Функция для автооплаты (учитывает состояние личного счета). * * @param billing $bill Объект биллинга (должен быть подготовлен резерв перед оплатой @see self::preparePayments()) * @param float $ammount Сумма для списывания */ public static function autoPayed(billing $bill, $ammount) { if ($bill->reserved <= 0) { return false; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wallet/wallet.php'; $complete = false; $wallet = WalletTypes::initWalletByType($bill->user['uid']); // Пытаемся оплатить из личного счета иначе автооплатой если она включена // @todo при неудаче покупки пробовать ли оплатить через привязанный кошелек? if ($bill->acc['sum'] >= $ammount) { $bill->transaction = $bill->account->start_transaction($bill->user['uid'], 0); $complete = $bill->completeOrders($bill->reserved); if ($complete) { $bill->account->commit_transaction($bill->transaction, $bill->user['uid'], null); } } elseif (WalletTypes::checkWallet($wallet)) { if ($wallet->api->checkToken()) { // Проводим списывание денег $complete = $wallet->payment($ammount); } else { // Ключ не действителен сообщаем об этом владельцу $complete = false; } } // Если все плохо отменяем операции if (!$complete) { $success = $bill->setReserveStatus($bill->reserved, self::RESERVE_CANCEL_STATUS); if ($success) { $bill->updateOrderListStatus($bill->reserved, self::STATUS_DELETE); } } return $complete; }
} ?> <div class="b-radio__item b-radio__item_padbot_10"> <input id="wallet<?php echo $type; ?> " class="b-radio__input b-radio__input_top_1" name="wallet" type="radio" value="<?php echo $type; ?> " > <label class="b-radio__label b-radio__label_fontsize_15" for="wallet<?php echo $type; ?> "> <?php echo WalletTypes::getNameWallet($type); ?> </label> </div> <?php } //foreach ?> </div> <div class="b-buttons b-buttons_padtop_20"> <a href="javascript:void(0)" class="b-button b-button_flat b-button_flat_green walletActivate">Сохранить изменения</a> <span class="b-buttons__txt">или</span> <a class="b-buttons__link" href="javascript:void(0)" onclick="toggleWalletPopup();">отменить</a> </div> <form id="walletForm" method="POST" action=""></form>
public function failAutoprolong($info, $service = 'pro') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wallet/wallet.php'; $user = $info['user']; if ($user['bill_subscribe'] == 'f') { return; } $date = date('j') . ' ' . monthtostr(date('n'), true) . ' ' . date('Y года'); $cost = $info['sum_cost']; $wallet = WalletTypes::initWalletByType($user['uid']); $type = WalletTypes::checkWallet($wallet) ? $wallet->data['type'] : -1; $walletName = WalletTypes::getNameWallet($type, 3, $user['acc_id']); if ($service == 'pro') { $this->subject = 'FL.ru: Автопродление аккаунта PRO отключено'; $message = "Сегодня, {$date}, должно было состояться повторное списание средств для автоматического продления срока действия вашего аккаунта PRO.<br/>"; $message .= "Всего с {$walletName} должно быть списано {$cost} " . ending($cost, 'рубль', 'рубля', 'рублей') . ', однако в процессе списания вновь произошла ошибка.<br/><br/>'; $message .= 'Срок действия аккаунта PRO завершен, а его автопродление временно отключено и возобновится при следующем приобретении услуги.<br/><br/>'; $message .= "Информацию о повторном приобретении услуг и автопродлении, а также ответы на все интересующие вопросы вы можете найти в нашем <a href='https://feedback.fl.ru/{$this->_addUrlParams('b', '?')}'>сообществе поддержки</a>."; } $this->recipient = "{$user['uname']} {$user['usurname']} [{$user['login']}] <{$user['email']}>"; $this->message = $this->getHtml($user['login'], $message, array('header' => 'default', 'footer' => 'default'), array('login' => $user['login'])); $this->send('text/html'); }
/** * * Инициализируем класс для работы с методом оплаты * * @param integer $uid По умолчанию текущий пользователь * @param integer $type Если не задано берет активный метод оплаты и возвращает инициализированный объект * * @return bool|walletYandex|walletWebMoney */ static function initWalletByType($uid = null, $type = null) { if ($uid === null) { $uid = get_uid(false); } if ($type === null) { $type = WalletTypes::getTypeWalletActive($uid); } switch ($type) { case self::WALLET_YANDEX: require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/wallet/walletYandex.php"; $wallet = new walletYandex($uid); return $wallet; break; case self::WALLET_WEBMONEY: require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/wallet/walletWebmoney.php"; $wallet = new walletWebmoney($uid); return $wallet; case self::WALLET_ALPHA: require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/wallet/walletAlpha.php"; $wallet = new walletAlpha($uid); return $wallet; case self::WALLET_DOL: default: return false; break; } }