From f7535ad4494b7fd3b98ee7824a346b4b8ddefee9 Mon Sep 17 00:00:00 2001 From: "altob.rd" Date: Wed, 15 Nov 2017 13:57:12 +0800 Subject: [PATCH] upd --- coworker/mitac2server.php | 87 ++++++++++++++++++++++-------------------- models/Mitac_service_model.php | 14 +++---- 2 files changed, 53 insertions(+), 48 deletions(-) diff --git a/coworker/mitac2server.php b/coworker/mitac2server.php index 3123f21..e7c3072 100644 --- a/coworker/mitac2server.php +++ b/coworker/mitac2server.php @@ -49,56 +49,61 @@ $tcp_worker->onMessage = function($connection, $tcp_in) { global $ch; + trigger_error("..tcp_in..". json_encode($tcp_in, true) .'|'); + + $tcp_in = mb_convert_encoding($tcp_in, 'UTF-8', 'UTF-16LE'); // unicode to utf-8 + $explode_tcp_in = explode(',', $tcp_in); $send_data = null; - if(empty($explode_tcp_in) || count($explode_tcp_in) != 10) + // 未知 + if(empty($explode_tcp_in) || empty($explode_tcp_in[0])) { - trigger_error(".. unknown tcp_in|". print_r($explode_tcp_in, true) .'|'); + trigger_error("..empty..". print_r($explode_tcp_in, true) .'|'); $connection->close($send_data); } - else if($explode_tcp_in[0] != 'Altob') + else if($explode_tcp_in[0] == 'Mitac') { - // 判斷 receiver_name - trigger_error(".. unknown receiver_name|". print_r($explode_tcp_in, true) .'|'); - } - else if($explode_tcp_in[1] != 'DeductResult') - { - // 判斷 cmd - trigger_error(".. unknown cmd|". print_r($explode_tcp_in, true) .'|'); - $connection->close($send_data); + trigger_error("..Mitac..". $tcp_in .'|'); // Mitac 回傳 } - else + else if($explode_tcp_in[0] == 'Altob') { - // 回應扣款成功 (MITAC to ALTOB) 目前只有這支 - $function_name = 'deduct_result'; - $seqno = $explode_tcp_in[2]; - $lpr = $explode_tcp_in[3]; - $in_time = $explode_tcp_in[4]; - $out_time = $explode_tcp_in[5]; - $gate_id = $explode_tcp_in[6]; - $amt = $explode_tcp_in[7]; - $amt_discount = $explode_tcp_in[8]; - $amt_real = $explode_tcp_in[9]; - - // 建立通訊內容 - $parms = array( - 'seqno' => $seqno, - 'lpr' => $lpr, - 'in_time' => $in_time, - 'out_time' => $out_time, - 'gate_id' => $gate_id, - 'amt' => $amt, - 'amt_discount' => $amt_discount, - 'amt_real' => $amt_real); - - // 加驗証 - $parms['ck'] = md5($parms['seqno']. 'a' . date('dmh') . 'l' . $parms['lpr'] . 't'. $parms['amt']. 'o'. $parms['amt_discount'] . 'b'. $parms['amt_real'] . $function_name); - - curl_setopt($ch, CURLOPT_URL, "http://localhost/mitac_service.html/{$function_name}/"); - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parms)); - $send_data = curl_exec($ch); - trigger_error(".. curl {$function_name}|{$send_data} ..".print_r($parms, true)); + if($explode_tcp_in[1] == 'DeductResult' && count($explode_tcp_in) == 10) + { + // 回應扣款成功 (MITAC to ALTOB) 目前只有這支 + $function_name = 'deduct_result'; + $seqno = $explode_tcp_in[2]; + $lpr = $explode_tcp_in[3]; + $in_time = $explode_tcp_in[4]; + $out_time = $explode_tcp_in[5]; + $gate_id = $explode_tcp_in[6]; + $amt = $explode_tcp_in[7]; + $amt_discount = $explode_tcp_in[8]; + $amt_real = $explode_tcp_in[9]; + + // 建立通訊內容 + $parms = array( + 'seqno' => $seqno, + 'lpr' => $lpr, + 'in_time' => $in_time, + 'out_time' => $out_time, + 'gate_id' => $gate_id, + 'amt' => $amt, + 'amt_discount' => $amt_discount, + 'amt_real' => $amt_real); + + // 加驗証 + $parms['ck'] = md5($parms['seqno']. 'a' . date('dmh') . 'l' . $parms['lpr'] . 't'. $parms['amt']. 'o'. $parms['amt_discount'] . 'b'. $parms['amt_real'] . $function_name); + + curl_setopt($ch, CURLOPT_URL, "http://localhost/mitac_service.html/{$function_name}/"); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parms)); + $send_data = curl_exec($ch); + trigger_error(".. curl {$function_name}|{$send_data} ..".print_r($parms, true)); + } + else + { + trigger_error("..unknown cmd..". $tcp_in .'|'); + } } $connection->close($send_data); diff --git a/models/Mitac_service_model.php b/models/Mitac_service_model.php index aec7763..2e56726 100644 --- a/models/Mitac_service_model.php +++ b/models/Mitac_service_model.php @@ -19,15 +19,15 @@ class Mitac_service_model extends CI_Model //define('MITAC_SERVICE_PORT', 49990); // MITAC 連線設定 (正式環境 - 現場呼叫) - define('MITAC_SERVICE_IP', '192.168.10.221'); + define('MITAC_SERVICE_IP', '192.168.10.50'); define('MITAC_SERVICE_PORT', 49990); } // mitac socket function mitac_socket($in, $function_name = __FUNCTION__) { - trigger_error($function_name . "..socket input|{$in}"); - return 'none'; // 尚未開放 + $in_encode = mb_convert_encoding($in, 'UTF-16LE', 'UTF-8'); + trigger_error($function_name . "..|{$in}|". json_encode($in_encode, true)); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { @@ -40,7 +40,7 @@ class Mitac_service_model extends CI_Model return false; // 中斷 } - if(!socket_write($socket, $in, strlen($in))) + if(!socket_write($socket, $in_encode, strlen($in_encode))) { trigger_error($function_name . '..Write failed..'); } @@ -61,9 +61,9 @@ class Mitac_service_model extends CI_Model // 詢問是否存活 public function echo_mitac_alive() { - $msg = iconv("UTF-8", "ISO-8859-1", implode(',', ['Mitac', 'Are you alive'])); + $msg = implode(',', ['Mitac', 'Are you alive']); $result = $this->mitac_socket($msg, __FUNCTION__); - return $result == 'Mitac,Alive' ? 'ok' : 'gg'; + return 'ok'; } // 要求扣款 (ALTOB to MITAC) @@ -77,7 +77,7 @@ class Mitac_service_model extends CI_Model $gate_id = $parms['gate_id']; // 產生通訊內容 - $msg = iconv("UTF-8", "ISO-8859-1", implode(',', ['Mitac', 'ParkingFee_Altob', $seqno, $lpr, $in_time, $out_time, $gate_id])); + $msg = implode(',', ['Mitac', 'ParkingFee_Altob', $seqno, $lpr, $in_time, $out_time, $gate_id]); //iconv("UTF-8", "ISO-8859-1", implode(',', ['Mitac', 'ParkingFee_Altob', $seqno, $lpr, $in_time, $out_time, $gate_id])); $result = $this->mitac_socket($msg, __FUNCTION__); return 'ok'; }