doc: 添加api_pos.php文件的部分注释
Change-Id: I9b7aeb3756dcc0da1fc69d9b30b47e43006d3759
This commit is contained in:
parent
ab96c64aef
commit
c8faea4d3c
|
@ -28,3 +28,4 @@ android_yzf_update.php
|
||||||
/backstage/captcha
|
/backstage/captcha
|
||||||
|
|
||||||
.htaccess
|
.htaccess
|
||||||
|
.vscode
|
|
@ -0,0 +1,5 @@
|
||||||
|
php项目,不需要编译
|
||||||
|
内部包括了多个云中美食相关的项目,主要包括前端和php项目
|
||||||
|
|
||||||
|
- touch:触摸屏项目
|
||||||
|
- touch_mz:敏卓触摸屏项目
|
|
@ -1,17 +1,21 @@
|
||||||
<?
|
<?
|
||||||
require_once(dirname(__FILE__)."/common.php");
|
require_once(dirname(__FILE__)."/common.php");
|
||||||
|
// 接收查询参数,即URL路径参数后的查询参数params
|
||||||
$qs = $_SERVER['QUERY_STRING'];
|
$qs = $_SERVER['QUERY_STRING'];
|
||||||
|
echo $qs;
|
||||||
|
|
||||||
|
// 读取发送到脚本的数据
|
||||||
$json = file_get_contents("php://input");
|
$json = file_get_contents("php://input");
|
||||||
$post = json_decode($json, true, 512 , JSON_BIGINT_AS_STRING);
|
$post = json_decode($json, true, 512 , JSON_BIGINT_AS_STRING);
|
||||||
|
|
||||||
$serialno = $post['serialno'];
|
$serialno = $post['serialno'];
|
||||||
if(!$serialno) exit;
|
if(!$serialno) exit;
|
||||||
|
|
||||||
|
// 获取数据库表数据,POS机设备信息
|
||||||
$deviceInfo = $db->get_one("select * from tb_pos_device where serialno = '".addslashes($serialno)."'");
|
$deviceInfo = $db->get_one("select * from tb_pos_device where serialno = '".addslashes($serialno)."'");
|
||||||
$device_id = intval($deviceInfo['id']);
|
$device_id = intval($deviceInfo['id']);
|
||||||
|
|
||||||
|
// 获取远程地址
|
||||||
$ip = $_SERVER["REMOTE_ADDR"];
|
$ip = $_SERVER["REMOTE_ADDR"];
|
||||||
|
|
||||||
$s1 = $json;
|
$s1 = $json;
|
||||||
|
@ -19,6 +23,7 @@ if(strlen($s1) > 2000) {
|
||||||
$s1 = substr($s1, 0, 2000).'..';
|
$s1 = substr($s1, 0, 2000).'..';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 插入POS机日志记录
|
||||||
$db->query("insert into tb_pos_device_log set device_id = {$device_id}, serialno = '".addslashes($serialno)."', ip = '".addslashes($ip)."', path = '".addslashes($qs)."', request = '".addslashes($s1)."', response = '', addtime = now() ");
|
$db->query("insert into tb_pos_device_log set device_id = {$device_id}, serialno = '".addslashes($serialno)."', ip = '".addslashes($ip)."', path = '".addslashes($qs)."', request = '".addslashes($s1)."', response = '', addtime = now() ");
|
||||||
$log_id = $db->insert_id();
|
$log_id = $db->insert_id();
|
||||||
if(!$deviceInfo) {
|
if(!$deviceInfo) {
|
||||||
|
@ -26,16 +31,19 @@ if(!$deviceInfo) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 从数据记录中获取信息
|
||||||
$company_id = intval($deviceInfo['company_id']);
|
$company_id = intval($deviceInfo['company_id']);
|
||||||
$dining_hall_id = intval($deviceInfo['dining_hall_id']);
|
$dining_hall_id = intval($deviceInfo['dining_hall_id']);
|
||||||
$channel_id = intval($deviceInfo['channel_id']);
|
$channel_id = intval($deviceInfo['channel_id']);
|
||||||
|
|
||||||
|
// md5编码签名
|
||||||
$sign2 = md5($post['time'].$post['noncestr'].$deviceInfo['cardpwd']);
|
$sign2 = md5($post['time'].$post['noncestr'].$deviceInfo['cardpwd']);
|
||||||
if($sign2 !== $post['sign']) { //签名错误
|
if($sign2 !== $post['sign']) { //签名错误
|
||||||
$db->query("update tb_pos_device_log set response='sign_err' where id=".$log_id);
|
$db->query("update tb_pos_device_log set response='sign_err' where id=".$log_id);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 将api和data数据处理编码后插入到tb_pos_device_log表,并终止脚本运行
|
||||||
function response_pos($api, $data) {
|
function response_pos($api, $data) {
|
||||||
global $deviceInfo, $post, $log_id, $db;
|
global $deviceInfo, $post, $log_id, $db;
|
||||||
$noncestr = md5(microtime().'_'.rand());
|
$noncestr = md5(microtime().'_'.rand());
|
||||||
|
@ -52,9 +60,13 @@ function response_pos($api, $data) {
|
||||||
echo $json;
|
echo $json;
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 向本机地址发送请求,拼接端口号、路径、post参数和header,调用自定义gquery函数
|
||||||
function self_query($path, $post) {
|
function self_query($path, $post) {
|
||||||
return gquery("http://127.0.0.1:".$_SERVER['SERVER_PORT'].$path, $post, array('Host: '.$_SERVER['SERVER_NAME']));
|
return gquery("http://127.0.0.1:".$_SERVER['SERVER_PORT'].$path, $post, array('Host: '.$_SERVER['SERVER_NAME']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 从post参数中获取pay_mode等参数
|
||||||
function pos_check_user() {
|
function pos_check_user() {
|
||||||
global $post, $db, $company_id;
|
global $post, $db, $company_id;
|
||||||
|
|
||||||
|
@ -67,17 +79,21 @@ function pos_check_user() {
|
||||||
|
|
||||||
if(substr($qr_code, 0, 4) != '[st]' || substr($qr_code, -1) != ';') exit;
|
if(substr($qr_code, 0, 4) != '[st]' || substr($qr_code, -1) != ';') exit;
|
||||||
|
|
||||||
|
// 截取qr_code,截取第4位到倒数第2位字符
|
||||||
$s = substr($qr_code, 4, -1);
|
$s = substr($qr_code, 4, -1);
|
||||||
|
|
||||||
|
// 将字符串分割成数组
|
||||||
$a = explode(",", $s);
|
$a = explode(",", $s);
|
||||||
if(count($a) != 2) exit;
|
if(count($a) != 2) exit;
|
||||||
|
|
||||||
$code = $a[0];
|
$code = $a[0];
|
||||||
$hash = $a[1];
|
$hash = $a[1];
|
||||||
|
|
||||||
|
// 关联数组,返回类似json的结构
|
||||||
return array('type' => 'qr', 'code' => $code);
|
return array('type' => 'qr', 'code' => $code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 搜索父字符串中子字符串的位置,如果pay_code中不以ymzs_开头,则退出
|
||||||
if(strpos($pay_code, 'yzms_') !== 0) exit;
|
if(strpos($pay_code, 'yzms_') !== 0) exit;
|
||||||
|
|
||||||
$uid = intval(substr($pay_code, 5));
|
$uid = intval(substr($pay_code, 5));
|
||||||
|
@ -95,7 +111,10 @@ function pos_check_user() {
|
||||||
}
|
}
|
||||||
return $uInfo;
|
return $uInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 顶层代码,判断qs中参数
|
||||||
if($qs == 'heartbeat' || $qs == 'addperson' || $qs == 'delperson') { //心跳
|
if($qs == 'heartbeat' || $qs == 'addperson' || $qs == 'delperson') { //心跳
|
||||||
|
// 新增人员
|
||||||
if($qs == 'addperson' && $post['whitelist']) {
|
if($qs == 'addperson' && $post['whitelist']) {
|
||||||
|
|
||||||
foreach($post['whitelist'] as $item) {
|
foreach($post['whitelist'] as $item) {
|
||||||
|
@ -104,6 +123,7 @@ if($qs == 'heartbeat' || $qs == 'addperson' || $qs == 'delperson') { //心跳
|
||||||
$db->query("update tb_pos_device_user set status=2,rs='".$item['result_code']."' where id = '{$rec_id}' and uid = '{$uid}'");
|
$db->query("update tb_pos_device_user set status=2,rs='".$item['result_code']."' where id = '{$rec_id}' and uid = '{$uid}'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 删除人员
|
||||||
if($qs == 'delperson' && $post['whitelist']) {
|
if($qs == 'delperson' && $post['whitelist']) {
|
||||||
|
|
||||||
foreach($post['whitelist'] as $item) {
|
foreach($post['whitelist'] as $item) {
|
||||||
|
@ -113,6 +133,7 @@ if($qs == 'heartbeat' || $qs == 'addperson' || $qs == 'delperson') { //心跳
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 心跳
|
||||||
if($qs != 'heartbeat' || (time() - strtotime($deviceInfo['synctime']) > 60)) { //1分钟检测一次用户同步
|
if($qs != 'heartbeat' || (time() - strtotime($deviceInfo['synctime']) > 60)) { //1分钟检测一次用户同步
|
||||||
|
|
||||||
$db->query("update tb_pos_device set synctime=now() where id = ".$device_id);
|
$db->query("update tb_pos_device set synctime=now() where id = ".$device_id);
|
||||||
|
|
|
@ -5,7 +5,7 @@ if($_SERVER['HTTP_ACUNETIX_ASPECT']) exit;
|
||||||
if($_SERVER["HTTP_GYHFTIPFSDX"]) {
|
if($_SERVER["HTTP_GYHFTIPFSDX"]) {
|
||||||
$_SERVER["REMOTE_ADDR"] = trim(addslashes(end(explode(',', $_SERVER['HTTP_GYHFTIPFSDX']))));
|
$_SERVER["REMOTE_ADDR"] = trim(addslashes(end(explode(',', $_SERVER['HTTP_GYHFTIPFSDX']))));
|
||||||
}
|
}
|
||||||
if(!get_magic_quotes_gpc()) {
|
if(!@get_magic_quotes_gpc()) {
|
||||||
foreach($_POST as $key => $v) {
|
foreach($_POST as $key => $v) {
|
||||||
if(is_string($v)) $_POST[$key] = addslashes($v);
|
if(is_string($v)) $_POST[$key] = addslashes($v);
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@ class db_mysql
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据type类型决定是否缓冲到内存后再将查询的结果集输出
|
||||||
function query($sql , $type = '')
|
function query($sql , $type = '')
|
||||||
{
|
{
|
||||||
$func = $type == 'UNBUFFERED' ? 'mysql_unbuffered_query' : 'mysql_query';
|
$func = $type == 'UNBUFFERED' ? 'mysql_unbuffered_query' : 'mysql_query';
|
||||||
|
|
Loading…
Reference in New Issue