} //После неудачной оплаты по банковской карте за верификацию закрываем окно if ($_SESSION['quickver_is_begin'] == 1) { unset($_SESSION['quickver_is_begin']); echo '<html><body><script>window.close();</script></body></html>'; exit; } $bill = new billing(get_uid(0)); $action = __paramInit('string', null, 'action', null); // заново оплатить if ($action === 'pay') { $reserveID = __paramInit('string', null, 'reserve_id', null); if ($reserveID) { $success = $bill->setReserveStatus($reserveID, billing::RESERVE_CANCEL_STATUS); if ($success) { if ($bill->updateOrderListStatus($reserveID, billing::STATUS_NEW)) { header_location_exit('/bill/orders/'); } } } } $bill->setPage('fail'); if (!count($bill->list_service)) { header_location_exit('/404.php'); } $reserveData = current($bill->list_service); $js_file = array('billing.js'); $content = 'content.php'; $header = '../../header.new.php'; $footer = '../../footer.new.html'; include '../../template3.php';
/** * Функция для автооплаты (учитывает состояние личного счета). * * @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; }