Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.35 KB | None | 0 0
  1. <?php
  2. class GETRequest {
  3.  
  4.     private $requestUrl;
  5.  
  6.     public function __construct($url,$params) {
  7.         $this->requestUrl = $url."?".http_build_query($params);
  8.     }
  9.  
  10.     public function send() {
  11.         return file_get_contents($this->requestUrl);
  12.     }
  13. }
  14.  
  15. class User {
  16.  
  17.     public function register($telNum,$subId) {
  18.         if ($this->get($telNum) == null) {
  19.             $first_visit_at = date ("Y-m-d H:i:s");
  20.             $query = sprintf("INSERT INTO users (user_id,sub_id,first_visit_at) VALUES('%s',%d,'%s') ",
  21.                 mysql_real_escape_string($telNum),$subId,$first_visit_at);
  22.             mysql_query($query) or die(mysql_error());             
  23.         }
  24.     }
  25.  
  26.     public function saveCode($telNum,$code){
  27.        $query = sprintf("UPDATE users set access_code='%s' WHERE user_id='%s'",
  28.         mysql_real_escape_string($code),
  29.         mysql_real_escape_string($telNum)
  30.         );
  31.         mysql_query($query) or die(mysql_error());             
  32.     }
  33.    
  34.     public function get($telNum) {
  35.         $query=sprintf("SELECT * FROM users where user_id ='%s'",
  36.         mysql_real_escape_string($telNum));
  37.         $result=mysql_query($query) or die(mysql_error());
  38.         $num=mysql_numrows($result);
  39.         if ($num == 0 ) return null; else
  40.         return mysql_fetch_object($result);
  41.     }
  42.  
  43.     public function subscribe($telNum) {
  44.        if ($this->get($telNum)!=null) {
  45.        $subscribed_at = date ("Y-m-d H:i:s");
  46.        $query = sprintf("UPDATE users set subscribed=1, subscribed_at='%s' WHERE user_id='%s'",
  47.         $subscribed_at,
  48.         mysql_real_escape_string($telNum)
  49.         );
  50.         mysql_query($query) or die(mysql_error());                 
  51.         }
  52.     }  
  53.  
  54.     public function unSubscribe($telNum) {
  55.         $query = sprintf(
  56.         "INSERT INTO unsubscriptions (smsid,unsubscribe_date,user_id,sub_id,skey)
  57.         VALUES('%s','%s','%s','%s','%s')",
  58.         $_GET['smsid'],
  59.         $_GET['date'],
  60.         $_GET['user_id'],
  61.         $_GET['sub_id'],
  62.         $_GET['skey']);
  63.         mysql_query($query) or die(mysql_error());                 
  64.        
  65.         if ($this->get($telNum)!==null) {
  66.            $unsubscribed_at = date ("Y-m-d H:i:s");
  67.            $query = sprintf("UPDATE users set subscribed = 0, unsubscribed_at='%s' WHERE user_id='%s'",
  68.             $unsubscribed_at,
  69.             mysql_real_escape_string($telNum));
  70.             mysql_query($query) or die(mysql_error());                 
  71.            
  72.         }
  73.     }
  74.  
  75.     public function canAccess($telNum) {
  76.         $query=sprintf("SELECT * FROM users where (subscribed=1) and ((access_code='%s') or (user_id ='%s'))",
  77.         mysql_real_escape_string($telNum),
  78.         mysql_real_escape_string($telNum));
  79.         $result=mysql_query($query) or die(mysql_error());
  80.         $num=mysql_numrows($result);
  81.         return $num > 0;
  82.     }
  83. }
  84.  
  85. class MTSubsriptionEventHandler {
  86.    
  87.     private $user;
  88.  
  89.     public function __construct() {
  90.         $this->user = new User();  
  91.     }
  92.  
  93.     public function onRegisterUser($telNum,$subId) {
  94.         $user = $this->user->get($telNum);
  95.             if ($user == null) {
  96.             $this->user->register($telNum,$subId); 
  97.         }
  98.     }
  99.  
  100.     public function onCheckCode($telNum,$code,$successfull) {
  101.         if ($successfull) {
  102.             $user = $this->user->get($telNum);
  103.             if ($user == null || $user->access_code != $code) {
  104.                 $this->user->saveCode($telNum,$code);
  105.                 $this->user->subscribe($telNum);
  106.             }
  107.         }
  108.     }
  109.  
  110.     public function onReBill() {
  111.         $query = sprintf(
  112.         "INSERT INTO payments (smsid,payment_date,cost,currency,abonent_cost,abonent_currency,user_id,num,operator_id,country_id,sub_id,skey,pay_status,period) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,'%s')",
  113.         $_GET['smsid'],
  114.         $_GET['date'],
  115.         $_GET['cost'],
  116.         $_GET['currency'],
  117.         $_GET['abonent_cost'],
  118.         $_GET['abonent_currency'],
  119.         $_GET['user_id'],
  120.         $_GET['num'],
  121.         $_GET['operator_id'],
  122.         $_GET['country_id'],
  123.         $_GET['sub_id'],
  124.         $_GET['skey'],
  125.         $_GET['pay_status']=='ok'?1:0,
  126.         $_GET['period']);
  127.         mysql_query($query) or die(mysql_error());             
  128.     }
  129.  
  130.     public function onUnSubscribe() {
  131.         $telNum = isset($_GET['user_id'])?$_GET['user_id']:null;
  132.         if ($telNum != null) {
  133.             $this->user->unSubscribe($telNum);
  134.         }
  135.     }
  136.  
  137. }
  138.  
  139. class MTSubscription {
  140.  
  141.     private $login;
  142.  
  143.     private $password;
  144.  
  145.     private $subsriptionId;
  146.  
  147.     private $siteUrl;
  148.  
  149.     private $eventHandler;
  150.  
  151.     function __construct($params) {
  152.  
  153.         $this->login = $params['login'];
  154.         $this->password = $params['password'];
  155.         $this->subscriptionId = $params['subscriptionId'];
  156.         $this->siteUrl = $params['siteUrl'];
  157.         $this->eventHandler = new MTSubsriptionEventHandler();
  158.  
  159.     }
  160.  
  161.     private function processRegisterUserResponse($responseXml) {
  162.         try {
  163.             $response = new SimpleXMLElement($responseXml);
  164.             if (isset($response->message) && $response->message == "ok") {
  165.                 echo "OK";
  166.                 return true;
  167.             } else if (isset($response->errors[0]->error)){
  168.                 echo $response->errors[0]->error;
  169.                 return false;
  170.             } else {
  171.                 echo "unknown error";
  172.                 return false;
  173.             }              
  174.  
  175.         } catch (exception $e) {
  176.             echo "parse error";
  177.             return false;
  178.         }
  179.  
  180.     }
  181.  
  182.     private function processCheckCodeResponse($responseXml) {
  183.         try {
  184.             $response = new SimpleXMLElement($responseXml);
  185.             if (isset($response->message)
  186.                 && $response->message == "ok"
  187.                 && isset($response->sub_id)
  188.                 && isset($response->user_id)) {        
  189.                 return $response;
  190.  
  191.             } else if (isset($response->errors[0]->error)){
  192.                 echo $response->errors[0]->error;
  193.                 return $false;
  194.             } else {
  195.                 echo "unknown error";
  196.                 return false;
  197.             }              
  198.  
  199.         } catch (exception $e) {
  200.             echo "parse error";
  201.             return false;
  202.         }
  203.  
  204.     }
  205.  
  206.     public function registerUser($telNumber,$sub_id) {
  207.         $user = new User();
  208.         $user->register($telNumber,$sub_id);       
  209.         $request = new GETRequest($this->siteUrl."/reg_user",
  210.             array(
  211.                 'abonent'=>$telNumber,
  212.                 'sub_id'=>$this->subscriptionId,
  213.                 'login'=>$this->login,
  214.                 'password'=>$this->password
  215.             ));
  216.  
  217.         $responseXml = $request->send();
  218.         $sucessfull = $this->processRegisterUserResponse($responseXml);
  219.        
  220.     }
  221.  
  222.     public function checkCode($code) {
  223.         $request = new GETRequest($this->siteUrl."/check_code",
  224.             array(
  225.                 'code'=>$code,
  226.                 'login'=>$this->login,
  227.                 'password'=>$this->password
  228.             )
  229.         );
  230.  
  231.         $responseXml = $request->send();
  232.         $response = $this->processCheckCodeResponse($responseXml);
  233.         if ($response !== false) {
  234.             $eventHandler->onCheckCode($response->user_id,$code,true);
  235.             return true;
  236.         } else {
  237.             return false;
  238.         }
  239.            
  240.     }
  241.  
  242. }
  243.  
  244.  
  245. $username="root";
  246. $password="123456";
  247. $database="subscription_db";
  248.  
  249. mysql_connect('localhost',$username,$password);
  250. @mysql_select_db($database) or die( "Unable to select database");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement