Автор Тема: Пополнение MEGA KASSA  (Прочитано 2150 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Andrey2015Автор темы

  • *
  • Оффлайн
  • Награды Более 50 сообщений Более 6 лет на форуме !!! Более 10 созданных тем
  • Дата регистрации: Апр. 2016
  • Сообщений: 75
  • Страна: ru
  • Поблагодарили: 1 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
Пополнение MEGA KASSA
« : 14 Января 2017, 12:39:54 »
У кого есть файл обработчик для megakassa, поделитесь, можно не доработанный, если что доделаем вместе
 

gagosha

  • *
  • Оффлайн
  • Награды Более 5 лет на форуме !!!
  • Дата регистрации: Янв. 2017
  • Сообщений: 1
  • Страна: ge
  • Репутация +0/-0
  • Пол: Мужской
Пополнение MEGA KASSA
« Ответ #1 : 03 Мая 2017, 19:43:28 »
Спойлер
<?php
   // проверка IP-адреса
   $ip_checked = false;
   
   foreach(array(
      'HTTP_X_CLUSTER_CLIENT_IP',
      'HTTP_X_FORWARDED_FOR',
      'HTTP_X_FORWARDED',
      'HTTP_FORWARDED_FOR',
      'HTTP_FORWARDED',
      'HTTP_CLIENT_IP',
      'REMOTE_ADDR'
   ) as $param) {
      if(!empty($_SERVER[$param]) && $_SERVER[$param] === '5.196.121.217') {
         $ip_checked = true;
         break;
      }
   }
   if(!$ip_checked) {
      die('error');
   }
   
   // проверка на наличие обязательных полей
   // поля $payment_time и $debug могут дать true для empty() поэтому их нет в проверке
   foreach(array(
      'uid',
      'amount',
      'amount_shop',
      'amount_client',
      'currency',
      'order_id',
      'payment_method_id',
      'payment_method_title',
      'creation_time',
      'client_email',
      'status',
      'signature'
   ) as $field) {
      if(empty($_REQUEST[$field])) {
         die('error');
      }
   }
   
   // ваш секретный ключ
   $secret_key   = '0123456789abcdef';
   
   // нормализация данных
   $uid               = (int)$_REQUEST["uid"];
   $amount               = (double)$_REQUEST["amount"];
   $amount_shop         = (double)$_REQUEST["amount_shop"];
   $amount_client         = (double)$_REQUEST["amount_client"];
   $currency            = $_REQUEST["currency"];
   $order_id            = $_REQUEST["order_id"];
   $payment_method_id      = (int)$_REQUEST["payment_method_id"];
   $payment_method_title   = $_REQUEST["payment_method_title"];
   $creation_time         = $_REQUEST["creation_time"];
   $payment_time         = $_REQUEST["payment_time"];
   $client_email         = $_REQUEST["client_email"];
   $status               = $_REQUEST["status"];
   $debug               = (!empty($_REQUEST["debug"])) ? '1' : '0';
   $signature            = $_REQUEST["signature"];
   
   // проверка валюты
   if(!in_array($currency, array('RUB', 'USD', 'EUR'), true)) {
      die('error');
   }
   
   // проверка статуса платежа
   if(!in_array($status, array('success', 'fail'), true)) {
      die('error');
   }
   
   // проверка формата сигнатуры
   if(!preg_match('/^[0-9a-f]{32}$/', $signature)) {
      die('error');
   }
   
   // проверка значения сигнатуры
   $signature_calc = md5(join(':', array(
      $uid, $amount, $amount_shop, $amount_client, $currency, $order_id,
      $payment_method_id, $payment_method_title, $creation_time, $payment_time,
      $client_email, $status, $debug, $secret_key
   )));
   if($signature_calc !== $signature) {
      die('error');
   }
   
   $db->Query("SELECT * FROM db_payeer_insert WHERE id = '".intval($_POST['order_id'])."'");
   if($db->NumRows() == 0){ echo $_POST['order_id']."|error"; exit;}
   
   $nm_row = $db->FetchArray();
   if($nm_row["status"] > 0){ echo $_POST['order_id']."|success"; exit;}
   
   $db->Query("UPDATE db_payeer_insert SET status = '1' WHERE id = '".intval($_POST['order_id'])."'");
   $ik_payment_amount = $nm_row["sum"];
   $user_id = $nm_row["user_id"];
   
   # Настройки
   $db->Query("SELECT * FROM db_config WHERE id = '1' LIMIT 1");
   $sonfig_site = $db->FetchArray();
   
   $db->Query("SELECT user, referer_id FROM db_users_a WHERE id = '{$user_id}' LIMIT 1");
   $user_ardata = $db->FetchArray();
   $user_name = $user_ardata["user"];
   $refid = $user_ardata["referer_id"];
   
   
   // обработка платежа
   switch($status) {
      case 'success':
      
         // время соверешния платежа в Unix timestamp (если нужно)
         $payment_time_ts = strtotime($payment_time);
      
         // ваш код при успешной оплате
         # Зачисляем баланс
   $serebro = sprintf("%.4f", floatval($sonfig_site["ser_per_wmr"] * $ik_payment_amount) );

   $db->Query("SELECT insert_sum FROM db_users_b WHERE id = '{$user_id}' LIMIT 1");
   $ins_sum = $db->FetchRow();

   $serebro = intval($ins_sum <= 0.01) ? ($serebro + ($serebro * 0.1) ) : $serebro;
   $add_tree = ( $ik_payment_amount >= 499.99) ? 2 : 0;
   $lsb = time();
   $to_referer = ($serebro * 0.10);
   
   $db->Query("UPDATE db_users_b SET money_b = money_b + '$serebro', to_referer = to_referer + '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum + '$ik_payment_amount' {$bonus} WHERE id = '{$user_id}'");
   
   # Зачисляем средства рефереру и дерево
   $add_tree_referer = ($ins_sum <= 0.01) ? ", a_t = a_t + 1" : "";
   $db->Query("UPDATE db_users_b SET money_b = money_b + $to_referer, from_referals = from_referals + '$to_referer' {$add_tree_referer} WHERE id = '$refid'");
   
   # Статистика пополнений
   $da = time();
   $dd = $da + 60*60*24*15;
   $db->Query("INSERT INTO db_insert_money (user, user_id, money, serebro, date_add, date_del)
   VALUES ('$user_name','$user_id','$ik_payment_amount','$serebro','$da','$dd')");

   # Платежные баллы
   $pp = new pay_points($db);
   $pp ->UpdatePayPoints($ik_payment_amount,$user_id);
   
   # Конкурс
   $competition = new competition($db);
   $competition->UpdatePoints($user_id, $ik_payment_amount);

   # Обновление статистики сайта
   $db->Query("UPDATE db_stats SET all_insert = all_insert + '$ik_payment_amount' WHERE id = '1'");
         break;
      case 'fail':
         // ваш код при отмене или истечении платежа
         // ...
         break;
   }
   
   // успешный ответ для Мегакассы и завершение скрипта
   die('ok');
?>
[свернуть]
 

assus

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 10 сообщений
  • Дата регистрации: Фев. 2016
  • Сообщений: 34
  • Страна: ru
  • Репутация +0/-0
  • Пол: Мужской
Пополнение MEGA KASSA
« Ответ #2 : 03 Мая 2017, 21:49:28 »
a:0:{}
 
Теги: