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

Технические вопросы по UTM 5.0
Роман
Сообщения: 265
Зарегистрирован: Вс май 08, 2005 00:55
Откуда: MSK

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

Сообщение Роман »

Кто-нибудь писал на PHP скрипт для приема платежей e-port версии 2.
Поделитесь? а то нет ни настроения ни времени писать.
Последний раз редактировалось Роман Ср фев 18, 2009 00:16, всего редактировалось 1 раз.

Роман
Сообщения: 265
Зарегистрирован: Вс май 08, 2005 00:55
Откуда: MSK

Сообщение Роман »

эх, это сладкое слово - кризис ;)

Для поддержки темы, писал скрипт под OSMP - с ними же и отлаживал - полный функционал 100% без багов.


инструкция:

скрипт использует встроенные возможности UTM5, конкретно:
/netup/utm5/bin/utm5_payment_tool

необходимо для работы:

1. apache + php5
2. копируем в удобную папочку apache
3. расширение .php или любое другое в зависимости от настроек
4.

в скрипте меняем параметры

$mysql_hostname = "localhost";
$mysql_user = "";
$mysql_password = "";
$mysql_database = "UTM5";
находим строку: payment_tool и меняем в ней логин с паролем (по умолчанию init, init).
5. даем ссылку в OSMP и тестируемся, все тесты должны пройти на 100%.


типа для некоммерческого использования по лицензии BSD, с автором согласовывать использование и распостранение, и все такое ;)

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

<?
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 = "localhost";
$mysql_user = "";
$mysql_password = "";
$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;"/netup/utm5/log/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;; 
	$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;0-9&#93;&#123;1,6&#125;$&#41;", $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 = 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";
	fileopen&#40;"$datenow Account $account not found!\n"&#41;;
	&#125;

if &#40;$basic_account != ""&#41; &#123;
	$result="0"; $comment="Personal account found";
	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="300"; $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;;
	$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;0-9&#93;&#123;1,6&#125;$&#41;", $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";
	exec&#40;"/netup/utm5/bin/utm5_payment_tool -h 127.0.0.1 -P 11758 -l init -p init -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;;

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";
	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;;
	$data2=mysql_fetch_array&#40;$sql2, MYSQL_ASSOC&#41;;
	$prv_txn=$data2&#91;"id"&#93;;
	$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";
	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="300"; $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;

?>

Роман
Сообщения: 265
Зарегистрирован: Вс май 08, 2005 00:55
Откуда: MSK

Сообщение Роман »

up

Netki
Сообщения: 1
Зарегистрирован: Пн мар 09, 2009 17:06

Сообщение Netki »

Спасибо за скриптег, то что искал, пока только осмп начальство потребовало)

Belchik
Сообщения: 81
Зарегистрирован: Пн ноя 28, 2005 10:55

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

Сообщение Belchik »

Роман писал(а):Кто-нибудь писал на PHP скрипт для приема платежей e-port версии 2.
Поделитесь? а то нет ни настроения ни времени писать.
Ещё интересует эта тема?

punchos
Сообщения: 1
Зарегистрирован: Пт апр 10, 2009 11:59

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

Сообщение punchos »

Belchik писал(а):
Роман писал(а):Кто-нибудь писал на PHP скрипт для приема платежей e-port версии 2.
Поделитесь? а то нет ни настроения ни времени писать.
Ещё интересует эта тема?
меня очень интересует...попытался сам написать, но то он мне 401 выдает то 400...на самих операциях...при запросе каталога или баланса все нормально...хотелось бы обсудить e-port со знающим человеком

alexon
Сообщения: 5
Зарегистрирован: Чт апр 03, 2008 01:05

Сообщение alexon »

Роман. спасибо.
Скрипт помог и сэкономил время.

Аватара пользователя
alexus
Сообщения: 448
Зарегистрирован: Сб окт 11, 2008 10:31

Сообщение alexus »

А что такое OSMP ?
И что делает скрипт, можно подробнее?
Я так понял, что через него можно оператор может пополнять балланс абонентам ?
Последний раз редактировалось alexus Сб фев 27, 2010 09:21, всего редактировалось 1 раз.

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »


Pei0t
Сообщения: 258
Зарегистрирован: Чт дек 13, 2007 20:48

Сообщение Pei0t »

Роман, отписал вам в ICQ

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

Сообщение dAverk »

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

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

