Перейти до

zaza12

Сitizens
  • Всього повідомлень

    186
  • Приєднався

  • Останній візит

  • Дней в лидерах

    1

Все, що було написано zaza12

  1. Значит или возможно вы единственный у кого остались продвинутые пользователи для PPP ! У меня например мало кто знает о существовании настроек сетевых адаптеров Важность этой функции такова, что без нее биллинг вообще не нужен , имхо пришла пора поработать микротику свитчем
  2. zaza12

    Ubilling кредиты

    Не знаю как правильно сделать , возможно это гон , но при ежедневной оплате для кредита на 2 суток я для себя подправил строчку в модуле creditor billing_setcredit($user_login, $tariffprice + $tariffprice + $sc_price ); для 3 дней кредита : billing_setcredit($user_login, $tariffprice + $tariffprice + $tariffprice + $sc_price); и т д не важно какую сумму кредита получают абоненты , тарифов может быть много и у всех разные суммы на 3 дня
  3. Вы не поведаете что с этой важнейшей подробной жизненной историей незнакомых людей потом можно делать ?
  4. zaza12

    wayforpay ubilling

    что бы закрыть тему - weyforpay.ini ; Параметры WAYFORPAY ;Включение логов для отладки frontend backend forms.log, требует права на запись! DEBUG_MODE=1 ;Ссылка WAYFORPAY WAYFORPAY_LINK="https://secure.wayforpay.com/pay" ;Сайт мерчанта. Данная информация будет видна на странице оплаты заказа. DOMAIN_NAME="http://my-site.xxx" ;Тестовые риквизиты мерчанта WAYFORPAY MERCHANT_ACCOUNT="test_merch_n1" MERCHANT_KEY="flk3409refn54t54t*FNJRET" ;Рекомендуемые суммы платежа. AMOUNT=100,150,200 ;Язык платежной страницы. LANG=RU ;Валюта платежа. CURRENCY=UAH ;URL, на который система должна отправлять ответ с результатом платежа напрямую мерчанту, (url фронтенда) SERVICE_URL="http://my-site.xxx/frontend/wayforpay/" ;URL, на который система должна перенаправлять клиента с результатом платежа. ;В случае отсутствия параметра переадресация происходит на страницу результата оплаты checkout psp RETURN_URL= ;Список платежных систем должны быть разделены точкой с запятой - card; privat24; lpTerminal; btc; credit; payParts. PAYMENT_SYSTEMS="card" ;Массив с наименованием заказанных товаров. Данная информация будет видна на странице оплаты заказа. PRODUCT_NAME=ОПЛАТА ИНТЕРНЕТ ;Массив с ценами за единицу товара. Данная информация будет видна на странице оплаты заказа. PRODUCT_PRICE=1 ;Массив с количеством заказанного товара по каждой позиции. PRODUCT_COUNT=1 ; Параметры мерчанта MERCHANT_NAME = "super-puper-lan" MERCHANT_URL = "http://my-site.xxx" MERCHANT_LOGO = "http://my-site.xxx/logo.png" MERCHANT_CURRENCY = "грн" TEMPLATE = "template.html"
  5. zaza12

    wayforpay ubilling

    1 часть кода платежки - backend , <?php // wayforpay //Ловим методом GET виртуальный идентификатор пользователя if (isset($_GET['customer_id'])) { $customer_id=$_GET['customer_id']; } else { die('customer_id fail'); } // подключаем API OpenPayz include ("../../libs/api.openpayz.php"); // подгружаем конфиг $conf_wayforpay=parse_ini_file("config/wayforpay.ini"); // переменные о мерчанте $merchant_name=$conf_wayforpay['MERCHANT_NAME']; $merchant_url=$conf_wayforpay['MERCHANT_URL']; $merchant_logo=$conf_wayforpay['MERCHANT_LOGO']; $merchant_currency=$conf_wayforpay['MERCHANT_CURRENCY']; $template_file=$conf_wayforpay['TEMPLATE']; $raw_amount=$conf_wayforpay['AMOUNT']; // настройки WAYFORPAY $merchant_account=$conf_wayforpay['MERCHANT_ACCOUNT']; $domain_name=$conf_wayforpay['DOMAIN_NAME']; $merchant_key=$conf_wayforpay['MERCHANT_KEY']; $service_url=$conf_wayforpay['SERVICE_URL']; $return_url=$conf_wayforpay['RETURN_URL']; $order_date= time(); $date= date("ymdHis"); $order_reference=$customer_id.'-'.$date; $wayforpay_link=$conf_wayforpay['WAYFORPAY_LINK']; $currency=$conf_wayforpay['CURRENCY']; $payment_systems=$conf_wayforpay['PAYMENT_SYSTEMS']; $lang=$conf_wayforpay['LANG']; $product_name=$conf_wayforpay['PRODUCT_NAME']; $product_price=$conf_wayforpay['PRODUCT_PRICE']; $product_count=$conf_wayforpay['PRODUCT_COUNT']; $amount=array(); if (!empty($raw_amount)) { $amount= explode(',', $raw_amount); } //сумма платежа if (isset($_POST['PaySumm'])) { $money=vf(trim($_POST['PaySumm'])); } else { $money=200; } function paysumm_form($amount,$merchant_currency) { //сборка выбора платежа if (!empty($amount)) { $moneySub=''; foreach ($amount as $each) { $moneySub.='<input name="PaySumm" id="cash'.$each.'" value="'.$each.'" checked="" type="radio"> <label for="cash'.$each.'">'.$each.' '.$merchant_currency.'</label><br>'."\n"; } } else { $moneySub='<input type="text" name="PaySumm" value="" size="5"> Введите сумму платежа'; } $result=' <form action="" method="POST">Выберите сумму платежа</br> '.$moneySub.' <br> <input type="submit" value="Перейти к оплате"> </form> '; return ($result); } // генерация контрольной подписи HMAC_MD5 $string = "{$merchant_account};{$domain_name};{$order_reference};{$order_date};{$money};{$currency};{$product_name};{$product_price};{$product_count}"; $signature= hash_hmac("md5",$string,$merchant_key); function wayforpay_form($merchant_currency,$wayforpay_link,$amount, $merchant_account,$domain_name,$signature,$order_reference,$order_date,$money, $currency,$product_name,$product_price,$product_count,$lang,$return_url,$service_url,$payment_systems) { $form=' <br> <h3>Выбран платеж на сумму '.$money.' '.$merchant_currency.'</h3> <form action="'.$wayforpay_link.'" method="POST"> <input type="hidden" name="merchantAccount" value="'.$merchant_account.'"> <input type="hidden" name="merchantDomainName" value="'.$domain_name.'"> <input type="hidden" name="merchantTransactionType" value="AUTO"> <input type="hidden" name="merchantTransactionSecureType" value="AUTO"> <input type="hidden" name="merchantSignature" value="'.$signature.'"> <input type="hidden" name="orderReference" value="'.$order_reference.'"> <input type="hidden" name="orderDate" value="'.$order_date.'"> <input type="hidden" name="amount" value="'.$money.'"> <input type="hidden" name="currency" value="'.$currency.'"> <input type="hidden" name="productName[]" value="'.$product_name.'"> <input type="hidden" name="productPrice[]" value="'.$product_price.'"> <input type="hidden" name="productCount[]" value="'.$product_count.'"> <input type="hidden" name="language" value="'.$lang.'"> <input type="hidden" name="returnUrl" value="'.$return_url.'"> <input type="hidden" name="serviceUrl" value="'.$service_url.'"> <input type="hidden" name="paymentSystems" value="'.$payment_systems.'"> <br> <input type="submit" name="Submit" value="Оплатить"> </form> '; return($form); } // форма выбора сумы платежа if (!isset($_POST['PaySumm'])) { $payment_form= paysumm_form($amount,$merchant_currency); } else { // подтверждаем форму платежа $payment_form= wayforpay_form($merchant_currency, $wayforpay_link,$amount, $merchant_account, $domain_name,$signature,$order_reference,$order_date, $money,$currency,$product_name,$product_price,$product_count,$lang,$return_url,$service_url,$payment_systems); } //DEBUG_MODE=1 включаем log if ($conf_wayforpay['DEBUG_MODE']) { $datetime=curdatetime(); $log_file="config/forms.log"; $remote_ip=$_SERVER['WAYFORPAY_LINK']; $log_data='===== '.$datetime.' ====='."\n"; $log_data.=$payment_form; $log_data.="\n".'================================'."\n"; file_put_contents($log_file, $log_data,FILE_APPEND); } //показываем в темплейт include($template_file); ?>
  6. zaza12

    wayforpay ubilling

    Вот фронтенд , уже запущен, и работает. Гарантировать правильность не буду , но это бесплатно. Вопрос с curl , как я его только не собирал и тестировал , так и не понял , доходит accept на шлюз , или нет (запросы от wayforpay продолжают сыпаться). Частично или на постоянку решил через die(''.$send_json.''); никакой ценной информации там нет . Если понадобится более обширный сервис с запросами о статусе , или выставить инвойс и т д , то это уже будет другая басня. <?php // Фронтенд к Ubilling для получения оплат от "Wayforpay" // подключаем API OpenPayz include ('../../libs/api.openpayz.php'); //конфиг wayforpay $conf_wayforpay=parse_ini_file('../../backend/wayforpay/config/wayforpay.ini'); //получаем ответ и создаем все нужное global $conf_wayforpay; $json = file_get_contents('php://input'); $data = json_decode($json, true); $merchantAccount=$data['merchantAccount']; $merchantSignature=$data['merchantSignature']; $orderReference=$data['orderReference']; $amount=$data['amount']; $currency=$data['currency']; $authCode=$data['authCode']; $cardPan=$data['cardPan']; $transactionStatus=$data['transactionStatus']; $reasonCode=$data['reasonCode']; $merchant_key=$conf_wayforpay['MERCHANT_KEY']; $weyforpay_link=$conf_wayforpay['WAYFORPAY_LINK']; $time=time(); $status='accept'; // генерация контрольной подписи HMAC_MD5 $string="{$merchantAccount};{$orderReference};{$amount};{$currency};{$authCode};{$cardPan};{$transactionStatus};{$reasonCode}"; $send_string="{$orderReference};{$status};{$time}"; $sign_hash = hash_hmac("md5",$string,$merchant_key); $send_signature = hash_hmac("md5",$send_string,$merchant_key); //DEBUG_MODE=1 включаем log if ($conf_wayforpay['DEBUG_MODE']) { $datetime=curdatetime(); $log_file="config/forms.log"; $log_data='========== '.$datetime.' ==========='."\n"; $log_data.=print_r($data,true); $log_data.='merchant_Signature = '.$merchantSignature."\n"; $log_data.='sign_hashSignature = '.$sign_hash."\n"; $log_data.='=========================================='."\n"; file_put_contents($log_file,$log_data,FILE_APPEND); } /* собираем данные для ответа на weyforpay.В случае, если WayForPay НЕ получит корректный * ответ от сервера торговца, то система будет направлять запросы в *течении 4-х * суток или до получения правильного ответа. */ //формируем json для отправки ответа на шлюз что запрос принят и обработан $send_data = array(); $send_data['orderReference']=$orderReference; $send_data['status']='accept'; $send_data['time']=$time; $send_data['signature']=$send_signature; $send_json=json_encode($send_data); // проверка подписи if ($merchantSignature == $sign_hash) { /*==>> //curl не использую вопрос решил отправляем accept через die(''.$send_json.''); никакой ценной инфы там нет $ch = curl_init($weyforpay_link); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $send_json); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_exec($ch); // Проверяем наличие ошибок в ответе на шлюз if (!curl_errno($ch)) {$info = curl_getinfo($ch);} file_put_contents("config/forms.log",print_r('=== send to w4p == '.$datetime.' ==='."\n".$send_json,true)."\n".'Прошло '. $info['total_time']. ' секунд во время запроса к '.$info['url'].' , http_code: '.$info['http_code']."\n".'=========================================='."\n",FILE_APPEND); curl_close($ch); <<<==*/ // проверка успешности платежа, выполнена ли операция без ошибок if ($reasonCode == '1100'){ $raw_order=$orderReference; $order=explode('-', $raw_order); if (sizeof($order)==2) { $hash=$raw_order; $summ=$amount; $customerid=$order[0]; $create_date=$order[1]; $paysys='WAYFORPAY'; $note='order:'.$orderReference.' status:'. $transactionStatus.' sig:'.$merchantSignature; // новая транзакция op_TransactionAdd($hash, $summ, $customerid, $paysys, $note); // обработчики необработанных транзакций op_ProcessHandlers(); //транзакция ok die(''.$send_json.''); // при успешной транзакции } else { die(''.$send_json.''); // при неправильном ордере } } else { die(''.$send_json.''); // при других кодах ответов } } else { die(''.$send_json.''); // несовпадение сигнатур , а по сути отправление асcept тупо всегда когда приняли! дабы не складировать ненужные логи } ?>
  7. zaza12

    wayforpay ubilling

    все переписал , заработало ! ( все орправляется , пополняет , принимается, логается. Допишу пару проверяющих функций , приведу к божескому виду и выложу
  8. zaza12

    wayforpay ubilling

    пока на frontend накручивал функции то имитировал данные на serviceUrl под $_post , а надо было под json , теперь понял разницу
  9. В общем из за нулевых знаний php уже 3 дня леплю wayforpay к ubilling . Половина уже работает как надо а именно backand , а frontend через зад. Несколько платежей случайно залетело. Может уже кто писал frontend wayforpay на ubilling?
  10. 2 канала по 100m, тут сервер надо ставить а не мелкотик
  11. zaza12

    Генерация Логинов

    напомнило песню , где эта улица , где этот дом , где эта девушка ..... +вторая койка справа+ второй+ярус Просто показалось что вы недвижимостью торгуете, а не доступом к сети интернет. Что укртелеком переходит на ubilling ? nightfly наверно уже пишет скрипты на ADSL
  12. zaza12

    Смена тарифа по неуплате

    это конечно полный бред , рубить самую стимулирующую функцию биллинга. Клиенты и без интернета нихрена не платят , а с урезанными скоростями и подавно! не проверял, но должно работать ondisconnect ${fwcmd} pipe `expr $ID + 20101` config bw 102400Kbit/s mask dst-ip 0xffffffff ${fwcmd} pipe `expr $ID + 1101` config bw 102400Kbit/s mask src-ip 0xffffffff # и наверное эти пайпы когда то нужно удалять! И если за ваш халявный йнтернет случайно кто то когда то заплатит , то наверное еще нужно добавить onconnect ${fwcmd} pipe `expr $ID + 20101` delete ${fwcmd} pipe `expr $ID + 1101` delete firewall.conf ${FwCMD} add 15001 pipe tablearg ip from any to table\(47\) via ${LAN_IF} out ${FwCMD} add 15000 pipe tablearg ip from table\(47\) to any via ${LAN_IF} in и само собой отрубить заворот table47
  13. zaza12

    Ubilling_Freeradius+mikrotik

    А КАКАЯ РАЗНИЦА, ВЫ ПРОСИЛИ БЮДЖЕТНЫЙ ВАРИАНТ ДЛЯ МАЛЕНЬКИХ СЕТЕЙ? , 100M ПРОКАЧАЕТ, ГИГАБИТА У МЕНЯ НЕТ (НЕ ПРОБОВАЛ ) ПРОЦЕССОР INTEL CELERON N3150 + 4GB DDR3L, Ну если вы берете гигабит за 500уе , то да , в мире это под силу только микротику !!! так точно , и все устройства за ним (свичи , бриджи , базы , точки ) как ни странно , все микротики
  14. zaza12

    Ubilling_Freeradius+mikrotik

    Не совсем понял. 100$ это за что? за это
  15. zaza12

    Ubilling_Freeradius+mikrotik

    цена вопроса 100$ и масштабируемся до бесконечности!
  16. zaza12

    Ubilling_Freeradius+mikrotik

    Вообще это не мое дело, сколько у вас свободного времени , возможно у вас впереди свободная целая вечность , что-бы провести ее у монитора. Но по поводу бюджетности , ничего бюджетней чем плата с 2 портами + free bsd ubilling не встречал. Микротик подороже будет!
  17. zaza12

    Ubilling_Freeradius+mikrotik

    рабочей связки ubilling+микротик nas не существует в природе. Что вам сделал ubilling такого плохого , что вы его мучите своими микротиками? Он же и так бесплатный!
  18. zaza12

    Не создает/пустой бекап

    вы наверное пошутили? 10 минут времени на os + биллинг и 1 минуту на бэкап это драгоценное время? передернули биллинг = имитация 5 суток для stargazer (так понятней) что-бы сохранить драгоценное время нужно научиться читать документацию , SYSTEM_DIRS="/etc /var/log /usr/local/bandwidthd /usr/local/etc /usr/local/www/apache24/data " я просто не мог предположить что кто-то делает автобэкап 150мб базы без 3мб конфигов
  19. zaza12

    Не создает/пустой бекап

    а вообще , если есть бэкап , то в чем проблема , передернули биллинг 5 раз с новой датой , или сколько там дней профукалось . Что там настраивать , биллинг настраивается 1 раз
  20. zaza12

    Не создает/пустой бекап

    mysql -uroot -pmysxxxxxxxx SHOW TABLE STATUS from stg; ?
  21. zaza12

    Не запускается STG

    mysql -u root -p stg -e "SHOW TABLES" ???
  22. какая у вас будет железка для постоянки 24/7/365 в качестве биллинга ? сколько сетевых интерфейсов
  23. как раз это и была не решенная моя тема про отключенных абонентов https://local.com.ua/forum/topic/87583-%D0%BC%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D1%8B%D0%B9-%D1%80%D0%B5%D0%B7%D0%B5%D1%82-ubilling-mikrotik-nas/?do=findComment&comment=917844 после которой пришло прозрение! И через 10 минут она стала не актуальна.
  24. А юзерсайд тут каким боком, у нас ubilling , но все равно мы вам сочувствуем
  25. Ну конечно , он уже наверно прямо щас сидит и допиливает для вас включалку/выключалку для микротика! попробуйте сейчас удалить юзера с разным статусом ( с неактивным , и с активным )
×
×
  • Створити нове...