Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
— |
api_24h.tv_source_urfa-php_utm5_api.php [2016/12/02 19:45] (текущий) kayfolom создано |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | <code php> | ||
+ | <?php | ||
+ | @ini_set("display_errors", "1"); error_reporting(E_ALL); | ||
+ | //@ini_set("display_errors", "0"); error_reporting(0); | ||
+ | |||
+ | include_once("config.php"); | ||
+ | include_once("/netup/utm5/bin/urfa/URFAClient.php"); | ||
+ | |||
+ | // Получаем ID пользователя (в контексте UTM5 - Номер лицевого счета) по его IP адресу | ||
+ | function UTM_GetUserIDByIP($IP) { | ||
+ | global $Setting; | ||
+ | $query = "Select service_links.account_id From service_links Inner Join iptraffic_service_links ON service_links.id = iptraffic_service_links.id "; | ||
+ | $query.= "Inner Join ip_groups ON iptraffic_service_links.ip_group_id = ip_groups.ip_group_id "; | ||
+ | $query.= "Where ip_groups.is_deleted = '0' AND iptraffic_service_links.is_deleted = '0' AND service_links.is_deleted = '0' AND "; | ||
+ | $query.= "inet_ntoa(4294967295 & ip_groups.ip) = '$IP'"; | ||
+ | $db_connect = mysql_connect($Setting['db_host'], $Setting['db_user'], $Setting['db_password']) or die ("Connect failed"); | ||
+ | mysql_select_db($Setting['db_base'], $db_connect); | ||
+ | $mysql_res = mysql_query($query, $db_connect); | ||
+ | $row = mysql_fetch_array($mysql_res); | ||
+ | if (isset($row['account_id'])) { | ||
+ | return($row['account_id']); | ||
+ | } else { | ||
+ | return(0); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | function UTM_GetUserIDByLoginAndPassword($login, $password) { | ||
+ | //Зарезервировано для будущего использования | ||
+ | return(0); | ||
+ | } | ||
+ | |||
+ | // Проверка наличия средств на балансе лицевого счета | ||
+ | function UTM_CheckUserBalance($AccountID, $Summa) { | ||
+ | global $Setting; | ||
+ | if ($Setting['Balance=Balance+Credit']) { | ||
+ | $query = "SELECT (balance + credit) as account_balance FROM accounts WHERE is_deleted = 0 AND id = 1"; | ||
+ | } else { | ||
+ | $query = "SELECT (balance) as account_balance FROM accounts WHERE is_deleted = 0 AND id = 1"; | ||
+ | } | ||
+ | $db_connect = mysql_connect($Setting['db_host'], $Setting['db_user'], $Setting['db_password']) or die ("Connect failed"); | ||
+ | mysql_select_db($Setting['db_base'], $db_connect); | ||
+ | $mysql_res = mysql_query($query, $db_connect); | ||
+ | $row = mysql_fetch_array($mysql_res); | ||
+ | if (isset($row['account_balance'])) { | ||
+ | $AccountBalance = $row['account_balance']; | ||
+ | if ($AccountBalance>=$Summa) { | ||
+ | return(1); | ||
+ | } else { | ||
+ | return(0); | ||
+ | } | ||
+ | } else { | ||
+ | return(-1); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Функция списания средств с лицевого счета пользователя | ||
+ | function UTM_ContributeFunds($AccountID, $Summa, $Message, $TransactionID, $TariffID ) { | ||
+ | global $Setting; | ||
+ | // Проверяем наличие средств | ||
+ | if (UTM_CheckUserBalance($AccountID, $Summa)!=1) { | ||
+ | $Result["id"] = -1; | ||
+ | $Result["status"] = -1; // Возвращаем статус "не оплачен(-1)" | ||
+ | return($Result); | ||
+ | } | ||
+ | $Summa = -$Summa; | ||
+ | $Result = array( "id" => -1, "status" => -1); | ||
+ | $query = "SELECT payment_absolute, payment_ext_number FROM payment_transactions WHERE method = '".$Setting['UTMPayment_Method_ID']."' AND payment_ext_number = '$TransactionID' AND account_id = 'AccountID'"; | ||
+ | $db_connect = mysql_connect($Setting['db_host'], $Setting['db_user'], $Setting['db_password']) or die ("Connect failed"); | ||
+ | mysql_select_db($Setting['db_base'], $db_connect); | ||
+ | $mysql_res = mysql_query($query, $db_connect); | ||
+ | $row = mysql_fetch_array($mysql_res); | ||
+ | if (isset($row['payment_absolute']) && $row['payment_absolute']==$Summa) { // Платёж уже внесен, возвращаем отсутсиве ошибки, выходим. | ||
+ | $Result["id"] = $row['payment_ext_number']; | ||
+ | $Result["status"] = 1; | ||
+ | return($Result); | ||
+ | } | ||
+ | try { | ||
+ | $urfa_admin = new URFAClient_Admin($Setting['UTMCore_Login'], $Setting['UTMCore_Password'], $Setting['UTMCoreHost'], $Setting['UTMCorePort']); | ||
+ | } catch (Exception $exception) { | ||
+ | // Ошибка подключенияк биллингу, отправляем сигнал о системной ошибке | ||
+ | $Result["id"] = -1; | ||
+ | $Result["status"] = -2; | ||
+ | return($Result); | ||
+ | } | ||
+ | $payment_time = time(); | ||
+ | $burn_date = 0; | ||
+ | $sign_admin = trim($Setting['PaymentPrefixForAdmin']." ".$Message." TariffID=".$TariffID); | ||
+ | $sign_user = trim($Setting['PaymentPrefixForUser']." ".$Message); | ||
+ | $turn_on_inet = 0; | ||
+ | $payment_transaction = $urfa_admin->rpcf_add_payment_for_account($AccountID, $Summa, $payment_time, $burn_date, | ||
+ | $Setting['UTMPayment_Method_ID'], $sign_admin, $sign_user, $TransactionID, $turn_on_inet); //0x3110 | ||
+ | if (isset($payment_transaction['payment_transaction_id'])) { | ||
+ | // SendMessageToUser($AccountID,"Вы подписались на услугу 24h.tv ".$Message); // Отправка сообщения пользователю (реализовать нужно самостоятельно | ||
+ | // Платеж удался, отправляем номер транзакции и статус=1 | ||
+ | $Result["id"] = $payment_transaction['payment_transaction_id']; | ||
+ | $Result["status"] = 1; | ||
+ | return($Result); | ||
+ | } else { | ||
+ | // Платеж не удался, отправляем сигнал о системной ошибке | ||
+ | $Result["id"] = -1; | ||
+ | $Result["status"] = -2; | ||
+ | return($Result); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </code> |