<?php
header&#40;"Content-type&#58; text/xml"&#41;;
$utmpaysh = "/netup/utm5/bin/utm5_payment_tool"; //  utm_payment_tool
$utm5m = "102"; // id платежа utm

$TEMPLATE&#91;"XML_RESPONSE"&#93; = "<result><id>&#91;ID&#93;</id><code>&#91;RESULT&#93;</code><omsg>&#91;OMSG&#93;</omsg><datetime>&#91;DATETIME&#93;</datetime></result>";

$mysql_hostname = "localhost";
$mysql_user = "user"; /* пользователь базы данных, gran all on $mysql_db_snpay, grant select on $mysql_db_utm.users AND $mysql_db_utm.accounts */
$mysql_password = "password"; // пасс для пользователя базы данных
$mysql_db_utm = "UTM5";
$mysql_db_snpay = "database"; /* CREATE TABLE events &#40;date DATETIME, id VARCHAR&#40;16&#41;, value DECIMAL&#40;10,2&#41;, account
VARCHAR&#40;20&#41;, omsg VARCHAR&#40;300&#41;&#41;; */

if &#40;$_SERVER&#91;"HTTP_PRO_AUTH"&#93; == "login=login; password=password"&#41; &#123; // логин-пасс спринта

$db = @mysql_connect&#40;$mysql_hostname, $mysql_user, $mysql_password&#41;;
if &#40;$db&#41;&#123;
   mysql_select_db&#40;$mysql_db_utm&#41;;
&#125;
else
&#123;
   header&#40;"Content-type&#58; text/html"&#41;;
   header&#40;'HTTP/1.1 503 Service Unavailable'&#41;;
&#125;

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

$xmlpacket=$HTTP_RAW_POST_DATA;
$xml = new SimpleXMLElement&#40;$xmlpacket&#41;;
if &#40;$xml&#41; &#123;
   echo "<?xml version=\"1.0\" encoding=\"windows-1251\" ?><package version=\"3.1\">";
   for &#40;$i=0;;$i++&#41; &#123;
      if &#40;$xml->operation&#91;$i&#93;->account&#41; &#123;
         $id=$xml->operation&#91;$i&#93;->id;
         $value=$xml->operation&#91;$i&#93;->value;
         $account=$xml->operation&#91;$i&#93;->account;
         $datetime=date&#40;"Y-m-d H&#58;i&#58;s"&#41;;
         $datetime2=str_replace&#40;" ","T",$datetime&#41;;
         if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;16&#125;$&#41;", $id&#41;&#41; &#123;
            if &#40;eregi &#40;"&#40;&#40;^&#91;0-9&#93;&#123;1,17&#125;&#41;&#40;&#40;\.&#91;0-9&#93;&#123;1,2&#125;&#41;&#123;0,1&#125;&#41;$&#41;", $value&#41;&#41; &#123;
               if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;1,24&#125;$&#41;", $account&#41;&#41; &#123;
                  mysql_select_db&#40;$mysql_db_utm&#41;;
                  $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_assoc&#40;$sql&#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;;
                  mysql_select_db&#40;$mysql_db_snpay&#41;;
                  $sql2 = mysql_query&#40;"SELECT * from snpay.events WHERE id = '$id'"&#41;;
                  $data2 = mysql_fetch_assoc&#40;$sql2&#41;;
                  $test_id = $data2&#91;"id"&#93;;
                  $test_account = $data2&#91;"account"&#93;;
                  $test_value = $data2&#91;"value"&#93;;
                  $test_date = $data2&#91;"date"&#93;;
                  if &#40;$id == $test_id&#41; &#123;
                     $datetime2=str_replace&#40;" ","T",$test_date&#41;;
                     if &#40;$account == $test_account&#41; &#123;
                        if &#40;$value == $test_value&#41; &#123;
                           $result="0"; $omsg=iconv &#40;"utf8", "cp1251","Заявка успешно обработана."&#41;;
                           $replace = array&#40; "&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
                        &#125;
                        else
                        &#123;
                           $result="1021"; $omsg=iconv &#40;"utf8", "cp1251","Дублирование транзакции. Неверно указан объём сделки"&#41;;
                           $replace = array&#40; "&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
                        &#125;
                     &#125;
                     else
                     &#123;
                        $result="1020"; $omsg=iconv &#40;"utf8", "cp1251","Дублирование транзакции. Неверно указан номер счёта"&#41;;
                        $replace = array&#40; "&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
                     &#125;
                  &#125;
                  else
                  &#123;
                     if &#40;$basic_account == ""&#41; &#123;
                        mysql_select_db&#40;$mysql_db_snpay&#41;;
                        $sql2 = mysql_query&#40;"SELECT * from snpay.events WHERE id = '$id'"&#41;;
                        $data2 = mysql_fetch_assoc&#40;$sql2&#41;;
                        $test_date = $data2&#91;"date"&#93;;
                        if &#40;$test_date&#41;&#123;
                           $datetime2=str_replace&#40;" ","T",$test_date&#41;;
                           $result="1001"; $omsg=iconv &#40;"utf8", "cp1251","Неверно указан номер счёта."&#41;; $omsg2="Неверно указан номер счёта.";
                           fileopen&#40;"$datetime Account $account not found. id = $id\n"&#41;;
                           $replace = array&#40; "&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
                        &#125;
                        else
                        &#123;
                           $result="1001"; $omsg=iconv &#40;"utf8", "cp1251","Неверно указан номер счёта."&#41;; $omsg2="Неверно указан номер счёта.";
                           fileopen&#40;"$datetime Account $account not found. id = $id\n"&#41;;
                           $replace = array&#40; "&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
                           mysql_query&#40;"INSERT INTO events &#40;date,id,value,account,omsg&#41; VALUES &#40;'$datetime','$id','$value','$account','$omsg2'&#41;"&#41;;
                        &#125;
                     &#125;
                     else
                     &#123;
                        exec&#40;$utmpaysh." -b ".$value." -a ".$account." -e ".$id." -m ".$utm5m&#41;; $omsg=iconv &#40;"utf8", "cp1251","Заявка успешно обработана."&#41;; $omsg2="Заявка успешно обработана.";
                        mysql_query&#40;"INSERT INTO events &#40;date,id,value,account,omsg&#41; VALUES &#40;'$datetime','$id','$value','$account','$omsg2'&#41;"&#41;;
                        fileopen&#40;"$datetime Transaction for account $account Ok. id = $id\n"&#41;; $result="0";
                        $replace = array&#40;"&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
                     &#125;
                  &#125;
                  if &#40;$data2&#41; &#123;
                     mysql_free_result&#40;$data2&#41;;                               
                  &#125;
                  if &#40;$data&#41; &#123;
                     mysql_free_result&#40;$data&#41;;
                  &#125;
               &#125;
               else
               &#123;
                  $result="1015"; $omsg=iconv &#40;"utf8", "cp1251","Неправильная струкура данных запроса."&#41;;
                  fileopen&#40;"$datetime Error in XML structure. id = $id.\n"&#41;;
                  $replace = array&#40;"&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
               &#125;
            &#125;
            else
            &#123;
               $result="1015"; $omsg=iconv &#40;"utf8", "cp1251","Неправильная струкура данных запроса."&#41;;
               $replace = array&#40;"&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
            &#125;
         &#125;
         else
         &#123;
            $result="1015"; $omsg=iconv &#40;"utf8", "cp1251","Неправильная струкура данных запроса."&#41;;
            $replace = array&#40;"&#91;ID&#93;" => $id, "&#91;RESULT&#93;" => $result, "&#91;OMSG&#93;" => $omsg, "&#91;DATETIME&#93;" => $datetime2&#41;; echo strtr&#40;$TEMPLATE&#91;"XML_RESPONSE"&#93;,$replace&#41;;
         &#125;
      &#125;
      else
      &#123;
         break;
      &#125;
   &#125;
   echo "</package>";
&#125;
else
&#123;
   header&#40;"Content-type&#58; text/html"&#41;;
   header&#40;'HTTP/1.1 400 Bad Request'&#41;;
&#125;
&#125;
else
&#123;
   header&#40;"Content-type&#58; text/html"&#41;;
   header&#40;'HTTP/1.1 412 Precondition Failed'&#41;;
&#125;
?>
Последний раз редактировалось dAverk Сб апр 02, 2011 10:05, всего редактировалось 1 раз.

Aidar
Сообщения: 1
Зарегистрирован: Пт окт 29, 2010 06:26

Сообщение Aidar »

помогите пожалуйста, что означает эта запись?

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

$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;;
что это за база osmp.temp???

steckovski
Сообщения: 31
Зарегистрирован: Сб июл 26, 2008 11:58

