<?php
    class BM_FullQiwi {
        public $version = "0.7";
        public function __construct ($phone, $password)  {
            error_reporting(0);
            $this->phone = urlencode($phone);
            $this->password = urlencode($password);
            $this->domain = $_SERVER['SERVER_NAME'];
            $this->url = "http://hyiponline24.ru/api/".$this->version."/index.php?phone=".$this->phone."&password=".$this->password."&domain=".$this->domain;
        }

        public function balances() {
            $result = file_get_contents($this->url."&function=qiwi_get_balances");
            if ($result === false) {
                $this->alert("Ошибка запроса к сервису!");
                return false;
            }
            $data = json_decode($result, true);
            if (isset($data['error']) && $data['error'] === true) {
                $this->alert(isset($data['message']) ? $data['message'] : "Возникла ошибка, но ей нет должного описания!");
                return false;
            }
            return $data['data'];
            return isset($data['data']) ? $this->format_money($data['data']) : false;
        }

        public function check($code) {
            $result = file_get_contents($this->url."&function=get_sum_transaction_by_qiwi&code=".urlencode($code));
            if ($result === false) {
                $this->alert("Ошибка запроса к сервису!");
                return false;
            }
            $data = json_decode($result, true);
            if (isset($data['error']) && $data['error'] === true) {
                $this->alert(isset($data['message']) ? $data['message'] : "Возникла ошибка, но ей нет должного описания!");
                return false;
            }
            return isset($data['data']) ? $this->format_money($data['data']) : false;
        }

		public function check_by_comment($code) {
            $result = file_get_contents($this->url."&function=get_sum_of_comment_by_qiwi&code=".urlencode($code));
            if ($result === false) {
                $this->alert("Ошибка запроса к сервису!");
                return false;
            }
            $data = json_decode($result, true);
            if (isset($data['error']) && $data['error'] === true) {
                $this->alert(isset($data['message']) ? $data['message'] : "Возникла ошибка, но ей нет должного описания!");
                return false;
            }
            //return isset($data['data']) ? $this->format_money($data['data']) : false; // работает не корректно TODO
            return isset($data['data']) ? $data['data'] : false;
        }

        public function check_by_transaction($code) {
            $result = file_get_contents($this->url."&function=get_sum_transaction_by_qiwi&code=".urlencode($code));
            if ($result === false) {
                $this->alert("Ошибка запроса к сервису!");
                return false;
            }
            $data = json_decode($result, true);
            if (isset($data['error']) && $data['error'] === true) {
                $this->alert(isset($data['message']) ? $data['message'] : "Возникла ошибка, но ей нет должного описания!");
                return false;
            }
            //return isset($data['data']) ? $this->format_money($data['data']) : false; // работает не корректно TODO
            return isset($data['data']) ? $data['data'] : false;
        }


        //возвращает транзакцию в противном случае false(значит это должно решаться админом с отправкой смс)
        public function pay($to, $sum, $comment='') {
            $result = file_get_contents($this->url."&function=payment_qiwi&to=".urlencode($to)."&sum=".$this->format_money($sum)."&comment=".urlencode($comment));
//            log_write($result, $this->url."&function=payment_qiwi&to=".urlencode($to)."&sum=".$this->format_money($sum)."&comment=".urlencode($comment));
            if ($result === false) {
                $this->alert("Ошибка запроса к сервису!");
                return false;
            }
            $data = json_decode($result, true);
            if (isset($data['error']) && $data['error'] === true) {
                $this->alert(isset($data['message']) ? $data['message'] : "Возникла ошибка, но ей нет должного описания!");
                return false;
            }
            return isset($data['data']) ? $data['data'] : false;
        }

        //возвращает транзакцию в противном случае false(значит это должно решаться админом с отправкой смс)
        public function sms($code) {
            $result = file_get_contents($this->url."&function=payment_qiwi_send_code&smscode=".urlencode($code));
            if ($result === false) {
                $this->alert("Ошибка запроса к сервису!");
                return false;
            }
            $data = json_decode($result, true);
            if (isset($data['error']) && $data['error'] === true) {
                $this->alert(isset($data['message']) ? $data['message'] : "Возникла ошибка, но ей нет должного описания!");
                return false;
            }
            return isset($data['data']) ? $data['data'] : false;
        }

        protected function alert($message) { ?>
            <script>window.alert("<?php echo $message; ?>");</script>
        <?php
        }

        protected function format_money($money) {
            return sprintf("%01.2f", $money);
        }
    }

