Пример нескольких функций
Для HTTP запросов будем использовать CURL
например проверка состояния аппарата, передаем $URL из API ikkm
Для HTTP запросов будем использовать CURL
например проверка состояния аппарата, передаем $URL из API ikkm
/apicheck/
Для того чтобы ответ был форме JSON используем ключ v2
/v2/apicheck/
получаем
{ "body" : "0", "result" : "200", "resultText" : "5" }
рассмотрим передаваемые параметры. параметры бывают динамические(apikey) и статичные (ip addr, ширина чека и т.п.)
public function send_to_ikkm($url,$params_from) { $ip_addr = "192.168.10.132"; //статичный параметр, берем из вашего конфигурационного файла или базы данных $params_stat = array( 'key' => '34932136', // динамический параметр, первоначально сохраняем там же где IP адрес, //но при каждом новом фискальном чеке данный параметр изменяется, надо сохранять ); $params = array_merge($params_stat,$params_from); // объединяем параметры в зависимости какая API команда требуется $myCurl = curl_init(); curl_setopt_array($myCurl, array( CURLOPT_URL => $ip_addr. $url, CURLOPT_PORT => 8080, CURLOPT_PROTOCOLS => CURLPROTO_HTTP, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($params) )); $response = curl_exec($myCurl); curl_close($myCurl); return $response; }
//$url, $data public function apicheck() { $params = array( 'beep' => 'true', //Beep для привлечение внимания покупателя ); $response = $this->send_to_ikkm('/v2/apicheck/',$params); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput($response); }
public function doFiscal($docType,$total,$cash,$bank,$tara,$credit,$OfdItemDataJSON) { $docTypeThis = "sale"; if ($docType == 2) $docTypeThis = "saleReturn"; if ($docType == 3) $docTypeThis = "buy"; if ($docType == 4) $docTypeThis = "buyReturn"; $params = array( $docTypeThis => $total, ); if ($cash > 0){ $params += ["cash" => $cash]; // сколько дали наличности } if (bank > 0){ $params += ["bank" => $bank]; // сколько прошло по банковской карте } if (tara > 0) { $params += ["tara" => $tara]; // иногда используют как подарочный сертификат } if (credit > 0) { $params += ["credit" => $credit]; // для регистрации отпуска в кредит ( например: отпуск товара с доставкой, оплата потом) } // вид $OfdItemDataJSON // [{ // "name": "Чай", // "price": "200", // "qty": "2", // "sum": "400"}, { // "name": "АИ-95", // "price": "60", // "qty": "2", // "sum": "120"}, { // "name": " скидка 10% ", // "discount": "1240" #если скидка, поля price|qty|sum не указываются}] $params_from = array_merge($params, array( 'itemdata' => $OfdItemDataJSON )); $response = $this->send_to_ikkm('/api/',$params_from); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput($response); }
примеры вызова функции в интерфейсе
<script> $(document).on('click', '#button-ikkm', function() { $.ajax({ url: 'index.php?route=sale/order/apicheck&user_token={{ user_token }}&order_id={{ order_id }}', dataType: 'json', beforeSend: function() { $('#button-ikkm').button('loading'); }, complete: function() { $('#button-ikkm').button('reset'); }, success: function(json) { if (json['body']) { json['body']; } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); }); </script>