Сообщение steckovski »

Роман писал(а):эх, это сладкое слово - кризис ;)

Для поддержки темы, писал скрипт под OSMP - с ними же и отлаживал - полный функционал 100% без багов.


инструкция:

скрипт использует встроенные возможности UTM5, конкретно:
/netup/utm5/bin/utm5_payment_tool

необходимо для работы:

1. apache + php5
2. копируем в удобную папочку apache
3. расширение .php или любое другое в зависимости от настроек
4.

в скрипте меняем параметры

$mysql_hostname = "localhost";
$mysql_user = "";
$mysql_password = "";
$mysql_database = "UTM5";
находим строку: payment_tool и меняем в ней логин с паролем (по умолчанию init, init).
5. даем ссылку в OSMP и тестируемся, все тесты должны пройти на 100%.


типа для некоммерческого использования по лицензии BSD, с автором согласовывать использование и распостранение, и все такое ;)
  • Код: Выделить всё

    <?
    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 = "localhost";
    $mysql_user = "";
    $mysql_password = "";
    $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;"/netup/utm5/log/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;; 
    	$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;0-9&#93;&#123;1,6&#125;$&#41;", $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 = 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";
    	fileopen&#40;"$datenow Account $account not found!\n"&#41;;
    	&#125;
    
    if &#40;$basic_account != ""&#41; &#123;
    	$result="0"; $comment="Personal account found";
    	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="300"; $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;;
    	$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;0-9&#93;&#123;1,6&#125;$&#41;", $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";
    	exec&#40;"/netup/utm5/bin/utm5_payment_tool -h 127.0.0.1 -P 11758 -l init -p init -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;;
    
    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";
    	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;;
    	$data2=mysql_fetch_array&#40;$sql2, MYSQL_ASSOC&#41;;
    	$prv_txn=$data2&#91;"id"&#93;;
    	$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";
    	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="300"; $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;
    
    ?>
Вопросы по скрипту

1 Что является идентификатором для билинга
2 Будет работать с именным кошельком КИВИ

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

ololo

Сообщение dAverk »

для Элекснета (точнее handyBank) - чудовищное скриптовое говно моего производства.
лицензия BSD. (с) dAverk
index.php

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

<?php
header&#40;"Content-type&#58; text/plain"&#41;;
$utmpaysh = "/netup/utm5/bin/utm5_payment_tool"; //  utm_payment_tool
$utm5m = "103"; // Payment key utm
$APP_PATH="./";

$mysql_hostname = "localhost";
$mysql_user = "eleksnet";
$mysql_password = "******"; //MySQL eleksnet user pass
$mysql_db_utm = "UTM5"; 
$mysql_db_elekspay = "eleksnet"; /* CREATE TABLE events &#40;date DATETIME, idkey VARCHAR&#40;128&#41;, sum INT&#40;10&#41;, client VARCHAR&#40;10&#41;, msg VARCHAR&#40;300&#41;&#41;; */

function readGetPost&#40;&#41; &#123;
                if &#40;!get_magic_quotes_gpc&#40;&#41;&#41; return $_POST+$_GET;
                        else return array_map&#40;'stripslashes',$_GET+$_POST&#41;;
        &#125;

$db = @mysql_connect&#40;$mysql_hostname, $mysql_user, $mysql_password&#41;;
if &#40;$db&#41;&#123;
   mysql_select_db&#40;$mysql_db_utm&#41;;
&#125;
else
&#123;
   header&#40;"Content-type&#58; text/plain"&#41;;
   header&#40;'HTTP/1.1 503 Service Unavailable'&#41;;
&#125;

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

$inquiry=readGetPost&#40;&#41;;
$data .= $inquiry&#91;"key"&#93;;
$data .= $inquiry&#91;"stan"&#93;;
$data .= $inquiry&#91;"client"&#93;;
$data .= $inquiry&#91;"sum"&#93;;
$data .= $inquiry&#91;"timestamp"&#93;;
$data .= $inquiry&#91;"term"&#93;;
$data .= $inquiry&#91;"cheque"&#93;;
$data .= $inquiry&#91;"serviceid"&#93;;

$sign = shell_exec&#40;$APP_PATH.'check-signature.sh '.$data.' '.$inquiry&#91;"sign"&#93;&#41;;

