Advertisement
Guest User

Untitled

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