Просто, две папки. Две таблицы.playmp3 писал(а):Если две системы приема платежи как реализовать ?
Скрипты приема платежей - обмен :)
Webmoney - мопед не мой, я только его подчинил )
http://rghost.ru/37247927
http://rghost.ru/37247927
Потестил . но что то не до конца отрабатывает, Деньги на вебмани приходят , а в УТМ на счет не заносятсяdAverk писал(а):Webmoney - мопед не мой, я только его подчинил )
http://rghost.ru/37247927
еще обнаружил вот это include ('getform.php');в файле index.php , но в архиве getform.php нету
тоесть где то что то явно лишнее или нехватает.
Делюсь костылингом со сбером.
Схема такова - win2003сервер(2 сетевки) с установленным фпсу-ip/клиентом, зафайерволена полностью - только сбер. дополнительно поставлен tcppm из комплекта 3proxy для проброса tcp/80 на машинку с utm и апачем по локалке, а там скрипт с первой страницы темы (ОСМП), слегка допиленный в команде check (там сумма не должна передаваться)
Из ньюансов - сберовский туннель иногда падает, поэтому его надо периодически бодрить хотя-бы пингом.
Схема такова - win2003сервер(2 сетевки) с установленным фпсу-ip/клиентом, зафайерволена полностью - только сбер. дополнительно поставлен tcppm из комплекта 3proxy для проброса tcp/80 на машинку с utm и апачем по локалке, а там скрипт с первой страницы темы (ОСМП), слегка допиленный в команде check (там сумма не должна передаваться)
Из ньюансов - сберовский туннель иногда падает, поэтому его надо периодически бодрить хотя-бы пингом.
мопед с ошибкой - прощу прощения. include ('getform.php'); удалить нахер - это из наших переделокAlexLux писал(а):Потестил . но что то не до конца отрабатывает, Деньги на вебмани приходят , а в УТМ на счет не заносятсяdAverk писал(а):Webmoney - мопед не мой, я только его подчинил )
http://rghost.ru/37247927
еще обнаружил вот это include ('getform.php');в файле index.php , но в архиве getform.php нету
тоесть где то что то явно лишнее или нехватает.