$datetime=date&#40;"Y-m-d H&#58;i&#58;s"&#41;;
$datetime2=str_replace&#40;" ","T",$datetime&#41;;

if &#40;$inquiry&#91;"action"&#93; == "pre"&#41; &#123;
        if &#40;eregi &#40;"&#40;^&#91;0-9A-Fa-f&#93;&#123;1,128&#125;$&#41;", $inquiry&#91;"key"&#93;&#41;&#41; &#123;
                if &#40;eregi &#40;"&#40;^&#91;0-9a-zA-Z&#93;&#123;6&#125;$&#41;", $inquiry&#91;"stan"&#93;&#41;&#41; &#123;
                        if &#40;eregi &#40;"&#40;^&#91;0-9X&#93;&#123;1,10&#125;$&#41;", $inquiry&#91;"client"&#93;&#41;&#41; &#123;
                                if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;1,17&#125;$&#41;", $inquiry&#91;"sum"&#93;&#41;&#41; &#123;
                                        if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;14&#125;$&#41;", $inquiry&#91;"timestamp"&#93;&#41;&#41; &#123;
                                                if &#40;eregi &#40;"&#40;^&#91;0-9a-zA-Z&#93;&#123;8&#125;$&#41;", $inquiry&#91;"term"&#93;&#41;&#41; &#123;
                                                        if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;4&#125;$&#41;", $inquiry&#91;"cheque"&#93;&#41;&#41; &#123;
                                                                if &#40;eregi &#40;"&#40;^&#40;&#40;&#91;0-9&#93;&#123;8&#125;&#41;|&#40;&#91;0-9&#93;&#123;10&#125;&#41;&#41;$&#41;", $inquiry&#91;"serviceid"&#93;&#41;&#41; &#123;
                                                                        if &#40;preg_match &#40;"/&#40;^&#91;0-9A-Fa-f&#93;&#123;512&#125;$&#41;/", $inquiry&#91;"sign"&#93;&#41;&#41; &#123;     
                                                                                if &#40;$sign == "Verified OK"&#41; &#123;
                                                                                        mysql_select_db&#40;$mysql_db_utm&#41;;
                                                                                        $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 = '".$inquiry&#91;"client"&#93;."' and users.is_deleted!=1"&#41;;
                                                                                        $client = mysql_fetch_assoc&#40;$sql&#41;;
                                                                                        if &#40;$client&#91;"basic_account"&#93; == ""&#41; &#123;
                                                                                                fileopen&#40;"$datetime Pre transaction error&#58; can not find account=".$inquiry&#91;"client"&#93;." Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                                                $code = "11";
                                                                                                $code_msg = "Pre transaction error&#58; account not found";
                                                                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                                                echo "FLD_039 $code \n";
                                                                                                echo "FLD_048 $code_msg \n";
                                                                                                echo "FLD_000 $sign \n";
                                                                                        &#125;
                                                                                        else &#123;
                                                                                                exec&#40;$utmpaysh." -b ".$inquiry&#91;"sum"&#93;." -a ".$inquiry&#91;"client"&#93;." -e ".$inquiry&#91;"key"&#93;." -m ".$utm5m&#41;;
                                                                                                fileopen&#40;"$datetime Pre transaction for account ".$inquiry&#91;"client"&#93;." Ok. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                                                $code = "0";
                                                                                                $code_msg = "Pre transaction complete";
                                                                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                                                echo "FLD_039 $code \n";
                                                                                                echo "FLD_048 $code_msg \n";
                                                                                                echo "FLD_000 $sign \n";
                                                                                        &#125;
                                                                                &#125;
                                                                                else &#123;
                                                                                        $code = "10";
                                                                                        $code_msg = "Inquiry field 9 seems not good";
                                                                                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                                        fileopen&#40;"$datetime Payment error&#58; sign seems not good. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                                        echo "FLD_039 $code \n";
                                                                                        echo "FLD_048 $code_msg \n";
                                                                                        echo "FLD_000 $sign \n";
                                                                                &#125;
                                                                        &#125;
                                                                        else &#123;
                                                                                $code = "9";
                                                                                $code_msg = "Inquiry field 9 incorrectly";
                                                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                                fileopen&#40;"$datetime Payment error&#58; invalid field sign. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                                echo "FLD_039 $code \n";
                                                                                echo "FLD_048 $code_msg \n";
                                                                                echo "FLD_000 $sign \n";
                                                                        &#125;
                                                                &#125;
                                                                else &#123;
                                                                        $code = "8";
                                                                        $code_msg = "Inquiry field 8 incorrectly";
                                                                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                        fileopen&#40;"$datetime Payment error&#58; invalid field serviceid. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                        echo "FLD_039 $code \n";
                                                                        echo "FLD_048 $code_msg \n";
                                                                        echo "FLD_000 $sign \n";
                                                                &#125;
                                                        &#125;
                                                        else &#123;
                                                                $code = "7";
                                                                $code_msg = "Inquiry field 7 incorrectly";
                                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                fileopen&#40;"$datetime Payment error&#58; invalid field cheque. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                echo "FLD_039 $code \n";
                                                                echo "FLD_048 $code_msg \n";
                                                                echo "FLD_000 $sign \n";
                                                        &#125;
                                                &#125;
                                                else &#123;
                                                        $code = "6";
                                                        $code_msg = "Inquiry field 6 incorrectly";
                                                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                        fileopen&#40;"$datetime Payment error&#58; invalid field term. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                        echo "FLD_039 $code \n";
                                                        echo "FLD_048 $code_msg \n";
                                                        echo "FLD_000 $sign \n";

                                                &#125;
                                        &#125;
                                        else &#123;
                                                $code = "5";
                                                $code_msg = "Inquiry field 5 incorrectly";
                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                fileopen&#40;"$datetime Payment error&#58; invalid field timestap. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                echo "FLD_039 $code \n";
                                                echo "FLD_048 $code_msg \n";
                                                echo "FLD_000 $sign \n";
                                        &#125;
                                &#125;
                                else &#123;
                                        $code = "4";
                                        $code_msg = "Inquiry field 4 incorrectly";
                                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                        fileopen&#40;"$datetime Payment error&#58; invalid field sum. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                        echo "FLD_039 $code \n";
                                        echo "FLD_048 $code_msg \n";
                                        echo "FLD_000 $sign \n";
                                &#125;
                        &#125;
                        else &#123;
                                $code = "3";
                                $code_msg = "Inquiry field 3 incorrectly";
                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                fileopen&#40;"$datetime Payment error&#58; invalid field client. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                echo "FLD_039 $code \n";
                                echo "FLD_048 $code_msg \n";
                                echo "FLD_000 $sign \n";
                        &#125;
                &#125;
                else &#123;
                        $code = "2";
                        $code_msg = "Inquiry field 2 incorrectly";
                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                        fileopen&#40;"$datetime Payment error&#58; invalid field stan. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                        echo "FLD_039 $code \n";
                        echo "FLD_048 $code_msg \n";
                        echo "FLD_000 $sign \n";
                &#125;
        &#125;
        else &#123;
                $code = "1";
                $code_msg = "Inquiry field 1 incorrectly";
                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                fileopen&#40;"$datetime Payment error&#58; invalid field key. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                echo "FLD_039 $code \n";
                echo "FLD_048 $code_msg \n";
                echo "FLD_000 $sign \n";
        &#125;
&#125;
elseif &#40;$inquiry&#91;"action"&#93; == "auth"&#41; &#123;
        if &#40;eregi &#40;"&#40;^&#91;0-9A-Fa-f&#93;&#123;1,128&#125;$&#41;", $inquiry&#91;"key"&#93;&#41;&#41; &#123;
                if &#40;eregi &#40;"&#40;^&#91;0-9X&#93;&#123;6&#125;$&#41;", $inquiry&#91;"stan"&#93;&#41;&#41; &#123;
                        if &#40;eregi &#40;"&#40;^&#91;0-9X&#93;&#123;1,10&#125;$&#41;", $inquiry&#91;"client"&#93;&#41;&#41; &#123;
                                if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;1,17&#125;$&#41;", $inquiry&#91;"sum"&#93;&#41;&#41; &#123;
                                        if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;14&#125;$&#41;", $inquiry&#91;"timestamp"&#93;&#41;&#41; &#123;
                                                if &#40;eregi &#40;"&#40;^&#91;0-9a-zA-Z&#93;&#123;8&#125;$&#41;", $inquiry&#91;"term"&#93;&#41;&#41; &#123;
                                                        if &#40;eregi &#40;"&#40;^&#91;0-9&#93;&#123;4&#125;$&#41;", $inquiry&#91;"cheque"&#93;&#41;&#41; &#123;
                                                                if &#40;eregi &#40;"&#40;^&#40;&#40;&#91;0-9&#93;&#123;8&#125;&#41;|&#40;&#91;0-9&#93;&#123;10&#125;&#41;&#41;$&#41;", $inquiry&#91;"serviceid"&#93;&#41;&#41; &#123;
                                                                        if &#40;preg_match &#40;"/&#40;^&#91;0-9A-Fa-f&#93;&#123;512&#125;$&#41;/", $inquiry&#91;"sign"&#93;&#41;&#41; &#123;
                                                                                if &#40;$sign == "Verified OK"&#41; &#123;
                                                                                        mysql_select_db&#40;$mysql_db_elekspay&#41;;
                                                                                        $sql2 = mysql_query&#40;"SELECT * from elekspay.events WHERE idkey = '".$inquiry&#91;"key"&#93;."'"&#41;;
                                                                                        $data2 = mysql_fetch_assoc&#40;$sql2&#41;;
                                                                                        if &#40;$inquiry&#91;"key"&#93; == $data2&#91;"idkey"&#93;&#41; &#123;
                                                                                                $code = "11";
                                                                                                $code_msg = "This transaction is already done";
                                                                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                                                fileopen&#40;"$datetime This transaction is already done . Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                                                echo "FLD_039 $code \n";
                                                                                                echo "FLD_048 $code_msg \n";
                                                                                                echo "FLD_000 $sign \n";
                                                                                        &#125;
                                                                                        else &#123;
                                                                                                exec&#40;$utmpaysh." -b ".$inquiry&#91;"sum"&#93;." -a ".$inquiry&#91;"client"&#93;." -e ".$inquiry&#91;"key"&#93;." -m ".$utm5m&#41;;
                                                                                                $key = $inquiry&#91;"key"&#93;;
                                                                                                $sum = $inquiry&#91;"sum"&#93;;
                                                                                                $client = $inquiry&#91;"client"&#93;;
                                                                                                mysql_query&#40;"INSERT INTO events &#40;`date`,`idkey`,`sum`,`client`,`msg`&#41; VALUES &#40;'$datetime','$key','$sum','$client','Transaction complete'&#41;"&#41;;
                                                                                                fileopen&#40;"$datetime Transaction for account ".$inquiry&#91;"client"&#93;." Ok. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                                                $code = "0";
                                                                                                $code_msg = "Transcation complete";
                                                                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                                                echo "FLD_039 $code \n";
                                                                                                echo "FLD_048 $code_msg \n";
                                                                                                echo "FLD_000 $sign \n";
                                                                                                &#125;
                                                                                &#125;
                                                                                else &#123;
                                                                                        $code = "10";
                                                                                        $code_msg = "Inquiry field 9 seems not good";
                                                                                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                                        fileopen&#40;"$datetime Payment error&#58; sign seems not good. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                                        echo "FLD_039 $code \n";
                                                                                        echo "FLD_048 $code_msg \n";
                                                                                        echo "FLD_000 $sign \n";
                                                                                &#125;
                                                                        &#125;
                                                                        else &#123;
                                                                                $code = "9";
                                                                                $code_msg = "Inquiry field 9 incorrectly";
                                                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                                fileopen&#40;"$datetime Payment error&#58; invalid field sign. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                                echo "FLD_039 $code \n";
                                                                                echo "FLD_048 $code_msg \n";
                                                                                echo "FLD_000 $sign \n";
                                                                        &#125;
                                                                &#125;
                                                                else &#123;
                                                                        $code = "8";
                                                                        $code_msg = "Inquiry field 8 incorrectly";
                                                                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                        fileopen&#40;"$datetime Payment error&#58; invalid field serviceid. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                        echo "FLD_039 $code \n";
                                                                        echo "FLD_048 $code_msg \n";
                                                                        echo "FLD_000 $sign \n";
                                                                &#125;
                                                        &#125;
                                                        else &#123;
                                                                $code = "7";
                                                                $code_msg = "Inquiry field 7 incorrectly";
                                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                                fileopen&#40;"$datetime Payment error&#58; invalid field cheque. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                                echo "FLD_039 $code \n";
                                                                echo "FLD_048 $code_msg \n";
                                                                echo "FLD_000 $sign \n";
                                                        &#125;
                                                &#125;
                                                else &#123;
                                                        $code = "6";
                                                        $code_msg = "Inquiry field 6 incorrectly";
                                                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                        fileopen&#40;"$datetime Payment error&#58; invalid field term. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                        echo "FLD_039 $code \n";
                                                        echo "FLD_048 $code_msg \n";
                                                        echo "FLD_000 $sign \n";

                                                &#125;
                                        &#125;
                                        else &#123;
                                                $code = "5";
                                                $code_msg = "Inquiry field 5 incorrectly";
                                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                                fileopen&#40;"$datetime Payment error&#58; invalid field timestap. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                                echo "FLD_039 $code \n";
                                                echo "FLD_048 $code_msg \n";
                                                echo "FLD_000 $sign \n";
                                        &#125;
                                &#125;
                                else &#123;
                                        $code = "4";
                                        $code_msg = "Inquiry field 4 incorrectly";
                                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                        fileopen&#40;"$datetime Payment error&#58; invalid field sum. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                        echo "FLD_039 $code \n";
                                        echo "FLD_048 $code_msg \n";
                                        echo "FLD_000 $sign \n";
                                &#125;
                        &#125;
                        else &#123;
                                $code = "3";
                                $code_msg = "Inquiry field 3 incorrectly";
                                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                                fileopen&#40;"$datetime Payment error&#58; invalid field client. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                                echo "FLD_039 $code \n";
                                echo "FLD_048 $code_msg \n";
                                echo "FLD_000 $sign \n";
                        &#125;
                &#125;
                else &#123;
                        $code = "2";
                        $code_msg = "Inquiry field 2 incorrectly";
                        $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                        fileopen&#40;"$datetime Payment error&#58; invalid field stan. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                        echo "FLD_039 $code \n";
                        echo "FLD_048 $code_msg \n";
                        echo "FLD_000 $sign \n";
                &#125;
        &#125;
        else &#123;
                $code = "1";
                $code_msg = "Inquiry field 1 incorrectly";
                $check = $code; $check .= $code_msg; $sign = shell_exec&#40;$APP_PATH.'create-signature.sh '.$check&#41;;
                fileopen&#40;"$datetime Payment error&#58; invalid field key. Payment key = ".$inquiry&#91;"key"&#93;."\n"&#41;;
                echo "FLD_039 $code \n";
                echo "FLD_048 $code_msg \n";
                echo "FLD_000 $sign \n";
        &#125;
