Advertisement
aleksv11

class_example_tz_may

May 18th, 2019
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 29.64 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4.  
  5. Необходимо написать php class, который будет принимать get-запрос и отправлять другой get запрос в соответствии с заданными условиями, а также делать необходимые проверки. Для приема и отправки GET-запросов использовать библиотеку https://github.com/guzzle/guzzle
  6. Необходимо реализовать запись и обновление информации о запросах (ставках) в БД, а также вывод информации из базы данных.
  7.  
  8. Необходимо реализовать простой роутинг:
  9.     1. https://api.sitename.ru/class.php?action=dashboard вывод информации о всех запросах (ставках)
  10.     2. https://api.sitename.ru/class.php?action=request на данный маршрут будут отправляться входные GET-запросы
  11.  
  12. Формат входного GET-запроса следующий: https://sitename.ru/class.php?action=request&request=signal&signal_from=названиеисточника&order_type=типордера&symbol=валютнаяпара(например frxEURUSD)
  13.  
  14. Исходящие запросы отправляются на API binaryteam.ru.
  15. Документация здесь: https://docs.google.com/document/d/1BNQIC42N31q_DZx1fSLMCDYeGOB1cFAL3OAd1V8oDZ4/edit
  16.  
  17.  
  18. Класс должен работать с массивом пользователей $users, который содержит следующую информацию:
  19.  
  20. $users = array(
  21.     'aleksv' => array(
  22.         'username' => 'aleksv', // Имя пользователя
  23.         'user_status' => 'active', // Статус пользователя (active || stopped)
  24.         'trading' => true, // Разрешена торговля или нет
  25.         'type_account' => 'demo', // Тип аккаунта для отправки ставки (demo || real)
  26.         'duration' => '3m', // Продолжительность (время экспирации ставки)
  27.         'bet_amount' => (int)1, //  Первоначальная сумма ставки в USD
  28.         'martingale' => true, // Разрешено использовать мартингейл или нет, распространяется только на следующий сигнал (true || false)
  29.         //'check_signal_currency' => true, // Проверять совпадение валюты сигнала (true || false)
  30.         //'check_signal_from' => true, // Проверять совпадение источника сигнала (true || false)
  31.         //'check_signal_type' => true, // Проверять совпадение типа сигнала CALL или PUT (true || false)
  32.         'trade_in_expiration' => false, // Разрешено отправлять новый сигнал на API binaryteam, если время экспирации(завершения) последнего контракта с таким-же источником и такой-же валютой(как уже есть контракт в БД) еще не вышло и результат контракта еще не известен (true || false)
  33.         'martingale_steps' => (int)5, // Количество колен мартингейл (числовое значение от 0 до 10)
  34.         'apikey' => '2101823462323f9e97107f9c9481162d', // Ключ binaryteam для отправки ставок
  35.     ),
  36.     'roman' => array(
  37.         'username' => 'roman',
  38.         'user_status' => 'stopped',
  39.         'trading' => true,
  40.         'type_account' => 'demo',
  41.         'duration' => '3m',
  42.         'bet_amount' => (int)1,
  43.         'martingale' => true,
  44.         //'check_signal_currency' => true,
  45.         //'check_signal_from' => true,
  46.         //'check_signal_type' => true,
  47.         'trade_in_expiration' => false,
  48.         'martingale_steps' => (int)2,
  49.         'apikey' => '',
  50.     )
  51. );
  52.  
  53.  
  54. После получения входящего GET-запроса необходимо создать объект класса Request для каждого пользователя с заданными параметрами:
  55.  
  56. $user = new Request ($params);
  57.  
  58. и вызвать метод: $user->start();
  59.  
  60. ### Примечание 1:
  61. Перед выполнением дальнейших действий необходимо проверить, активен пользователь или нет, разрешена торговля пользователю или нет, есть ключ API у пользователя или нет.
  62. Если пользователь active, торговля true и есть APIKEY выполняем программу дальше, если данное условие не выполняется, то для ЭТОГО пользователя дальше ничего не делаем.
  63.  
  64. ### Примечание 2:
  65. Как работает параметр trade_in_expiration?
  66. Все контракты, которые приходят в исходном GET-запросе имеют источник сигнала, например source_1 и валютную пару, например frxEURUSD. После необходимых проверок, сигнал либо пропускается, либо отправляется на сервер API binaryteam и информация о контракте сохраняется в БД, также обязательно сохраняется источник сигнала, например source_1 и валютная пара, например frxEURUSD. Время экспирации(завершения) для этого контракта было установлено, например 8 часов.
  67.  
  68. Параметр trade_in_expiration проверяет разрешено отправлять новый сигнал на API binaryteam, если время завершения последнего контракта с таким-же источником и такой-же валютой(как уже есть контракт в БД) еще не вышло и результат контракта еще не известен (время не завершено).
  69.  
  70. Через 5 часов приходит снова сигнал с таким-же источником(source_1) и такой-же валютной парой(frxEURUSD). Что нам необходимо сделать? Проверяем параметр у пользователя trade_in_expiration, если trade_in_expiration === true (разрешено отправлять сигнал, пока время контракта не вышло), тогда отправляем новый сигнал на API binaryteam и сохраняем информацию в БД, если trade_in_expiration === false (НЕ РАЗРЕШЕНО отправлять новый сигнал, пока время предыдущего контракта с ТАКИМ-ЖЕ ИСТОЧНИКОМ и ТАКОЙ-ЖЕ ВАЛЮТНОЙ ПАРОЙ еще не вышло), тогда мы просто игнорируем второй сигнал.
  71.  
  72. Может быть так, что время завершения для контракта с источником(source_1) и валютной парой(frxEURUSD) было установлено, например 8 часов. Через 5 часов приходит новый сигнал с источником(source_1 или source_2 или source_3 и т.д) и валютной парой(frxEURJPY). Источник может либо отличаться, либо повторяться, НО валютная пара совсем другая, тогда мы отправляем данный сигнал на API binaryteam и сохраняем информацию в БД.
  73.  
  74. ### Внимание! Параметр trade_in_expiration необходимо проверять после каждого сигнала, пришедшего во входящем GET-запросе.
  75.  
  76. ### Далее проверяем:
  77.  
  78.     0. Сценарий первый: в базе данных нет еще никаких ставок
  79.     -----------------------
  80.     Тогда, сохраняем полученную информацию из входящего GET-запроса в БД, сессию, затем отправляем исходящий GET-запрос на сервис https://api.binaryteam.ru/?request=signal&key=".$this->apikey."&type_account=".$this->type_account."&bet=".$this->signal_type."&symbol=".$this->symbol."&duration=".$this->duration."&amount=".$this->bet_amount , получаем $binaryteam_betid, ждем 5 секунд, вызываем метод $user->bet_info($binaryteam_betid, $apikey) отправляем повторный запрос на сервис binaryteam, получаем полную информацию по контракту $binaryteam_betid($contract_id) и сохраняем(обновляем) информацию в БД по данному контракту.
  81.  
  82.     1. Сценарий второй:
  83.     -----------------------
  84.     Поступил новый сигнал.
  85.     Проверяем параметр trade_in_expiration.
  86.     В базе данных есть ставки с такой-же валютной парой и таким-же полем signal_from как мы получили из входящего GET-запроса.
  87.     Для всех ставок время экспирации закончилось(нет активных контрактов) и последняя ставка "ВЫИГРАЛА - result =1"
  88.    
  89.     Тогда необходимо выполнить действия описанные в - 0. Сценарий первый
  90.  
  91.  
  92.     2. Сценарий третий:
  93.     -----------------------
  94.     Поступил новый сигнал.
  95.     Проверяем параметр trade_in_expiration.
  96.     В базе данных есть ставки с такой-же валютной парой и таким-же полем signal_from как мы получили из входящего GET-запроса.
  97.     Для всех ставок время экспирации закончилось(нет активных контрактов) и последняя ставка "ПРОИГРАЛА - result =2"
  98.    
  99.     Тогда проверяем параметры $this->martingale и $this->martingale_steps.
  100.     Если $this->martingale = false, тогда необходимо выполнить действия описанные в - 0. Сценарий первый
  101.  
  102.     Если ( $this->martingale = true && $this->martingale_steps >= 1 )? Тогда необходимо выполнить действия описанные в - 0. Сценарий первый (сохранить информацию в БД, НО! открыть контракт удвоенной ставкой: $this->bet_amount *2. Если контракт выигрывает (result=1), то следующие сигналы открываем обычной ставкой (мартингейл - обнуляем).
  103.  
  104. Если контракт снова проиграет, то на следующий сигнал мы открываем новый контракт, но уже утроенной ставкой ($this->bet_amount *2)*2. Если контракт выигрывает (result=1), то следующие сигналы открываем обычной ставкой (мартингейл - обнуляем). Если проигрывает, то новый контракт открываем со ставкой (ставка предыдущего контракта *2).Если контракт выигрывает (result=1), то завершаем использование мартингейл, если проигрывает, то каждый следующий шаг, удваиваем предыдущий $this->bet_amount до тех пор, пока не закончатся количество колен мартингейл).
  105. Если количество колен мартингейл закончилось, т. е мы прошли весь цикл колен, тогда необходимо выполнить действия описанные в - 0. Сценарий первый (открыть обычную ставку) и так до следующего проигрыша.
  106.  
  107.  
  108.    
  109.     3. Сценарий четвертый:
  110.     -----------------------
  111.     Поступил новый сигнал.
  112.     Проверяем параметр trade_in_expiration.
  113.     В базе данных ЕСТЬ! ставка(последняя ставка) с такой-же валютной парой и таким-же полем signal_from как мы получили из входящего GET-запроса. Для ставки время экспирации еще закончилось (результат не известен), тогда проверяем:
  114.  
  115.         1. $this->trade_in_expiration
  116.  
  117.         Если значение $this->trade_in_expiration === true(разрешено отправлять новыю ставку, пока время экспирации не вышло), то сохраняем полученную информацию из входящего GET-запроса в БД, сессию, затем отправляем исходящий GET-запрос на сервис https://api.binaryteam.ru/?request=signal&key=".$this->apikey."&type_account=".$this->type_account."&bet=".$signal."&symbol=".$this->symbol."&duration=".$this->duration."&amount=".$this->bet_amount , получаем $binaryteam_betid, ждем 5 секунд, вызываем метод $user->bet_info($binaryteam_betid, $apikey) отправляем повторный запрос на сервис binaryteam, получаем полную информацию по контракту $binaryteam_betid($contract_id) и сохраняем информацию в БД.
  118.  
  119.         2. Если ($this->trade_in_expiration === false) - запрещено отправлять новыю ставку, пока время экспирации не вышло, тогда ничего не делаем (просто игнорируем входящий GET-запрос)
  120.    
  121.  
  122.  
  123.     Важный момент: Всегда необходимо проверять параметр $this->trade_in_expiration на соответствие источника сигнала (signal_from) и валюты сигнала($this->symbol) из входящего GET-запроса с последней ставкой в базе данных, с таким же источником сигнала и такой-же валютной парой.
  124.     -----------------------
  125.     На странице: https://api.sitename.ru/class.php?action=dashboard необходимо выводить информацию о всех запросах (ставках), которые были отправлены на сервер binaryteam.
  126.  
  127. Информацию на странице https://api.sitename.ru/class.php?action=dashboard, обновлять через AJAX, никаких фреймой и рефрешей HTML страниц с запросами(вообщем без костылей).
  128.  
  129. Проверять результат ставки по контракту, каждые 5-10 секунд, не долбить каждую секунду сервер binaryteam запросами
  130. Обновлять результаты ставок в таблице /class.php?action=dashboard каждые 5-10 секунд (через ajax - без перезагрузки страницы)
  131.  
  132. Структура таблицы базы данных представлена ниже, если необходимо добавить какие-то поля, то добавляйте.
  133. Задержку на получение информации по контракту(результату после отправки контракта) делать только в отдельных методах, например $this->bet_info(); не надо вешать весь скрипт на N-времени. Использовать встроенные методы Guzzle
  134.  
  135.  
  136. */
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.     ini_set('display_errors', 1);
  150.     ini_set('display_startup_errors', 1);
  151.     ini_set('error_reporting', E_ALL);
  152.  
  153.     require_once("vendor/autoload.php");
  154.  
  155.     $db_host = 'localhost';
  156.     $db_name = 'binarysignals';
  157.     $db_user = 'binarysignals';
  158.     $db_password = '9P1a5V2j';
  159.  
  160.     // Подключаемся к серверу БД
  161.     $mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
  162.     $mysqli->set_charset("utf8");
  163.     if (!$mysqli) { die ('Connection error: ' . mysql_error()); }
  164.  
  165.     $users = array(
  166.         'aleksv' => array(
  167.             'username' => 'aleksv',
  168.             'user_status' => 'active',
  169.             'trading' => true,
  170.             'type_account' => 'demo',
  171.             'duration' => '3m',
  172.             'bet_amount' => (int)1,
  173.             'martingale' => true,
  174.             'check_signal_currency' => true,
  175.             'check_signal_from' => true,
  176.             'check_signal_type' => true,
  177.             'trade_in_expiration' => false,
  178.             'martingale_steps' => (int)2,
  179.             'apikey' => '2101823462323f9e97107f9c9481162d',
  180.         ),
  181.         'roman' => array(
  182.             'username' => 'roman',
  183.             'user_status' => 'stopped',
  184.             'trading' => true,
  185.             'type_account' => 'demo',
  186.             'duration' => '3m',
  187.             'bet_amount' => (int)1,
  188.             'martingale' => true,
  189.             'check_signal_currency' => true,
  190.             'check_signal_from' => true,
  191.             'check_signal_type' => true,
  192.             'trade_in_expiration' => false,
  193.             'martingale_steps' => (int)2,
  194.             'apikey' => '',
  195.         )
  196.     );
  197.  
  198.  
  199. class Request {
  200.  
  201.     public $username; // имя пользователя
  202.     public $user_status; // статус пользователя (active или stopped)
  203.     public $trading; // разрешена торговля пользователю или нет
  204.     public $type_account; // тип аккаунта для отправки ставки (demo или real)
  205.     public $duration; // продолжительность (время экспирации ставки)
  206.     public $bet_amount; // первоначальная сумма ставки в USD
  207.     public $martingale; // разрешено использовать мартингейл или нет на следующий сигнал
  208.     public $check_signal_currency;  // Проверять совпадение валюты сигнала (true || false)
  209.     public $check_signal_from; // Проверять совпадение источника сигнала (true || false)
  210.     public $check_signal_type; // Проверять совпадение типа сигнала CALL или PUTT (true || false)
  211.     public $martingale_steps; // количество колен мартингейл
  212.     public $trade_in_expiration; // разрешено отправлять новый сигнал по одной и той-же валютной паре, если время экспирации предыдущего контракта не вышло и результат не известен
  213.     public $apikey; // ключ binaryteam для отправки ставок
  214.     public $response;
  215.     public $binaryteam_betid; // идентификатор ставки в Json-ответе на запрос создания ставки (signal)
  216.     public $contract_id; // идентификатор ставки в сервисе binaryteam
  217.     public $symbol; // Валютная пара, например frxEURUSD или frxAUDCAD
  218.     public $order_type; // тип ордера ORDER_TYPE_SELL, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY, ORDER_TYPE_BUY_LIMIT
  219.     public $signal_type; // сигнал для отправки может быть только двух типов: PUT или CALL
  220.  
  221.  
  222.     public function index() {
  223.  
  224.         echo "Это index";
  225.         /*
  226.  
  227.         Получаем все ставки отправленные по API из БД и выводим в таблице на странице.
  228.         После завершения времени экспирации, получаем результат ставки и обновляем информацию в БД. При выводе ставок в таблице, у тех ставок, для которых время экспирации не вышло должен работать таймер и отсчитывать время до конца экспирации (запросом через ajax к методу get_expiration_time каждую секунду - метод описать). Пример таблицы: http://skrinshoter.ru/s/090519/aNY8KwAC
  229.  
  230.  
  231.         */
  232.     }
  233.  
  234.    
  235. public function start() {
  236.  
  237.         echo "start";
  238.         /*
  239.         Проверяем, активен пользователь или нет, разрешена торговля или нет, есть ключ API или нет. Если пользователь active, торговля true и есть APIKEY выполняем программу дальше
  240.  
  241.         */
  242.         if ($this->user_status ==='active' && $this->trading === true && !empty($this->apikey)) {
  243.             $this->sendbet_api(); // отправляем сигнал на сервер API
  244.             $this->savebet_db(); // Сохраняем информацию о контракте в БД
  245.             $this->bet_info(); // Получаем информацию(ответ от сервера API binaryteam) через 5-10 секунд и обновляем информацию о контракте в БД
  246.  
  247.         }
  248.  
  249.     }
  250.  
  251.     public function __construct($params = null) {
  252.  
  253.         if (!empty($params)) {
  254.             foreach($params as $key => $value)
  255.             {
  256.                 $this->$key = $value;
  257.             }
  258.         }
  259.  
  260.     }
  261.  
  262.     public function sendbet_api() {
  263.  
  264.        
  265.  
  266.        
  267.  
  268.             // echo "<pre>";
  269.             // print_r($user);
  270.             // echo "</pre>";
  271.  
  272.             isset($_GET['symbol']) ? $this->symbol = $_GET['symbol'] : $this->symbol = '';
  273.             isset($_GET['order_type'])? $this->order_type = $_GET['order_type'] : $this->order_type = '';
  274.  
  275.             if ($this->order_type === 'ORDER_TYPE_SELL') {
  276.                 $this->signal_type = 'PUT';
  277.             } else if ($this->order_type === 'ORDER_TYPE_SELL_LIMIT') {
  278.                 $this->signal_type = 'PUT';
  279.             } else if ($this->order_type === 'ORDER_TYPE_BUY') {
  280.                 $this->signal_type = 'CALL';
  281.             } else if ($this->order_type === 'ORDER_TYPE_BUY_LIMIT') {
  282.                 $this->signal_type = 'CALL';
  283.             } else {
  284.                 $this->signal_type = '';
  285.             }
  286.  
  287.         // https://api.sitename.ru/class.php?action=request&request=signal&order_type=ORDER_TYPE_SELL&symbol=frxAUDCAD
  288.  
  289.  
  290.  
  291.  
  292.         /*
  293.        
  294.         Что необходимо сделать перед отправкой сигнала:
  295.  
  296.         1. Проверить 'trade_in_expiration' => false, // разрешено отправлять новый сигнал по одной и той-же валютной паре, если время экспирации предыдущего контракта не вышло и результат не известен
  297.  
  298.         */
  299.  
  300.  
  301.  
  302.  
  303.  
  304.         $client = new \GuzzleHttp\Client();
  305.         $response = $client->request('GET', "https://api.binaryteam.ru/?request=signal&key=".$this->apikey."&type_account=".$this->type_account."&bet=".$this->signal_type."&symbol=".$this->symbol."&duration=".$this->duration."&amount=".$this->bet_amount);
  306.  
  307.         //echo $response->getStatusCode(); # 200
  308.         //echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
  309.         $response_body = json_decode($response->getBody()->getContents(), true);
  310.  
  311.         echo "<pre>";
  312.         print_r($response_body);
  313.         echo "</pre>";
  314.  
  315.  
  316.  
  317.  
  318.     }
  319.  
  320.    
  321.  
  322.  
  323.  
  324.     public function bet_info($binaryteam_betid, $apikey) {
  325.        
  326.      
  327.         $client = new \GuzzleHttp\Client();
  328.         $response = $client->request('GET', "https://api.binaryteam.ru/?request=report&key=".$apikey."&id=".$binaryteam_betid);
  329.         echo $response->getStatusCode(); # 200
  330.         echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
  331.         echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}'
  332.         $response_body = json_decode($response->getBody()->getContents());
  333.  
  334.  
  335.         echo "<pre>";
  336.         print_r($response_body);
  337.         echo "</pre>";
  338.  
  339.  
  340.      
  341.  
  342.  
  343.         $this->__gwt = $gwt[1];
  344.         $this->__tkn = $tkn[1];
  345.         $this->__group_id = $group_id[1];
  346.  
  347.         if(!$form_id[1] or empty($form_id[1]) or !$id[1] or empty($id[1]))
  348.         {
  349.             return false;
  350.         }
  351.  
  352.         return array('group_id' => $group_id[1], 'form_id' => $form_id[1], 'tkn' => $tkn[1], 'gwt' => $gwt[1], 'id' => $id[1]);
  353.     }
  354.  
  355.     private function login() {
  356.        
  357.     }
  358.  
  359.     static function auth($username, $password) {
  360.      
  361.     }
  362.  
  363.  
  364.  
  365.  
  366. }
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378. if ($_GET['action']) {
  379.     $info = new Request ();
  380. }
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390. switch($_GET['action']) {
  391.     case "install" :
  392.        
  393.  
  394.             $sql = "CREATE TABLE IF NOT EXISTS `signals_list` (
  395.               `id` int not null AUTO_INCREMENT,
  396.               `contract_id` int(30) not null,
  397.               `symbol` varchar(255) not null,
  398.               `bet` varchar(255) not null,
  399.               `is_signal` varchar(255) not null,
  400.               `time_start` varchar(255) not null,
  401.               `time_end` varchar(255) not null,
  402.               `quote_start` varchar(255) not null,
  403.               `quote_end` varchar(255) not null,
  404.               `amount` varchar(255) not null,
  405.               `duration` varchar(255) not null,
  406.               `payout` varchar(255) not null,
  407.               `payout_perc` varchar(255) not null,
  408.               `payment` varchar(255) not null,
  409.               `result` varchar(255) not null,
  410.               `result_code` varchar(255) not null,
  411.               `start` varchar(255) not null,
  412.               `timeout` varchar(255) not null,
  413.               `end` varchar(255) not null,
  414.               `user_id` int(30) not null,
  415.               `user_name` varchar(255) not null,
  416.               `signal_provider` varchar(255) not null,
  417.               `signal_id` varchar(255) not null,
  418.               `signal_name` varchar(255) not null,
  419.               `signal_from` varchar(255) not null,
  420.               `send_telegram` text not null,
  421.               `send_sms` text not null,
  422.               `bet_comment` text not null,
  423.               `timezone` varchar(255) not null,
  424.               PRIMARY KEY (id)
  425.               )
  426.             ";
  427.  
  428.             $result = $mysqli->query($sql);
  429.             //print_r($result) ;
  430.             if ($result) {
  431.                // echo "Создание таблицы завершено";
  432.                 //header('HTTP/1.1 200 OK');
  433.                 //header('Location: http://'.$_SERVER['HTTP_HOST'].'class.php?action=install');
  434.             }  else {
  435.                 echo "Таблицу создать не удалось";
  436.             }
  437.  
  438.             // if ($mysqli->query("SHOW TABLES LIKE signals_list")) {
  439.             //     echo "Таблица существует в БД";
  440.             // }
  441.  
  442.         break;
  443.  
  444.     case "request" :
  445.        
  446.         isset($_GET['request']) ? $request = $_GET['request'] : $request = '';
  447.         if ($request === 'signal') {
  448.  
  449.             foreach ( $users as $user ) {
  450.  
  451.                 $user = new Request ([
  452.                     'username' => $user['username'],
  453.                     'user_status' => $user['user_status'],
  454.                     'trading' => $user['trading'],
  455.                     'type_account' => $user['type_account'],
  456.                     'duration' => $user['duration'],
  457.                     'bet_amount' => $user['bet_amount'],
  458.                     'martingale' => $user['martingale'],
  459.                     'trade_in_expiration' => $user['trade_in_expiration'],
  460.                     'martingale_steps' => $user['martingale_steps'],
  461.                     'apikey' => $user['apikey'],
  462.                 ]);
  463.  
  464.                 // echo "<pre>";
  465.                 // print_r($user);
  466.                 // echo "</pre>";
  467.  
  468.                 $user->sendbet_api();
  469.             }
  470.  
  471.  
  472.  
  473.         }
  474.                    
  475.         break;
  476.  
  477.     case "dashboard" :
  478.  
  479.         $info->index();
  480.         break;
  481.  
  482.     default :
  483.  
  484.         $info->index();
  485.         break;
  486. }
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493. /*
  494.  
  495. {"request":"report","params":{"key":"2101823462323f9e97107f9c9481162d","id":"15095069"},"answer":{"profile":"pro","contract_id":"46557536688","symbol":"frxEURUSD","bet":"PUT","is_signal":"0","time_start":"1557235424","time_end":"1557264224","quote_start":"1.11803","quote_end":"0","amount":"30","payout":"58.23","payout_perc":"94","payment":"58.23","result":"0","result_code":"702","real":{"amount":"0.50","currency":"USD","percent":"0","depo_start":"0.5","depo_min":"0.5","depo_max":"0.5"},"demo":{"amount":"15642.44","currency":"USD","percent":"0","depo_start":"15730.7","depo_min":"15642.4","depo_max":"15732.4"}},"time":{"start":"2019-05-07 18:10:15","timeout":0.02103,"end":"2019-05-07 15:10:15"}}
  496.  
  497.  
  498.  
  499.  
  500.  
  501. stdClass Object
  502. (
  503.     [request] => report
  504.     [params] => stdClass Object
  505.         (
  506.             [key] => 2101823462323f9e97107f9c9481162d
  507.             [id] => 15095069
  508.         )
  509.  
  510.     [answer] => stdClass Object
  511.         (
  512.             [profile] => pro
  513.             [contract_id] => 46557536688
  514.             [symbol] => frxEURUSD
  515.             [bet] => PUT
  516.             [is_signal] => 0
  517.             [time_start] => 1557235424
  518.             [time_end] => 1557264224
  519.             [quote_start] => 1.11803
  520.             [quote_end] => 0
  521.             [amount] => 30
  522.             [payout] => 58.23
  523.             [payout_perc] => 94
  524.             [payment] => 58.23
  525.             [result] => 0
  526.             [result_code] => 702
  527.             [real] => stdClass Object
  528.                 (
  529.                     [amount] => 0.50
  530.                     [currency] => USD
  531.                     [percent] => 0
  532.                     [depo_start] => 0.5
  533.                     [depo_min] => 0.5
  534.                     [depo_max] => 0.5
  535.                 )
  536.  
  537.             [demo] => stdClass Object
  538.                 (
  539.                     [amount] => 15642.44
  540.                     [currency] => USD
  541.                     [percent] => 0
  542.                     [depo_start] => 15730.7
  543.                     [depo_min] => 15642.4
  544.                     [depo_max] => 15732.4
  545.                 )
  546.  
  547.         )
  548.  
  549.     [time] => stdClass Object
  550.         (
  551.             [start] => 2019-05-07 17:55:27
  552.             [timeout] => 0.0432
  553.             [end] => 2019-05-07 14:55:27
  554.         )
  555.  
  556. )
  557.  
  558.  
  559.  
  560. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement