needhelp Опубликовано: 18 травня, 2015 Опубликовано: 18 травня, 2015 Підкажіть, можливо хтось настроював, потрібно зараховувати платежі через термінали привата та приват24, що потрібно просити від банку? Поки з менеджером все глухо - толком нічого добитись не можна....
nightfly Опубліковано: 18 травня, 2015 Опубліковано: 18 травня, 2015 Підкажіть, можливо хтось настроював, потрібно зараховувати платежі через термінали привата та приват24, що потрібно просити від банку? Поки з менеджером все глухо - толком нічого добитись не можна.... Підписуєте угоду, добазарюєтесь за процент, показуєте їм налаштовану морду з їхнім privat2 або privatx в залежності від протоколу, тестуєте, працюєте. Шо ніясна?
dummy Опубліковано: 1 червня, 2015 Опубліковано: 1 червня, 2015 (відредаговано) вот мое. даю все что было, разбирайся сам: (Debian) база на firebird, но при наличии прямых рук подправить не проблема из проблем: 1. они ХХХХХХХ (нехорошие человеки) твой сайт сразу переводят на IP и все обращения происходят по ИП адресу. т.е. никакие динамические адреса не проходят и каждая смена адреса сайта - очередной геморрой 2. если абон в терминале заплатит за себя, а потом повторит платеж за соседа, сотрет свой лицевой счет и запишет счет соседа,- в онлайне пройдет все-равно первый счет, а в реестре на следующий день придет "правильный счет", - готовься к постоянным перекидкам денег между абонами. я недавно сделал так: в онлайн-режиме я проставляю абону кредит на 7 дней, а на следующий день принимаю по элпочте реестр платежей привата и загоняю в базу деньги. пока тестирую, проблем стало на порядок меньше. у меня "лицевой счет абона" это "группа" у STG /etc/apache2/CA/ca.config: [ ca ] default_ca = CA_CLIENT # При подписи сертификатов # использовать секцию CA_CLIENT [ CA_CLIENT ] dir = ./db # Каталог для служебных файлов certs = $dir/certs # Каталог для сертификатов new_certs_dir = $dir/newcerts # Каталог для новых сертификатов database = $dir/index.txt # Файл с базой данных # подписанных сертификатов serial = $dir/serial # Файл содержащий серийный номер # сертификата # (в шестнадцатиричном формате) certificate = ./ca.crt # Файл сертификата CA private_key = ./ca.key # Файл закрытого ключа CA default_days = 3650 # Срок действия подписываемого # сертификата default_crl_days = 7 # Срок действия CRL default_md = md5 # Алгоритм подписи policy = policy_anything # Название секции с описанием # политики в отношении данных # сертификата [ policy_anything ] countryName = optional # Код страны — не обязателен stateOrProvinceName = optional # …… localityName = optional # …… organizationName = optional # …… organizationalUnitName = optional # …… commonName = supplied # …… — обязателен emailAddress = optional # …… /etc/apache2/CA/create: CN=mysite.org.ua SUBJroot=/C=UA/ST=qqq/L=www/O=eee/OU=Main/CN=$CN/emailAddress=rrr@gmail.com SUBJcl=/C=UA/ST=qqq/L=www/O=$CN/OU=MySite/CN=user/emailAddress=rrr@gmail.com DIR="./db" mkdir "$DIR" mkdir $DIR/certs mkdir $DIR/newcerts touch $DIR/index.txt echo "01" > $DIR/serial #Создание рутового сертификата CA openssl req -new -newkey rsa:1024 -nodes -keyout ca.key -out ca.crt -x509 -days 3650 -subj $SUBJroot #создание клиентского сертификата openssl req -new -newkey rsa:1024 -nodes -keyout client01.key -out client01.csr -days 3650 -subj $SUBJcl #подписываем клиентский сертифика openssl ca -config ca.config -in client01.csr -out client01.crt -batch #подготавливает сертификат для передачи пользователю openssl pkcs12 -export -in client01.crt -inkey client01.key -certfile ca.crt -out client01.p12 -passout pass:12345678 запускаем ./create и файл client01.crt и пароль 12345678 передается в приват /etc/apache2/sites-enabled/privatbank.conf <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin mysite@gmail.com DocumentRoot /var/www/html <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined SSLEngine on # A self-signed (snakeoil) certificate can be created by installing # the ssl-cert package. See # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. # If both key and certificate are stored in the same file, only the # SSLCertificateFile directive is needed. SSLCertificateFile /etc/apache2/CA/ca.crt SSLCertificateKeyFile /etc/apache2/CA/ca.key SSLCACertificateFile /etc/apache2/CA/ca.crt <Location /pb> SSLRequireSSL SSLVerifyClient require SSLVerifyDepth 10 </Location> <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> </IfModule> /var/www/html/pb/.htaccess RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] Options -Indexes #Options +FollowSymLinks /var/www/html/pb/dbfunc.php <?php $sgconf="/etc/stargazer/sgconf get -s 127.0.0.1 -p 5555 -a admin -w 123456 "; $sgconfset="/etc/stargazer/sgconf set -s 127.0.0.1 -p 5555 -a admin -w 123456 "; $db_host="localhost:/var/stargazer/stargazer.fdb"; $db_username="sysdba"; $db_password="123456"; $log_path='/var/stargazer/log'; $sgpay="/etc/stargazer/utils/_addcashname "; function db_getuser($schet) { global $db_host; global $db_username; global $db_password; $res=''; if (preg_match("/[^0-9_-]/", $schet)) { return ""; } $dbh = ibase_connect($db_host, $db_username, $db_password); $stmt = "select first 1 tb_users.name from tb_users where (tb_users.grp='$schet')"; $result = ibase_query($dbh, $stmt); if ($result==FALSE) { echo ("<B>Ошибка:".ibase_errmsg()."</B>"); } else { if ($onerow = ibase_fetch_row($result)) { $res = $onerow[0]; } } ibase_free_result($result); ibase_close($dbh); return $res; } function db_pay($user,$sum,$mess) { global $sgconfset; # $res=exec("$sgpay $user $sum $mess"); $res=exec("$sgconfset -u $user -c $sum:$mess"); logging("pb_money.log","$user has pay (res=$res) $sum $mess"); # $expire = date('Y-m-d', strtotime("+7 day")); # $res=exec("$sgconfset -u $user -r $sum"); # $res=exec("$sgconfset -u $user -E $expire"); return $res; } function db_getcash($user) { global $db_host; global $db_username; global $db_password; $res=FALSE; $dbh = ibase_connect($db_host, $db_username, $db_password); $stmt = "select first 1 tb_stats.cash from tb_users, tb_stats where tb_users.pk_user=tb_stats.fk_user and tb_users.name='$user' order by tb_stats.pk_stat desc"; $result = ibase_query($dbh, $stmt); if ($result==FALSE) { echo ("<B>Ошибка:".ibase_errmsg()."</B>"); } else { if ($onerow = ibase_fetch_row($result)) { $res = $onerow[0]; } } ibase_free_result($result); ibase_close($dbh); return $res; } function get_ip() { $ip_pattern="#(??:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)#"; $ip=""; foreach ($_SERVER as $k => $v) { if (substr($k,0,20)=="HTTP_X_FORWARDED_FOR" AND preg_match($ip_pattern,$v)) { $ip=$v; break; } } if ($ip == "") $ip=$_SERVER['REMOTE_ADDR']; return $ip; } function logging($file,$msg) { global $log_path; global $_SESSION; $f = @fopen("$log_path/$file", 'a+'); $ip = get_ip(); $log_line = date('d.m.y H:i:s').' '.$ip.' '.$msg."\n"; fwrite($f, $log_line); fclose($f); } ?> /var/www/html/pb/paygate.php <?php require_once('dbfunc.php'); #exit; $query_string = ""; if ($_POST) { $kv = array(); foreach ($_POST as $key => $value) { $kv[] = "$key=$value"; } $query_string = join("&", $kv); } else { $query_string = $_SERVER['QUERY_STRING']; } logging("pb.log","QUERY: $query_string"); $action=$_GET['action']; switch ($action) { case "bill_search": $identifier=$_GET['bill_identifier']; $user=db_getuser($identifier); if ($user == '') { echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> <ResponseDebt> <errorResponse> <code>2</code> <message>Абонент не найден. Лицевой счет - шестизначный код. Например,для Ленина,43 кв.15: 043015</message> </errorResponse> </ResponseDebt>"; logging("pb.log","bill_search error schet=$identifier"); } else { $balance=db_getcash($user); $to_pay=0; echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> <ResponseDebt> <debtPayPack bill_identifier=\"$identifier\"> <service> <ks company_code=\"2594611294\" service_code=\"1\" service=\"Интернет.\"/> <debt amount_to_pay=\"$to_pay\"/> <payer ls=\"$identifier\"/> </service> <message>Залишок коштiв на рахунку: $balance</message> </debtPayPack> </ResponseDebt>"; logging("pb.log","bill_search ok schet=$identifier user=$user bal=$balance"); } break; case "bill_input": $identifier=$_GET['bill_identifier']; $user=db_getuser($identifier); $sum=$_GET['sum']; $date=$_GET['date']; $pkey=$_GET['pkey']; $service=$_GET['service']; if (preg_match("/sum=([0-9.]+).*service_code=1/",$service,$match)) { $sum = $match[1]; } $inner_ref = date("ymdGis"); if ($user == '') { echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> <ResponseDebt> <errorResponse> <code>2</code> <message>Абонент не найден. Лицевой счет - шестизначный код. Например,для Ленина,43 кв.15: 043015</message> </errorResponse> </ResponseDebt>"; logging("pb.log","bill_input error schet=$identifier not found PB:date=$date"); } else { $ret=db_pay($user,$sum,"PrivatBank"); echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> <ResponseExtInputPay> <extInputPay> <inner_ref>$inner_ref</inner_ref> </extInputPay> </ResponseExtInputPay>"; logging("pb.log","bill_input ok schet=$identifier user=$user sum=$sum inner_ref=$inner_ref PB:date=$date pkey=$pkey"); logging("pb_money.log","schet=$identifier summa=$sum user=$user inner_ref=$inner_ref PB:date=$date pkey=$pkey"); } break; default: echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> <ResponseDebt> <errorResponse> <code>2</code> <message>Абонент не найден. Лицевой счет - шестизначный код. Например,для Ленина,43 кв.15: 043015</message> </errorResponse> </ResponseDebt>"; } ?> привату сообщаешь что твой платежный шлюз: https://mysite.org.ua/pb/paygate.php Відредаговано 1 червня, 2015 dummy
nightfly Опубліковано: 1 червня, 2015 Опубліковано: 1 червня, 2015 1. они ХХХХХХХ (нехорошие человеки) твой сайт сразу переводят на IP и все обращения происходят по ИП адресу. т.е. никакие динамические адреса не проходят и каждая смена адреса сайта - очередной геморрой 2. если абон в терминале заплатит за себя, а потом повторит платеж за соседа, сотрет свой лицевой счет и запишет счет соседа,- в онлайне пройдет все-равно первый счет, а в реестре на следующий день придет "правильный счет", - готовься к постоянным перекидкам денег между абонами. я недавно сделал так: в онлайн-режиме я проставляю абону кредит на 7 дней, а на следующий день принимаю по элпочте реестр платежей привата и загоняю в базу деньги. пока тестирую, проблем стало на порядок меньше.
revomix Опубліковано: 28 грудня, 2016 Опубліковано: 28 грудня, 2016 (відредаговано) Добого вечора! вирішив додати кнопку оплати mypayprivat, у бекенді є index.php, і наскільки я зрозумів, налаштування потрібно дивитись за цим посиланням https://my-payments.privatbank.ua/mypayments/customauth/identification/fp/static?staticToken=123456789 помилка сторінки або я не так зрозумів. що і потрібно змінити в даному посиланні? Відредаговано 28 грудня, 2016 revomix
Mobil Опубліковано: 3 лютого, 2020 Опубліковано: 3 лютого, 2020 В 18.05.2015 в 17:10, needhelp сказал: Підкажіть, можливо хтось настроював, потрібно зараховувати платежі через термінали привата та приват24, що потрібно просити від банку? Поки з менеджером все глухо - толком нічого добитись не можна.... https://privatbank.ua/ru/business/prijem-platezhej-ot-naselenija
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас