Скрипты приема платежей - обмен :)

Технические вопросы по UTM 5.0
gtk
Сообщения: 232
Зарегистрирован: Пт янв 21, 2005 18:33

Сообщение gtk »

playmp3 писал(а):Если две системы приема платежи как реализовать ?
Просто, две папки. Две таблицы.

kirush
Сообщения: 699
Зарегистрирован: Пт фев 04, 2005 13:58

Сообщение kirush »

поделитесь плз рабочим скриптом для webmoney если не сложно.

dAverk
Сообщения: 43
Зарегистрирован: Сб июн 09, 2007 18:23

Сообщение dAverk »

Webmoney - мопед не мой, я только его подчинил )
http://rghost.ru/37247927

AlexLux
Сообщения: 20
Зарегистрирован: Вт янв 10, 2012 13:43

Сообщение AlexLux »

dAverk писал(а):Webmoney - мопед не мой, я только его подчинил )
http://rghost.ru/37247927
Потестил . но что то не до конца отрабатывает, Деньги на вебмани приходят , а в УТМ на счет не заносятся
еще обнаружил вот это include ('getform.php');в файле index.php , но в архиве getform.php нету
тоесть где то что то явно лишнее или нехватает.

kirush
Сообщения: 699
Зарегистрирован: Пт фев 04, 2005 13:58

Сообщение kirush »

очень похоже kayfolom писал.

YuryD
Сообщения: 62
Зарегистрирован: Ср июн 22, 2005 12:19

Сообщение YuryD »

Ошибся, payment_tool работает как надо

kirush
Сообщения: 699
Зарегистрирован: Пт фев 04, 2005 13:58

Сообщение kirush »

Есть у кого нить скриптик вебмани интегрированный в родной интерфейс? поделитесь плз.

YuryD
Сообщения: 62
Зарегистрирован: Ср июн 22, 2005 12:19

Сообщение YuryD »

Делюсь костылингом со сбером.

Схема такова - win2003сервер(2 сетевки) с установленным фпсу-ip/клиентом, зафайерволена полностью - только сбер. дополнительно поставлен tcppm из комплекта 3proxy для проброса tcp/80 на машинку с utm и апачем по локалке, а там скрипт с первой страницы темы (ОСМП), слегка допиленный в команде check (там сумма не должна передаваться)

Из ньюансов - сберовский туннель иногда падает, поэтому его надо периодически бодрить хотя-бы пингом.

dAverk
Сообщения: 43
Зарегистрирован: Сб июн 09, 2007 18:23

Сообщение dAverk »

AlexLux писал(а):
dAverk писал(а):Webmoney - мопед не мой, я только его подчинил )
http://rghost.ru/37247927
Потестил . но что то не до конца отрабатывает, Деньги на вебмани приходят , а в УТМ на счет не заносятся
еще обнаружил вот это include ('getform.php');в файле index.php , но в архиве getform.php нету
тоесть где то что то явно лишнее или нехватает.
мопед с ошибкой - прощу прощения. include ('getform.php'); удалить нахер - это из наших переделок :)
Обновлённый архив - http://rghost.ru/38038970

dAverk
Сообщения: 43
Зарегистрирован: Сб июн 09, 2007 18:23

Сообщение dAverk »

YuryD писал(а):Делюсь костылингом со сбером.

Схема такова - win2003сервер(2 сетевки) с установленным фпсу-ip/клиентом, зафайерволена полностью - только сбер. дополнительно поставлен tcppm из комплекта 3proxy для проброса tcp/80 на машинку с utm и апачем по локалке, а там скрипт с первой страницы темы (ОСМП), слегка допиленный в команде check (там сумма не должна передаваться)

Из ньюансов - сберовский туннель иногда падает, поэтому его надо периодически бодрить хотя-бы пингом.
О_О как сложно Щ_Щ
Со сбером - клиентский SSL сертификат и фильтр по ip - их устраивает.

Аватара пользователя
торопыга
Сообщения: 61
Зарегистрирован: Пн ноя 01, 2010 12:06

Сообщение торопыга »

dAverk писал(а):Webmoney - мопед не мой, я только его подчинил )
http://rghost.ru/37247927
А подскажите пожалуйста, куда сей мопед прикручивается?

Аватара пользователя
торопыга
Сообщения: 61
Зарегистрирован: Пн ноя 01, 2010 12:06

Сообщение торопыга »

Все разобрался! А кто-нибудь делал интеграцию с mainpay, поделитесь скриптиком пожалуйста!

Sector
Сообщения: 10
Зарегистрирован: Пн дек 03, 2012 16:37

Сообщение Sector »

Апну тему, расскажу как реализовал я.

Система работы с ishop-ом, выставлением счетов, договорами показалась мне сложной, много всяких проволочек. Я сделал проще:

1. Зарегистрировал обычный QIWI-кошелёк (не ISHOP).
2. Написал php-парсер, который заходит на сайт w.qiwi.ru, авторизуется, открывает отчёты, смотрит все пополнения кошелька за заданный период. Если находит новое пополнение, не зарегистрированное в биллинге, вызывает payment_tool и пополняет баланс пользователя на пришедшую сумму. Идентификация целевого пользователя происходит по комментарию к пополнению: в моём случае это фамилия, т.к. сеть домашняя, небольшая, и юзерам так удобнее! В принципе там можно всё что угодно проверять: от логина до номеров счетов, договоров и т.п.
3. Для юзеров была создана подробная инструкция, как пополнять (суть в том, что пополнить киви-кошелёк определённого номера с указанием себя в комментарии к платежу).
4. После зачисления платежа отправляются подтверждающие смски с txn, суммой платежа и текущим балансом посредством смс-сервиса smsc.ru.

В итоге имеем полностью автоматизированную систему зачисления платежей, очень удобную (вариантов пополнить киви-кошелёк миллион), практически моментально развертываемую, без всяких юридических проволочек (договор с ОСМП, который может быть заключен только с юр. лицами, предоставление кучи документов и т.п.), и, что самое главное, абсолютно бесплатную как для пользователей (комиссия за пополнение гиви-кошелька не взымается), так и для администрации сети.

Если кого-то решение заинтересует - пишите в ЛС или на net.laifa(at)gmail.com!

Готов с удовольствием выслушать ваши комментарии на этот счёт!

noisy
Сообщения: 14
Зарегистрирован: Ср сен 09, 2009 13:11

Сообщение noisy »

Можно скрипт выложить заново, а то все ссылки мертвые

Point
Сообщения: 242
Зарегистрирован: Вт ноя 23, 2010 15:42

Сообщение Point »

Поправленный скрипт приема платежей в формате OSMP V1.4 (работает с Qiwi) , внесение платежа по логину

Код: Выделить всё

<?
header&#40;"Content-type&#58; text/xml"&#41;;

$TEMPLATE&#91;"XML_CHECK"&#93; = <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>&#91;OSMP_TXN_ID&#93;</osmp_txn_id>
<result>&#91;RESULT&#93;</result>
<comment>&#91;COMMENT&#93;</comment>
</response>
EOF;

$TEMPLATE&#91;"XML_PAY"&#93; = <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>&#91;OSMP_TXN_ID&#93;</osmp_txn_id>
<prv_txn>&#91;PRV_TXN&#93;</prv_txn>
<sum>&#91;SUM&#93;</sum>
<result>&#91;RESULT&#93;</result>
<comment>&#91;COMMENT&#93;</comment>
</response>
EOF;

$mysql_hostname = "xx.xx.xx.xx";
$mysql_user = "login";
$mysql_password = "pass";
$mysql_database = "UTM5";

$datenow=date&#40;"d&#58;m&#58;y G&#58;i&#58;s"&#41;;

function fileopen&#40;$str&#41;
&#123;
  $file = fopen &#40;"/tmp/utm5_osmp.log","a-"&#41;;
  fputs &#40; $file, $str&#41;; fclose &#40;$file&#41;;
&#125;;

$command=$_GET&#91;"command"&#93;;

if &#40;$command == "check"&#41;&#123;
   $txn_id=$_GET&#91;"txn_id"&#93;;
   $user_account=$_GET&#91;"account"&#93;;
   $sum=$_GET&#91;"sum"&#93;;

   if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;1,20&#125;$&#41;", $txn_id&#41;&#41; &#123;
   if &#40;eregi &#40;"&#40;^&#91;_A-Za-z0-9-&#93;&#123;1,20&#125;$&#41;", $user_account&#41;&#41; &#123;
   if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;1,6&#125;&#41;&#40;&#91;.&#93;&#41;&#40;&#91;0-9&#93;&#123;1,6&#125;$&#41;", $sum&#41;&#41; &#123;
   $bd = @mysql_connect&#40;$mysql_hostname, $mysql_user, $mysql_password&#41;;

if &#40;$bd&#41;&#123;
   mysql_select_db&#40;$mysql_database, $bd&#41;;
   $sql_user1 = mysql_query&#40;"SELECT basic_account from users where login = '$user_account' and is_deleted!=1"&#41;;
   $data_user1 = mysql_fetch_array&#40;$sql_user1, MYSQL_ASSOC&#41;;
   $account=$data_user1&#91;"basic_account"&#93;;
   $sql = mysql_query&#40;"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"&#41;;
   $data = mysql_fetch_array&#40;$sql, MYSQL_ASSOC&#41;;
   $basic_account=$data&#91;"basic_account"&#93;;
   $balance=$data&#91;"balance"&#93;;
   $credit=$data&#91;"credit"&#93;;
   $is_blocked=$data&#91;"is_blocked"&#93;;

if &#40;$basic_account == ""&#41; &#123; $result="5"; $comment="Personal account not found";
   exec&#40;"echo check ".$user_account." account not found >> /var/log/utm5_osmp.log"&#41;;
   fileopen&#40;"$datenow Account $account not found!\n"&#41;;
   &#125;

if &#40;$basic_account != ""&#41; &#123;
   $result="0"; $comment="Personal account found";
   exec&#40;"echo check ".$user_account." account found >> /var/log/utm5_osmp.log"&#41;;
   fileopen&#40;"$datenow Account $account is found!\n"&#41;;&#125;

   &#125; elseif&#40;!$bd&#41; &#123;
      $result="1"; $comment="Database not accessed";
      fileopen&#40;"$datenow Database not accessed\n"&#41;;
         &#125;

   &#125; else &#123;$result="300"; $comment="Incorrent format of sum";
                fileopen&#40;"$datenow Incorrent format of sum\n"&#41;;&#125;
   &#125; else &#123;$result="4"; $comment="Incorrent format of account";
                fileopen&#40;"$datenow Incorrent format of account\n"&#41;;&#125;
   &#125; else &#123;$result="300"; $comment="Incorrent format of txn_id";
                fileopen&#40;"$datenow Incorrent format of txn_id\n"&#41;;&#125;
&#125;


if &#40;$command == "pay"&#41;&#123;
   $bd = @mysql_connect&#40;$mysql_hostname, $mysql_user, $mysql_password&#41;;
   $txn_id=$_GET&#91;"txn_id"&#93;;
   $txn_date=$_GET&#91;"txn_date"&#93;;
   $user_account=$_GET&#91;"account"&#93;;
   $sum=$_GET&#91;"sum"&#93;;

   if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;1,20&#125;$&#41;", $txn_id&#41;&#41; &#123;
   if &#40;eregi &#40;"&#40;^&#91;_A-Za-z0-9-&#93;&#123;1,20&#125;$&#41;", $user_account&#41;&#41; &#123;
   if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;1,6&#125;&#41;&#40;&#91;.&#93;&#41;&#40;&#91;0-9&#93;&#123;1,6&#125;$&#41;", $sum&#41;&#41; &#123;
   if &#40;ereg &#40;"^&#40;&#91;0-9&#93;&#123;4&#125;&#41;&#40;&#91;0-9&#93;&#123;2&#125;&#41;&#40;&#91;0-9&#93;&#123;2&#125;&#41;&#40;&#91;0-9&#93;&#123;2&#125;&#41;&#40;&#91;0-9&#93;&#123;2&#125;&#41;&#40;&#91;0-9&#93;&#123;2&#125;&#41;$", $txn_date, $regs&#41;&#41; &#123;

if &#40;$bd&#41;&#123;
mysql_select_db&#40;$mysql_database, $bd&#41;;

   $year=$regs&#91;1&#93;;
   $month=$regs&#91;2&#93;;
   $day=$regs&#91;3&#93;;
   $hour=$regs&#91;4&#93;;
   $min=$regs&#91;5&#93;;
   $sec=$regs&#91;6&#93;;
   $bdate=mktime&#40;$hour,$min,$sec,$month,$day,$year&#41;;

   $sqlchk = mysql_query&#40;"SELECT `txn_id` , `check` FROM osmp.temp WHERE txn_id = '$txn_id' and `check` != '1' LIMIT 1"&#41;;
   $datachk = mysql_fetch_array&#40;$sqlchk, MYSQL_ASSOC&#41;;
   $payment_ext_number=$datachk&#91;"txn_id"&#93;;

if &#40;$payment_ext_number != $txn_id&#41;&#123;
   $eedata = "OSMP$txn_id";
   $sql_user2 = mysql_query&#40;"SELECT basic_account from users where login = '$user_account' and is_deleted!=1"&#41;;
   $data_user2 = mysql_fetch_array&#40;$sql_user2, MYSQL_ASSOC&#41;;
   $account=$data_user2&#91;"basic_account"&#93;;
   exec&#40;"/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"&#41;;
   $sqlchk2 = mysql_query&#40;"SELECT payment_ext_number FROM UTM5.payment_transactions WHERE payment_ext_number = '$eedata' and is_canceled != '1' LIMIT 1"&#41;;
   $datachk2 = mysql_fetch_array&#40;$sqlchk2, MYSQL_ASSOC&#41;;
   $payment_ext_number2=$datachk2&#91;"payment_ext_number"&#93;;
   exec&#40;"echo payment ".$eedata." ".$bdate." ".$account." ".$sum." >> /var/log/utm5_osmp.log"&#41;;