&#125;
?>
check-signature.sh

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

DATA=$&#123;1&#125;
SIGNATURE=$&#123;2&#125;
PUBLIC_KEY_FILE=public-key
DATA_FILE=$&#123;DATA&#125;'.data'
SIGNATURE_BINARY_FILE=$&#123;DATA&#125;'.signature'
printf $DATA > $&#123;DATA_FILE&#125; 
./h2b.sh $&#123;SIGNATURE&#125; $&#123;SIGNATURE_BINARY_FILE&#125; 

RESULT=`\
openssl dgst \
-signature $&#123;SIGNATURE_BINARY_FILE&#125; \
-verify $&#123;PUBLIC_KEY_FILE&#125; \
$&#123;DATA_FILE&#125;\
`
rm -f $&#123;SIGNATURE_BINARY_FILE&#125;
rm -f $&#123;DATA_FILE&#125;
echo -n $&#123;RESULT&#125;
create-signature.sh

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

DATA=$&#123;1&#125;
DATA_FILE=$&#123;DATA&#125;'.data'
printf $DATA > $&#123;DATA_FILE&#125; 
PRIVATE_KEY_FILE=private-key

RESULT=`\
openssl dgst -hex \
-sign $&#123;PRIVATE_KEY_FILE&#125; \
$&#123;DATA_FILE&#125; \
| awk '&#123;print $2&#125;'\
`

rm -rf $&#123;DATA_FILE&#125;

echo -n $&#123;RESULT&#125;
check-signature.sh , h2b и h2b.sh вам сам элекс и пришлёт =)

Аватара пользователя
Нафаня
Сообщения: 130
Зарегистрирован: Пн июн 09, 2008 11:12

Сообщение Нафаня »

А для чего базовый модуль берется? Просто для того что бы в биллинге открылась возможность платежей?
И вот если через этот скрипт будут платежи осуществляться, можно ли будет их видеть в стандартной админке модуля. т.е. отчеты можно будет по платежам через нее делать.
Стоит ли брать модуль ОСМП отдельный или он такой же как и этот представленный функционал?

Ответить