Новичок
Покинул форум
Сообщений всего: 45
Дата рег-ции: Июль 2015
Помог: 0 раз(а)
|
Поглядел доки робокассы, вроде что-то получилось, всё ли верно сделано? +Не понимаю различия succes & result ответа робокассы.
Спойлер (Отобразить)
<?php
if(!defined('MOZG')) die('Hacking attempt!');
isset($_GET['act']) ? $_GET['act'] = $_GET['act'] : $_GET['act'] = NULL;
$merchant_login = "логин";
$merchant_password_1 = "пароль1";
$merchant_password_2 = "пароль2";
switch($_GET['act']){
/* Payments success || Успешное проведение платежа */
case "success":
$sum = intval($_REQUEST["OutSum"]);
$invoice_id = intval($_REQUEST["InvId"]);
$signature = textFilter($_REQUEST["SignatureValue"], false, true);
$signature = strtoupper($signature);
$my_signature = strtoupper(md5("$sum:$invoice_id:$merchant_password_1"));
if ($my_signature == $signature)
{
$row = $db->super_query("SELECT `".PREFIX."_money`.`id`,
`".PREFIX."_money`.`signature`,
`".PREFIX."_money`.`user_id`
FROM `".PREFIX."_money`
WHERE `".PREFIX."_money`.`signature` = '".$signature."'
LIMIT 1");
if($row){
$sql = $db->query("UPDATE `".PREFIX."_users` SET `".PREFIX."_users`.`user_money` = `".PREFIX."_users`.`user_money`+".$sum." WHERE `user_id` = '".$row['user_id']."'");
if($sql){
$db->query("UPDATE `".PREFIX."_money` SET `".PREFIX."_money`.`result` = 'success' WHERE `".PREFIX."_money`.`invoice_id` = '".$invoice_id."'");
header("Location: /settings/money");
} else {
msgbox('Ошибка сервера','message','f-message__red','message');
}
} else {
msgbox('Ошибка, платеж не найден','message','f-message__red','message');
}
} else {
msgbox('Ошибка, неверный хэш','message','f-message__red','message');
}
break;
/* Payments fail || Отказ от проведения платежа */
case "fail":
$invoice_id = intval($_REQUEST["InvId"]);
$sql = $db->query("UPDATE `".PREFIX."_money` SET `".PREFIX."_money`.`result` = 'fail' WHERE `".PREFIX."_money`.`id` = '".$invoice_id."'");
if($sql){
msgbox('Вы отказались от оплаты','message','f-message__red','message');
} else {
msgbox('Ошибка сервера','message','f-message__red','message');
}
break;
/* Payments result || Оповещение о платеже */
case "result":
$sum = intval($_REQUEST["OutSum"]);
$invoice_id = intval($_REQUEST["InvId"]);
$signature = textFilter($_REQUEST["SignatureValue"], false, true);
$signature = strtoupper($signature);
$my_signature = strtoupper(md5("$sum:$invoice_id:$merchant_password_2"));
if ($my_signature == $signature)
{
$row = $db->super_query("SELECT `".PREFIX."_money`.`id`,
`".PREFIX."_money`.`signature`,
`".PREFIX."_money`.`user_id`
FROM `".PREFIX."_money`
WHERE `".PREFIX."_money`.`signature` = '".$signature."'
LIMIT 1");
if($row){
$sql = $db->query("UPDATE `".PREFIX."_money` SET `".PREFIX."_money`.`result` = 'result' WHERE `".PREFIX."_money`.`invoice_id` = '".$invoice_id."'");
if($sql){
header("Location: /settings/money");
} else {
msgbox('Ошибка сервера','message','f-message__red','message');
}
} else {
msgbox('Ошибка, платеж не найден','message','f-message__red','message');
}
} else {
msgbox('Ошибка, неверный хэш','message','f-message__red','message');
}
break;
/* Инциализация платежа */
case "initialization":
$invoice_id = InvoiceID(6);
$sum = intval($_GET['sum']);
$description = "Начисление форматов";
$user_email = $user_email;
$signature = md5("$merchant_login:$sum:$pay_id:$merchant_password");
$sql = $db->query("INSERT INTO `".PREFIX."_money` SET
`user_id` = '".$user_id."',
`invoice_id` = '".$invoice_id."',
`signature` = '".$signature."',
`date` = '".$server_time."',
`sum` = '".$sum."',
`result` = '0'");
if($sql){
$url = "https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin=$merchant_login&".
"OutSum=$sum&Email=$user_email&InvId=$pay_id&Desc=$description&SignatureValue=$signature";
header("Location: ".$url);
} else {
msgbox('Ошибка сервера','message','f-message__red','message');
}
break;
default: msgbox('Ошибка доступа','message','f-message__red','message');
}
?>
Табличка:
CODE ( SQL):
скопировать код в буфер обмена
CREATE TABLE `fh_money` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL DEFAULT '0', `invoice_id` int(6) NOT NULL DEFAULT '0', `signature` varchar(255) NOT NULL DEFAULT '0', `date` varchar(255) NOT NULL DEFAULT '0', `sum` float NOT NULL DEFAULT '0', `result` enum('0','success','fail','result') NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
(Отредактировано автором: 16 Августа, 2015 - 14:38:04)
|