Обновлённый архив - http://rghost.ru/38038970
О_О как сложно Щ_ЩYuryD писал(а):Делюсь костылингом со сбером.
Схема такова - win2003сервер(2 сетевки) с установленным фпсу-ip/клиентом, зафайерволена полностью - только сбер. дополнительно поставлен tcppm из комплекта 3proxy для проброса tcp/80 на машинку с utm и апачем по локалке, а там скрипт с первой страницы темы (ОСМП), слегка допиленный в команде check (там сумма не должна передаваться)
Из ньюансов - сберовский туннель иногда падает, поэтому его надо периодически бодрить хотя-бы пингом.
Со сбером - клиентский SSL сертификат и фильтр по ip - их устраивает.
А подскажите пожалуйста, куда сей мопед прикручивается?dAverk писал(а):Webmoney - мопед не мой, я только его подчинил )
http://rghost.ru/37247927
Апну тему, расскажу как реализовал я.
Система работы с ishop-ом, выставлением счетов, договорами показалась мне сложной, много всяких проволочек. Я сделал проще:
1. Зарегистрировал обычный QIWI-кошелёк (не ISHOP).
2. Написал php-парсер, который заходит на сайт w.qiwi.ru, авторизуется, открывает отчёты, смотрит все пополнения кошелька за заданный период. Если находит новое пополнение, не зарегистрированное в биллинге, вызывает payment_tool и пополняет баланс пользователя на пришедшую сумму. Идентификация целевого пользователя происходит по комментарию к пополнению: в моём случае это фамилия, т.к. сеть домашняя, небольшая, и юзерам так удобнее! В принципе там можно всё что угодно проверять: от логина до номеров счетов, договоров и т.п.
3. Для юзеров была создана подробная инструкция, как пополнять (суть в том, что пополнить киви-кошелёк определённого номера с указанием себя в комментарии к платежу).
4. После зачисления платежа отправляются подтверждающие смски с txn, суммой платежа и текущим балансом посредством смс-сервиса smsc.ru.
В итоге имеем полностью автоматизированную систему зачисления платежей, очень удобную (вариантов пополнить киви-кошелёк миллион), практически моментально развертываемую, без всяких юридических проволочек (договор с ОСМП, который может быть заключен только с юр. лицами, предоставление кучи документов и т.п.), и, что самое главное, абсолютно бесплатную как для пользователей (комиссия за пополнение гиви-кошелька не взымается), так и для администрации сети.
Если кого-то решение заинтересует - пишите в ЛС или на net.laifa(at)gmail.com!
Готов с удовольствием выслушать ваши комментарии на этот счёт!
Система работы с ishop-ом, выставлением счетов, договорами показалась мне сложной, много всяких проволочек. Я сделал проще:
1. Зарегистрировал обычный QIWI-кошелёк (не ISHOP).
2. Написал php-парсер, который заходит на сайт w.qiwi.ru, авторизуется, открывает отчёты, смотрит все пополнения кошелька за заданный период. Если находит новое пополнение, не зарегистрированное в биллинге, вызывает payment_tool и пополняет баланс пользователя на пришедшую сумму. Идентификация целевого пользователя происходит по комментарию к пополнению: в моём случае это фамилия, т.к. сеть домашняя, небольшая, и юзерам так удобнее! В принципе там можно всё что угодно проверять: от логина до номеров счетов, договоров и т.п.
3. Для юзеров была создана подробная инструкция, как пополнять (суть в том, что пополнить киви-кошелёк определённого номера с указанием себя в комментарии к платежу).
4. После зачисления платежа отправляются подтверждающие смски с txn, суммой платежа и текущим балансом посредством смс-сервиса smsc.ru.
В итоге имеем полностью автоматизированную систему зачисления платежей, очень удобную (вариантов пополнить киви-кошелёк миллион), практически моментально развертываемую, без всяких юридических проволочек (договор с ОСМП, который может быть заключен только с юр. лицами, предоставление кучи документов и т.п.), и, что самое главное, абсолютно бесплатную как для пользователей (комиссия за пополнение гиви-кошелька не взымается), так и для администрации сети.
Если кого-то решение заинтересует - пишите в ЛС или на net.laifa(at)gmail.com!
Готов с удовольствием выслушать ваши комментарии на этот счёт!
Поправленный скрипт приема платежей в формате OSMP V1.4 (работает с Qiwi) , внесение платежа по логину
Код: Выделить всё
<?
header("Content-type: text/xml");
$TEMPLATE["XML_CHECK"] = <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>[OSMP_TXN_ID]</osmp_txn_id>
<result>[RESULT]</result>
<comment>[COMMENT]</comment>
</response>
EOF;
$TEMPLATE["XML_PAY"] = <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>[OSMP_TXN_ID]</osmp_txn_id>
<prv_txn>[PRV_TXN]</prv_txn>
<sum>[SUM]</sum>
<result>[RESULT]</result>
<comment>[COMMENT]</comment>
</response>
EOF;
$mysql_hostname = "xx.xx.xx.xx";
$mysql_user = "login";
$mysql_password = "pass";
$mysql_database = "UTM5";
$datenow=date("d:m:y G:i:s");
function fileopen($str)
{
$file = fopen ("/tmp/utm5_osmp.log","a-");
fputs ( $file, $str); fclose ($file);
};
$command=$_GET["command"];
if ($command == "check"){
$txn_id=$_GET["txn_id"];
$user_account=$_GET["account"];
$sum=$_GET["sum"];
if (eregi ("(^[0-9]{1,20}$)", $txn_id)) {
if (eregi ("(^[_A-Za-z0-9-]{1,20}$)", $user_account)) {
if (eregi ("(^[0-9]{1,6})([.])([0-9]{1,6}$)", $sum)) {
$bd = @mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
if ($bd){
mysql_select_db($mysql_database, $bd);
$sql_user1 = mysql_query("SELECT basic_account from users where login = '$user_account' and is_deleted!=1");
$data_user1 = mysql_fetch_array($sql_user1, MYSQL_ASSOC);
$account=$data_user1["basic_account"];
$sql = mysql_query("SELECT users.basic_account, accounts.balance, accounts.credit, accounts.is_blocked FROM users LEFT JOIN accounts ON accounts.id=users.basic_account where users.basic_account = '$account' and users.is_deleted!=1");
$data = mysql_fetch_array($sql, MYSQL_ASSOC);
$basic_account=$data["basic_account"];
$balance=$data["balance"];
$credit=$data["credit"];
$is_blocked=$data["is_blocked"];
if ($basic_account == "") { $result="5"; $comment="Personal account not found";
exec("echo check ".$user_account." account not found >> /var/log/utm5_osmp.log");
fileopen("$datenow Account $account not found!\n");
}
if ($basic_account != "") {
$result="0"; $comment="Personal account found";
exec("echo check ".$user_account." account found >> /var/log/utm5_osmp.log");
fileopen("$datenow Account $account is found!\n");}
} elseif(!$bd) {
$result="1"; $comment="Database not accessed";
fileopen("$datenow Database not accessed\n");
}
} else {$result="300"; $comment="Incorrent format of sum";
fileopen("$datenow Incorrent format of sum\n");}
} else {$result="4"; $comment="Incorrent format of account";
fileopen("$datenow Incorrent format of account\n");}
} else {$result="300"; $comment="Incorrent format of txn_id";
fileopen("$datenow Incorrent format of txn_id\n");}
}
if ($command == "pay"){
$bd = @mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
$txn_id=$_GET["txn_id"];
$txn_date=$_GET["txn_date"];
$user_account=$_GET["account"];
$sum=$_GET["sum"];
if (eregi ("(^[0-9]{1,20}$)", $txn_id)) {
if (eregi ("(^[_A-Za-z0-9-]{1,20}$)", $user_account)) {
if (eregi ("(^[0-9]{1,6})([.])([0-9]{1,6}$)", $sum)) {
if (ereg ("^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$", $txn_date, $regs)) {
if ($bd){
mysql_select_db($mysql_database, $bd);
$year=$regs[1];
$month=$regs[2];
$day=$regs[3];
$hour=$regs[4];
$min=$regs[5];
$sec=$regs[6];
$bdate=mktime($hour,$min,$sec,$month,$day,$year);
$sqlchk = mysql_query("SELECT `txn_id` , `check` FROM osmp.temp WHERE txn_id = '$txn_id' and `check` != '1' LIMIT 1");
$datachk = mysql_fetch_array($sqlchk, MYSQL_ASSOC);
$payment_ext_number=$datachk["txn_id"];
if ($payment_ext_number != $txn_id){
$eedata = "OSMP$txn_id";
$sql_user2 = mysql_query("SELECT basic_account from users where login = '$user_account' and is_deleted!=1");
$data_user2 = mysql_fetch_array($sql_user2, MYSQL_ASSOC);
$account=$data_user2["basic_account"];
exec("/netup/utm5/bin/utm5_payment_tool -h 127.0.0.1 -P 11758 -l init -p init -m 100 -b ".$sum." -a ".$account." -L 'Recieved from OSMP $sum' -k 'Recieved from OSMP $sum' -e ".$eedata." -t ".$bdate." -i");
$sqlchk2 = mysql_query("SELECT payment_ext_number FROM UTM5.payment_transactions WHERE payment_ext_number = '$eedata' and is_canceled != '1' LIMIT 1");
$datachk2 = mysql_fetch_array($sqlchk2, MYSQL_ASSOC);
$payment_ext_number2=$datachk2["payment_ext_number"];
exec("echo payment ".$eedata." ".$bdate." ".$account." ".$sum." >> /var/log/utm5_osmp.log");
if ($payment_ext_number2 == $eedata){
mysql_query("INSERT INTO osmp.temp (`txn_id`, `account`, `sum`, `check`) VALUES ('$txn_id', '$account', '$sum', '0')");
$prv_txn=mysql_insert_id();
$result="0"; $comment="Payment recieved";
fileopen("$datenow Payment for $account recieved $sum roubles\n");
} elseif ($payment_ext_number2 != $txn_id){
$result="5"; $comment="Payment account not found";
exec("echo account not found ".$eedata." ".$bdate." ".$account." ".$sum." >> /var/log/utm5_osmp.log");
fileopen("$datenow Payment account $account not found\n");
}
} elseif ($payment_ext_number == $txn_id){
# $sql2 = mysql_query("SELECT `id`, `txn_id`, `account`, `sum` FROM osmp.temp where txn_id = '$txn_id' and `check`!=1 LIMIT 1");
$sql2 = mysql_query("SELECT `txn_id`, `account`, `sum` FROM osmp.temp where txn_id = '$txn_id' and `check`!=1 LIMIT 1");
$data2=mysql_fetch_array($sql2, MYSQL_ASSOC);
# $prv_txn=$data2["id"];
$prv_txn=0;
$result=$data2["txn_id"];
$account=$data2["account"];
$sum=$data2["sum"];
$result="0"; $comment="Payment with this txn_id alredy recieved";
exec("echo dublicate payment OSMP".$txn_id." >> /var/log/utm5_osmp.log");
fileopen("$datenow Payment with this txn_id alredy recieved\n");
}
} elseif(!$bd) {
$result="1"; $comment="Database not accessed";
fileopen("$datenow Database not accessed\n");
}
} else { $result="300"; $comment="Incorrent format of txn_date";
fileopen("$datenow Incorrent format of txn_date\n");}
} else { $result="300"; $comment="Incorrent format of sum";
fileopen("$datenow Incorrent format of sum\n");}
} else { $result="4"; $comment="Incorrent format of account";
fileopen("$datenow Incorrent format of account\n");}
} else { $result="300"; $comment="Incorrent format of txn_id";
fileopen("$datenow Incorrent format of txn_id\n");}
}
if($command != "check" && $command != "pay"){
$result="300"; $comment="Incorrect command request";
fileopen("$datenow Incorrect request\n");
}
if ($command == "check"){
$replace = array("[RESULT]" => $result, "[OSMP_TXN_ID]" => $txn_id, "[COMMENT]" => $comment); echo strtr($TEMPLATE["XML_CHECK"],$replace);
}
if ($command == "pay"){
$replace = array("[RESULT]" => $result, "[OSMP_TXN_ID]" => $txn_id, "[COMMENT]" => $comment, "[PRV_TXN]" => $prv_txn, "[SUM]" => $sum); echo strtr($TEMPLATE["XML_PAY"],$replace);
}
if ($command != "pay" && $command != "check"){
$replace = array("[RESULT]" => $result, "[OSMP_TXN_ID]" => $txn_id, "[COMMENT]" => $comment); echo strtr($TEMPLATE["XML_CHECK"],$replace);
}
?>