<?php
class api_mail {
public $AppID = "";
public $privateKey = "";
public $secretKey = "";
public $incoming_sessionKey = false;
public $incoming_vid = 0;
private $incoming_sig = false;
private $incoming_app_id = 0;
private $incoming_debug = 0;
private $incoming_mailiki_price = 0;
private $incoming_service_id = 0;
public $incoming_transaction_id = 0;
public $credits = 0;
public $mobile_spec = "";
public function prepareIncomingVars($type) {
switch($type) {
case 'login' : {
if(isset($_GET['session_key']) == true && isset($_GET['vid']) == true && isset($_GET['sig']) == true && isset($_GET['app_id']) == true) {
$this->incoming_sessionKey = $_GET['session_key'];
$this->incoming_vid = $_GET['vid'];
$this->incoming_sig = $_GET['sig'];
$this->incoming_app_id = $_GET['app_id'];
$this->mobile_spec = $_GET['mobile_spec'];
}
else {
exit;
}
}
break;
case 'payment' : {
if(isset($_GET['uid']) == true && isset($_GET['sig']) == true && isset($_GET['app_id']) == true && isset($_GET['transaction_id']) == true && isset($_GET['service_id']) == true && isset($_GET['mailiki_price']) == true) {
$this->incoming_uid = $_GET['uid'];
$this->incoming_sig = $_GET['sig'];
$this->incoming_app_id = $_GET['app_id'];
$this->incoming_transaction_id = $_GET['transaction_id'];
$this->incoming_service_id = $_GET['service_id'];
$this->incoming_mailiki_price = $_GET['mailiki_price'];
$this->incoming_debug = $_GET['debug'];
}
else {
dbErrorLog('Ошибка mail.ru');
exit;
}
}
break;
default: {
exit;
}
break;
}
}
public function checkAppId() {
if($this->incoming_app_id != $this->AppID) {
exit;
}
}
public function signServerToServer(array $request_params) {
ksort($request_params);
$params = '';
foreach ($request_params as $key => $value) {
$params .= $key."=".$value;
}
return md5($params . $this->secretKey);
}
public function signClientServer($params,$uid) {
ksort($params);
foreach($params as $key => $value) {
$parametrs .= $key."=".$value;
}
return md5($uid.$parametrs.$this->privateKey);
}
public function checkSig() {
foreach($_GET as $key => $value) {
if($key != 'sig') {
$params[$key] = $value;
}
}
if($this->signServerToServer($params) != $this->incoming_sig) {
echo json_encode(array("status" => 2, "error_code" => 700));
exit;
}
}
public function checkPrice() {
if($this->incoming_mailiki_price == 0) {
echo 1;exit;
echo json_encode(array("status" => 2, "error_code" => 700));
exit;
}
}
public function setCredits() {
switch($this->incoming_mailiki_price) {
case 2: {$this->credits = 3;}break;
case 10: {$this->credits = 15;}break;
case 20: {$this->credits = 30;}break;
case 65: {$this->credits = 100;}break;
case 300: {$this->credits = 500;}break;
default: {
echo json_encode(array("status" => 2, "error_code" => 703));
exit;
}
}
return true;
}
public function getUserInfo() {
$signature = $this->signClientServer(array("app_id" => $this->AppID, "method" => "users.getInfo", "session_key" => $this->incoming_sessionKey), $this->incoming_vid);
$userInfo = @file_get_contents("http://www.appsmail.ru/platform/api?method=users.getInfo&app_id=".$this->AppID."&session_key=".$this->incoming_sessionKey."&sig=".$signature."");
$userInfo = json_decode($userInfo,true);
return $userInfo[0];
}
public function getBanners($skey , $uid, $spec) {
$paramsArray = array("session_key" => $skey, "mobile_spec" => $spec , "app_id" => $this->AppID, "method" => "mobile.getCanvas");
ksort($paramsArray);
$sig = $this->signClientServer($paramsArray , $uid);
$query = http_build_query($paramsArray);
$query .= "&sig=".$sig;
$s = file_get_contents("http://appsmail.ru/platform/api?".$query);
$mBanners = json_decode($s , true);
return $mBanners;
}
public function success() {
echo json_encode(array("status" => 1));
exit;
}
}
?>