if &#40;$payment_ext_number2 == $eedata&#41;&#123;
   mysql_query&#40;"INSERT INTO osmp.temp &#40;`txn_id`, `account`, `sum`, `check`&#41; VALUES &#40;'$txn_id', '$account', '$sum', '0'&#41;"&#41;;
   $prv_txn=mysql_insert_id&#40;&#41;;
   $result="0"; $comment="Payment recieved";
   fileopen&#40;"$datenow Payment for $account recieved $sum roubles\n"&#41;;
      &#125; elseif &#40;$payment_ext_number2 != $txn_id&#41;&#123;
   $result="5"; $comment="Payment account not found";
   exec&#40;"echo account not found ".$eedata." ".$bdate." ".$account." ".$sum." >> /var/log/utm5_osmp.log"&#41;;
   fileopen&#40;"$datenow Payment account $account not found\n"&#41;;
   &#125;
   &#125; elseif &#40;$payment_ext_number == $txn_id&#41;&#123;
#   $sql2 = mysql_query&#40;"SELECT `id`, `txn_id`, `account`, `sum` FROM osmp.temp where txn_id = '$txn_id' and `check`!=1 LIMIT 1"&#41;;
   $sql2 = mysql_query&#40;"SELECT `txn_id`, `account`, `sum` FROM osmp.temp where txn_id = '$txn_id' and `check`!=1 LIMIT 1"&#41;;
   $data2=mysql_fetch_array&#40;$sql2, MYSQL_ASSOC&#41;;
#   $prv_txn=$data2&#91;"id"&#93;;
   $prv_txn=0;
   $result=$data2&#91;"txn_id"&#93;;
   $account=$data2&#91;"account"&#93;;
   $sum=$data2&#91;"sum"&#93;;
   $result="0"; $comment="Payment with this txn_id alredy recieved";
   exec&#40;"echo dublicate payment OSMP".$txn_id." >> /var/log/utm5_osmp.log"&#41;;
   fileopen&#40;"$datenow Payment with this txn_id alredy recieved\n"&#41;;
   &#125;
   &#125; elseif&#40;!$bd&#41; &#123;
                $result="1"; $comment="Database not accessed";
      fileopen&#40;"$datenow Database not accessed\n"&#41;;
                        &#125;

   &#125; else &#123; $result="300"; $comment="Incorrent format of txn_date";
      fileopen&#40;"$datenow Incorrent format of txn_date\n"&#41;;&#125;
   &#125; else &#123; $result="300"; $comment="Incorrent format of sum";
                fileopen&#40;"$datenow Incorrent format of sum\n"&#41;;&#125;
   &#125; else &#123; $result="4"; $comment="Incorrent format of account";
      fileopen&#40;"$datenow Incorrent format of account\n"&#41;;&#125;
   &#125; else &#123; $result="300"; $comment="Incorrent format of txn_id";
      fileopen&#40;"$datenow Incorrent format of txn_id\n"&#41;;&#125;
                &#125;

if&#40;$command != "check" && $command != "pay"&#41;&#123;
   $result="300"; $comment="Incorrect command request";
   fileopen&#40;"$datenow Incorrect request\n"&#41;;
                  &#125;

if &#40;$command == "check"&#41;&#123;
$replace = array&#40;"&#91;RESULT&#93;" => $result, "&#91;OSMP_TXN_ID&#93;" => $txn_id, "&#91;COMMENT&#93;" => $comment&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_CHECK"&#93;,$replace&#41;;
         &#125;

if &#40;$command == "pay"&#41;&#123;
$replace = array&#40;"&#91;RESULT&#93;" => $result, "&#91;OSMP_TXN_ID&#93;" => $txn_id, "&#91;COMMENT&#93;" => $comment, "&#91;PRV_TXN&#93;" => $prv_txn, "&#91;SUM&#93;" => $sum&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_PAY"&#93;,$replace&#41;;
                        &#125;

if &#40;$command != "pay" && $command != "check"&#41;&#123;


$replace = array&#40;"&#91;RESULT&#93;" => $result, "&#91;OSMP_TXN_ID&#93;" => $txn_id, "&#91;COMMENT&#93;" => $comment&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_CHECK"&#93;,$replace&#41;;
                        &#125;

?>

Ответить