Скрипты приема платежей - обмен :)
Скрипты приема платежей - обмен :)
Кто-нибудь писал на PHP скрипт для приема платежей e-port версии 2.
Поделитесь? а то нет ни настроения ни времени писать.
Поделитесь? а то нет ни настроения ни времени писать.
Последний раз редактировалось Роман Ср фев 18, 2009 00:16, всего редактировалось 1 раз.
эх, это сладкое слово - кризис 
Для поддержки темы, писал скрипт под 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, с автором согласовывать использование и распостранение, и все такое

Для поддержки темы, писал скрипт под 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("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 = "localhost";
$mysql_user = "";
$mysql_password = "";
$mysql_database = "UTM5";
$datenow=date("d:m:y G:i:s");
function fileopen($str)
{
$file = fopen ("/netup/utm5/log/utm5_osmp.log","a-");
fputs ( $file, $str); fclose ($file);
};
$command=$_GET["command"];
if ($command == "check"){
$txn_id=$_GET["txn_id"];
$account=$_GET["account"];
$sum=$_GET["sum"];
if (eregi ("(^[0-9]{1,20}$)", $txn_id)) {
if (eregi ("(^[0-9]{1,6}$)", $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 = 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";
fileopen("$datenow Account $account not found!\n");
}
if ($basic_account != "") {
$result="0"; $comment="Personal account found";
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="300"; $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"];
$account=$_GET["account"];
$sum=$_GET["sum"];
if (eregi ("(^[0-9]{1,20}$)", $txn_id)) {
if (eregi ("(^[0-9]{1,6}$)", $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";
exec("/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");
$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"];
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";
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");
$data2=mysql_fetch_array($sql2, MYSQL_ASSOC);
$prv_txn=$data2["id"];
$result=$data2["txn_id"];
$account=$data2["account"];
$sum=$data2["sum"];
$result="0"; $comment="Payment with this txn_id alredy recieved";
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="300"; $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);
}
?>
Re: Скрипты приема платежей - обмен :)
Ещё интересует эта тема?Роман писал(а):Кто-нибудь писал на PHP скрипт для приема платежей e-port версии 2.
Поделитесь? а то нет ни настроения ни времени писать.
Re: Скрипты приема платежей - обмен :)
меня очень интересует...попытался сам написать, но то он мне 401 выдает то 400...на самих операциях...при запросе каталога или баланса все нормально...хотелось бы обсудить e-port со знающим человекомBelchik писал(а):Ещё интересует эта тема?Роман писал(а):Кто-нибудь писал на PHP скрипт для приема платежей e-port версии 2.
Поделитесь? а то нет ни настроения ни времени писать.
А что такое OSMP ?
И что делает скрипт, можно подробнее?
Я так понял, что через него можно оператор может пополнять балланс абонентам ?
И что делает скрипт, можно подробнее?
Я так понял, что через него можно оператор может пополнять балланс абонентам ?
Последний раз редактировалось alexus Сб фев 27, 2010 09:21, всего редактировалось 1 раз.
Пример интеграции со SprintNet.
Проверено Спринтом - сказали что всё Ок, если будут изменения - выложу.
Спасибо Роману за идею с темплейтами, удалося уменьшить "чудо-скрипт"
лицензия BSD. (с) dAverk
Проверено Спринтом - сказали что всё Ок, если будут изменения - выложу.
Спасибо Роману за идею с темплейтами, удалося уменьшить "чудо-скрипт"
лицензия BSD. (с) dAverk
Код: Выделить всё
<?php
header("Content-type: text/xml");
$utmpaysh = "/netup/utm5/bin/utm5_payment_tool"; // utm_payment_tool
$utm5m = "102"; // id платежа utm
$TEMPLATE["XML_RESPONSE"] = "<result><id>[ID]</id><code>[RESULT]</code><omsg>[OMSG]</omsg><datetime>[DATETIME]</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 (date DATETIME, id VARCHAR(16), value DECIMAL(10,2), account
VARCHAR(20), omsg VARCHAR(300)); */
if ($_SERVER["HTTP_PRO_AUTH"] == "login=login; password=password") { // логин-пасс спринта
$db = @mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
if ($db){
mysql_select_db($mysql_db_utm);
}
else
{
header("Content-type: text/html");
header('HTTP/1.1 503 Service Unavailable');
}
function fileopen($str)
{
$file = fopen ("/netup/utm5/log/utm5_snpay.log","a-");
fputs ($file, $str); fclose ($file);
};
$xmlpacket=$HTTP_RAW_POST_DATA;
$xml = new SimpleXMLElement($xmlpacket);
if ($xml) {
echo "<?xml version=\"1.0\" encoding=\"windows-1251\" ?><package version=\"3.1\">";
for ($i=0;;$i++) {
if ($xml->operation[$i]->account) {
$id=$xml->operation[$i]->id;
$value=$xml->operation[$i]->value;
$account=$xml->operation[$i]->account;
$datetime=date("Y-m-d H:i:s");
$datetime2=str_replace(" ","T",$datetime);
if (eregi ("(^[0-9]{16}$)", $id)) {
if (eregi ("((^[0-9]{1,17})((\.[0-9]{1,2}){0,1})$)", $value)) {
if (eregi ("(^[0-9]{1,24}$)", $account)) {
mysql_select_db($mysql_db_utm);
$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_assoc($sql);
$basic_account = $data["basic_account"];
$balance = $data["balance"];
$credit = $data["credit"];
$is_blocked = $data["is_blocked"];
mysql_select_db($mysql_db_snpay);
$sql2 = mysql_query("SELECT * from snpay.events WHERE id = '$id'");
$data2 = mysql_fetch_assoc($sql2);
$test_id = $data2["id"];
$test_account = $data2["account"];
$test_value = $data2["value"];
$test_date = $data2["date"];
if ($id == $test_id) {
$datetime2=str_replace(" ","T",$test_date);
if ($account == $test_account) {
if ($value == $test_value) {
$result="0"; $omsg=iconv ("utf8", "cp1251","Заявка успешно обработана.");
$replace = array( "[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
}
else
{
$result="1021"; $omsg=iconv ("utf8", "cp1251","Дублирование транзакции. Неверно указан объём сделки");
$replace = array( "[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
}
}
else
{
$result="1020"; $omsg=iconv ("utf8", "cp1251","Дублирование транзакции. Неверно указан номер счёта");
$replace = array( "[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
}
}
else
{
if ($basic_account == "") {
mysql_select_db($mysql_db_snpay);
$sql2 = mysql_query("SELECT * from snpay.events WHERE id = '$id'");
$data2 = mysql_fetch_assoc($sql2);
$test_date = $data2["date"];
if ($test_date){
$datetime2=str_replace(" ","T",$test_date);
$result="1001"; $omsg=iconv ("utf8", "cp1251","Неверно указан номер счёта."); $omsg2="Неверно указан номер счёта.";
fileopen("$datetime Account $account not found. id = $id\n");
$replace = array( "[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
}
else
{
$result="1001"; $omsg=iconv ("utf8", "cp1251","Неверно указан номер счёта."); $omsg2="Неверно указан номер счёта.";
fileopen("$datetime Account $account not found. id = $id\n");
$replace = array( "[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
mysql_query("INSERT INTO events (date,id,value,account,omsg) VALUES ('$datetime','$id','$value','$account','$omsg2')");
}
}
else
{
exec($utmpaysh." -b ".$value." -a ".$account." -e ".$id." -m ".$utm5m); $omsg=iconv ("utf8", "cp1251","Заявка успешно обработана."); $omsg2="Заявка успешно обработана.";
mysql_query("INSERT INTO events (date,id,value,account,omsg) VALUES ('$datetime','$id','$value','$account','$omsg2')");
fileopen("$datetime Transaction for account $account Ok. id = $id\n"); $result="0";
$replace = array("[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
}
}
if ($data2) {
mysql_free_result($data2);
}
if ($data) {
mysql_free_result($data);
}
}
else
{
$result="1015"; $omsg=iconv ("utf8", "cp1251","Неправильная струкура данных запроса.");
fileopen("$datetime Error in XML structure. id = $id.\n");
$replace = array("[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
}
}
else
{
$result="1015"; $omsg=iconv ("utf8", "cp1251","Неправильная струкура данных запроса.");
$replace = array("[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
}
}
else
{
$result="1015"; $omsg=iconv ("utf8", "cp1251","Неправильная струкура данных запроса.");
$replace = array("[ID]" => $id, "[RESULT]" => $result, "[OMSG]" => $omsg, "[DATETIME]" => $datetime2); echo strtr($TEMPLATE["XML_RESPONSE"],$replace);
}
}
else
{
break;
}
}
echo "</package>";
}
else
{
header("Content-type: text/html");
header('HTTP/1.1 400 Bad Request');
}
}
else
{
header("Content-type: text/html");
header('HTTP/1.1 412 Precondition Failed');
}
?>
Последний раз редактировалось dAverk Сб апр 02, 2011 10:05, всего редактировалось 1 раз.
помогите пожалуйста, что означает эта запись?
что это за база osmp.temp???
Код: Выделить всё
$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"];
-
- Сообщения: 31
- Зарегистрирован: Сб июл 26, 2008 11:58
Вопросы по скриптуРоман писал(а):эх, это сладкое слово - кризис
Для поддержки темы, писал скрипт под 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("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 = "localhost"; $mysql_user = ""; $mysql_password = ""; $mysql_database = "UTM5"; $datenow=date("d:m:y G:i:s"); function fileopen($str) { $file = fopen ("/netup/utm5/log/utm5_osmp.log","a-"); fputs ( $file, $str); fclose ($file); }; $command=$_GET["command"]; if ($command == "check"){ $txn_id=$_GET["txn_id"]; $account=$_GET["account"]; $sum=$_GET["sum"]; if (eregi ("(^[0-9]{1,20}$)", $txn_id)) { if (eregi ("(^[0-9]{1,6}$)", $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 = 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"; fileopen("$datenow Account $account not found!\n"); } if ($basic_account != "") { $result="0"; $comment="Personal account found"; 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="300"; $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"]; $account=$_GET["account"]; $sum=$_GET["sum"]; if (eregi ("(^[0-9]{1,20}$)", $txn_id)) { if (eregi ("(^[0-9]{1,6}$)", $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"; exec("/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"); $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"]; 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"; 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"); $data2=mysql_fetch_array($sql2, MYSQL_ASSOC); $prv_txn=$data2["id"]; $result=$data2["txn_id"]; $account=$data2["account"]; $sum=$data2["sum"]; $result="0"; $comment="Payment with this txn_id alredy recieved"; 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="300"; $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); } ?>
1 Что является идентификатором для билинга
2 Будет работать с именным кошельком КИВИ
ololo
для Элекснета (точнее handyBank) - чудовищное скриптовое говно моего производства.
лицензия BSD. (с) dAverk
index.php
check-signature.sh
create-signature.sh
check-signature.sh , h2b и h2b.sh вам сам элекс и пришлёт =)
лицензия BSD. (с) dAverk
index.php
Код: Выделить всё
<?php
header("Content-type: text/plain");
$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 (date DATETIME, idkey VARCHAR(128), sum INT(10), client VARCHAR(10), msg VARCHAR(300)); */
function readGetPost() {
if (!get_magic_quotes_gpc()) return $_POST+$_GET;
else return array_map('stripslashes',$_GET+$_POST);
}
$db = @mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
if ($db){
mysql_select_db($mysql_db_utm);
}
else
{
header("Content-type: text/plain");
header('HTTP/1.1 503 Service Unavailable');
}
function fileopen($str)
{
$file = fopen ("/netup/utm5/log/utm5_elekspay.log","a-");
fputs ($file, $str); fclose ($file);
};
$inquiry=readGetPost();
$data .= $inquiry["key"];
$data .= $inquiry["stan"];
$data .= $inquiry["client"];
$data .= $inquiry["sum"];
$data .= $inquiry["timestamp"];
$data .= $inquiry["term"];
$data .= $inquiry["cheque"];
$data .= $inquiry["serviceid"];
$sign = shell_exec($APP_PATH.'check-signature.sh '.$data.' '.$inquiry["sign"]);
$datetime=date("Y-m-d H:i:s");
$datetime2=str_replace(" ","T",$datetime);
if ($inquiry["action"] == "pre") {
if (eregi ("(^[0-9A-Fa-f]{1,128}$)", $inquiry["key"])) {
if (eregi ("(^[0-9a-zA-Z]{6}$)", $inquiry["stan"])) {
if (eregi ("(^[0-9X]{1,10}$)", $inquiry["client"])) {
if (eregi ("(^[0-9]{1,17}$)", $inquiry["sum"])) {
if (eregi ("(^[0-9]{14}$)", $inquiry["timestamp"])) {
if (eregi ("(^[0-9a-zA-Z]{8}$)", $inquiry["term"])) {
if (eregi ("(^[0-9]{4}$)", $inquiry["cheque"])) {
if (eregi ("(^(([0-9]{8})|([0-9]{10}))$)", $inquiry["serviceid"])) {
if (preg_match ("/(^[0-9A-Fa-f]{512}$)/", $inquiry["sign"])) {
if ($sign == "Verified OK") {
mysql_select_db($mysql_db_utm);
$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 = '".$inquiry["client"]."' and users.is_deleted!=1");
$client = mysql_fetch_assoc($sql);
if ($client["basic_account"] == "") {
fileopen("$datetime Pre transaction error: can not find account=".$inquiry["client"]." Payment key = ".$inquiry["key"]."\n");
$code = "11";
$code_msg = "Pre transaction error: account not found";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
else {
exec($utmpaysh." -b ".$inquiry["sum"]." -a ".$inquiry["client"]." -e ".$inquiry["key"]." -m ".$utm5m);
fileopen("$datetime Pre transaction for account ".$inquiry["client"]." Ok. Payment key = ".$inquiry["key"]."\n");
$code = "0";
$code_msg = "Pre transaction complete";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "10";
$code_msg = "Inquiry field 9 seems not good";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: sign seems not good. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "9";
$code_msg = "Inquiry field 9 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field sign. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "8";
$code_msg = "Inquiry field 8 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field serviceid. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "7";
$code_msg = "Inquiry field 7 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field cheque. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "6";
$code_msg = "Inquiry field 6 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field term. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "5";
$code_msg = "Inquiry field 5 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field timestap. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "4";
$code_msg = "Inquiry field 4 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field sum. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "3";
$code_msg = "Inquiry field 3 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field client. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "2";
$code_msg = "Inquiry field 2 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field stan. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "1";
$code_msg = "Inquiry field 1 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field key. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
elseif ($inquiry["action"] == "auth") {
if (eregi ("(^[0-9A-Fa-f]{1,128}$)", $inquiry["key"])) {
if (eregi ("(^[0-9X]{6}$)", $inquiry["stan"])) {
if (eregi ("(^[0-9X]{1,10}$)", $inquiry["client"])) {
if (eregi ("(^[0-9]{1,17}$)", $inquiry["sum"])) {
if (eregi ("(^[0-9]{14}$)", $inquiry["timestamp"])) {
if (eregi ("(^[0-9a-zA-Z]{8}$)", $inquiry["term"])) {
if (eregi ("(^[0-9]{4}$)", $inquiry["cheque"])) {
if (eregi ("(^(([0-9]{8})|([0-9]{10}))$)", $inquiry["serviceid"])) {
if (preg_match ("/(^[0-9A-Fa-f]{512}$)/", $inquiry["sign"])) {
if ($sign == "Verified OK") {
mysql_select_db($mysql_db_elekspay);
$sql2 = mysql_query("SELECT * from elekspay.events WHERE idkey = '".$inquiry["key"]."'");
$data2 = mysql_fetch_assoc($sql2);
if ($inquiry["key"] == $data2["idkey"]) {
$code = "11";
$code_msg = "This transaction is already done";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime This transaction is already done . Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
else {
exec($utmpaysh." -b ".$inquiry["sum"]." -a ".$inquiry["client"]." -e ".$inquiry["key"]." -m ".$utm5m);
$key = $inquiry["key"];
$sum = $inquiry["sum"];
$client = $inquiry["client"];
mysql_query("INSERT INTO events (`date`,`idkey`,`sum`,`client`,`msg`) VALUES ('$datetime','$key','$sum','$client','Transaction complete')");
fileopen("$datetime Transaction for account ".$inquiry["client"]." Ok. Payment key = ".$inquiry["key"]."\n");
$code = "0";
$code_msg = "Transcation complete";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "10";
$code_msg = "Inquiry field 9 seems not good";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: sign seems not good. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "9";
$code_msg = "Inquiry field 9 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field sign. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "8";
$code_msg = "Inquiry field 8 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field serviceid. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "7";
$code_msg = "Inquiry field 7 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field cheque. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "6";
$code_msg = "Inquiry field 6 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field term. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "5";
$code_msg = "Inquiry field 5 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field timestap. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "4";
$code_msg = "Inquiry field 4 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field sum. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "3";
$code_msg = "Inquiry field 3 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field client. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "2";
$code_msg = "Inquiry field 2 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field stan. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
else {
$code = "1";
$code_msg = "Inquiry field 1 incorrectly";
$check = $code; $check .= $code_msg; $sign = shell_exec($APP_PATH.'create-signature.sh '.$check);
fileopen("$datetime Payment error: invalid field key. Payment key = ".$inquiry["key"]."\n");
echo "FLD_039 $code \n";
echo "FLD_048 $code_msg \n";
echo "FLD_000 $sign \n";
}
}
?>
Код: Выделить всё
DATA=${1}
SIGNATURE=${2}
PUBLIC_KEY_FILE=public-key
DATA_FILE=${DATA}'.data'
SIGNATURE_BINARY_FILE=${DATA}'.signature'
printf $DATA > ${DATA_FILE}
./h2b.sh ${SIGNATURE} ${SIGNATURE_BINARY_FILE}
RESULT=`\
openssl dgst \
-signature ${SIGNATURE_BINARY_FILE} \
-verify ${PUBLIC_KEY_FILE} \
${DATA_FILE}\
`
rm -f ${SIGNATURE_BINARY_FILE}
rm -f ${DATA_FILE}
echo -n ${RESULT}
Код: Выделить всё
DATA=${1}
DATA_FILE=${DATA}'.data'
printf $DATA > ${DATA_FILE}
PRIVATE_KEY_FILE=private-key
RESULT=`\
openssl dgst -hex \
-sign ${PRIVATE_KEY_FILE} \
${DATA_FILE} \
| awk '{print $2}'\
`
rm -rf ${DATA_FILE}
echo -n ${RESULT}
А для чего базовый модуль берется? Просто для того что бы в биллинге открылась возможность платежей?
И вот если через этот скрипт будут платежи осуществляться, можно ли будет их видеть в стандартной админке модуля. т.е. отчеты можно будет по платежам через нее делать.
Стоит ли брать модуль ОСМП отдельный или он такой же как и этот представленный функционал?
И вот если через этот скрипт будут платежи осуществляться, можно ли будет их видеть в стандартной админке модуля. т.е. отчеты можно будет по платежам через нее делать.
Стоит ли брать модуль ОСМП отдельный или он такой же как и этот представленный функционал?