From 70f891ffac397e9e54979fc4822d63ec5d026c66 Mon Sep 17 00:00:00 2001 From: mzeros Date: Sat, 19 Oct 2024 09:05:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=81=E6=B0=B4=E5=8F=B7?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=AE=9D=E5=A1=94=E7=99=BD=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E9=98=B2=E7=81=AB=E5=A2=99=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/channel/service/KamiGroupService.php | 61 ++++ app/channel/service/system/Core.php | 2 +- app/channel/service/system/Dayuanren.php | 2 +- app/channel/service/system/Shenyou.php | 2 +- app/channel/service/system/Xunmai.php | 78 +++-- app/core/BtWafService.php | 267 ++++++++++++++++++ app/gateway/controller/v4/Card.php | 8 +- app/gateway/controller/v4/Core.php | 6 +- app/merchant/controller/Merchant.php | 38 ++- app/merchant/service/MerchantService.php | 42 +++ app/merchant/view/merchant/index.html | 3 + app/merchant/view/merchant/ipWhite.html | 25 ++ app/openapi/controller/Task.php | 49 ++++ app/openapi/controller/Test.php | 82 ++++++ app/order/controller/Order.php | 39 +-- app/order/service/OrderService.php | 4 +- app/order/view/aftersales_order/index.html | 2 +- .../view/aftersales_order/index_search.html | 2 +- app/order/view/aftersales_order/setKami.html | 2 +- app/order/view/aftersales_order/setYes.html | 2 +- app/order/view/order/index.html | 56 +++- app/order/view/order/index.html.back | 177 ------------ app/order/view/order/setKami.html | 2 +- app/order/view/order/setYes.html | 2 +- .../kami91order/KamiOrderStatusStandardUp.php | 2 +- app/setting/view/config/index.html | 65 +++++ config/app.php | 11 +- readme.md | 6 +- 28 files changed, 776 insertions(+), 261 deletions(-) create mode 100644 app/channel/service/KamiGroupService.php create mode 100644 app/core/BtWafService.php create mode 100644 app/merchant/view/merchant/ipWhite.html delete mode 100644 app/order/view/order/index.html.back diff --git a/app/channel/service/KamiGroupService.php b/app/channel/service/KamiGroupService.php new file mode 100644 index 0000000..1979354 --- /dev/null +++ b/app/channel/service/KamiGroupService.php @@ -0,0 +1,61 @@ +db()->where($where)->order('status desc, reorder desc, id desc')->find(); + + if ($info) { + $card = KamiGroup::instance()->db()->where(array('kami_group_id' => $info['id'], 'status' => 1, 'use' => 1))->find(); + if ($card) { + return $info['id']; + } else { + $this->db()->where(array('id' => $info['id']))->update(array('status' => '0')); + return $this->getOne(); + } + } + + return 1; + } + + public function up($name, $reorder = 1) + { + $data = array(); + $data['name'] = $name; + + $info = $this->db()->where($where)->find(); + + if ($reorder) { + $data['reorder'] = $reorder; + } + + $data['status'] = 1; + if (!$info) { + return $this->db()->insertGetId($data); + } else { + $this->db()->where(array('id' => $info['id']))->update($data); + return $info['id']; + } + } +} \ No newline at end of file diff --git a/app/channel/service/system/Core.php b/app/channel/service/system/Core.php index 68bc1b4..d3b56ed 100644 --- a/app/channel/service/system/Core.php +++ b/app/channel/service/system/Core.php @@ -247,7 +247,7 @@ class Core $api_host = sysconf('api_notify_host'); if($api_host){ - $url = $this->getUrl('/notify/call?s_order=' . $order . '&s_type=' . $type.'&version=v4',4); + $url = $this->getUrl('/call?s_order=' . $order . '&s_type=' . $type.'&version=v4',4); }else{ $url = $this->getUrl('/gateway/api.notify/call?s_order=' . $order . '&s_type=' . $type);#修改原为v3.0之前版本 } diff --git a/app/channel/service/system/Dayuanren.php b/app/channel/service/system/Dayuanren.php index 4b6a649..866ff90 100644 --- a/app/channel/service/system/Dayuanren.php +++ b/app/channel/service/system/Dayuanren.php @@ -114,7 +114,7 @@ class Dayuanren extends Core } if (isset($data['voucher']) && $data['voucher']) { # 流水号 - $data['s_nubmer'] = $result['s_nubmer'] = $data['voucher']; + $data['s_number'] = $data['voucher']; } $result['yes'] = 'success'; diff --git a/app/channel/service/system/Shenyou.php b/app/channel/service/system/Shenyou.php index 19e8fe9..653bc07 100644 --- a/app/channel/service/system/Shenyou.php +++ b/app/channel/service/system/Shenyou.php @@ -84,7 +84,7 @@ class Shenyou extends Core $temp[1] = $data['exchangeTraded']; } - $data['s_nubmer'] = $result['s_nubmer'] = $temp[1]; + $data['s_number'] = $result['s_number'] = $temp[1]; } */ diff --git a/app/channel/service/system/Xunmai.php b/app/channel/service/system/Xunmai.php index 176f7f9..92015e7 100644 --- a/app/channel/service/system/Xunmai.php +++ b/app/channel/service/system/Xunmai.php @@ -53,7 +53,7 @@ class Xunmai extends Core public function lockCard($order) { - $response =$this->lock_send($order,2); + $response =$this->lock_send($order); $log['type'] = 'LockCard_response'; @@ -113,11 +113,17 @@ class Xunmai extends Core $request=[]; $request['customerId'] = $this->mid; // $request['money'] = $order['cash']; - $response = $this->json_decode($order['response']); - if(empty($response['kami'])){ - return '未找到卡密'; + if($type==1){ + $response = $this->json_decode($order['response']); + if(empty($response['kami'])){ + return '未找到卡密'; + } + $request['cardNo'] = $response['kami']['cardno']; + + }else{ + $request['cardNo'] = $order['cardno']; #解锁默认order卡号 } - $request['cardNo'] = $response['kami']['cardno']; + $request['lockType'] = $type; $request['timestamp'] =time(); @@ -307,21 +313,55 @@ class Xunmai extends Core $url = $this->host . $this->api; - $response = $this->curl('post', $url, $request, true); -// $response = '{"code":1,"msg":"成功","data":{"billno":"B17252834199510831","orderId":"4029177133840735740","count_money":"20","rate":"0.9800","number":1,"count_amount":"19.6000","custom":null,"cards":"d50c80397d4f2a3b90c99d4436ad38d3c3f85c916bc3c3610f71816a9a9d683d4b9f9977988b6d931d05dcc7d9fb93482a3635e1420651b6645e9bd18ea417d5f28031e14223396162488b952981769ba6e264a94219a1a90d4893732845ab14"}}'; - $response = $this->response($response); + + $KamiService = KamiService::instance(); + + if($request['productCode']== 'SHYKT02'){ + #数汇02 + $randomKami = $KamiService->getData($param['cash'],1, 1, true, false, 1); + }elseif($request['productCode']== 'SHYKT04'){ + #数汇04 + $randomKami = $KamiService->getData($param['cash'],1, 1, true, false, 2); + }elseif($request['productCode']== 'TDK01'){ + #通兑01 + $randomKami = $KamiService->getData($param['cash'],1, 1, true, false, 3); + }else{ + + $randomKami = null; + } + + if ($randomKami) { + $randomKami_data = [ + 'is_kami' =>1, + ]; + + $msg = 'yescard'; + $randomKami_data['kami'] = array + ( + 'cardno'=>$randomKami['cnum'], + 'cardpwd'=>$randomKami['cpwd'], + 'expired'=>$randomKami['expire_time'] ?? '', + 'value'=>$randomKami['value'], + ); + $response = [ + 'msg' => $msg, + 'data' => $randomKami_data, + 'array' => $randomKami_data + ]; + $unlockcard = $this->unlockCard($randomKami_data['kami']); + if($unlockcard != 'ok'){ + $response = $this->curl('post', $url, $request, true); + $response = $this->response($response); + $KamiService->db()->where(array('cnum' => $randomKami['cnum']))->update(array('status' => '7')); + } + + } else { + + $response = $this->curl('post', $url, $request, true); + $response = $this->response($response); // var_dump($response);die; - - - - - -// var_dump($response);die; -// var_dump($response); - - //$response['data'] = ''; - //$response['msg'] = 'ok'; - $channel_order_id = ''; + } +// if (isset($response['array']['data']['billno'])) { $channel_order_id = $response['array']['data']['billno']; } diff --git a/app/core/BtWafService.php b/app/core/BtWafService.php new file mode 100644 index 0000000..536cc98 --- /dev/null +++ b/app/core/BtWafService.php @@ -0,0 +1,267 @@ + '/system?action=GetSystemTotal', //获取系统基础统计 + 'GetDiskInfo' => '/system?action=GetDiskInfo', //获取磁盘分区信息 + 'GetNetWork' => '/system?action=GetNetWork', //获取实时状态信息(CPU、内存、网络、负载) + 'GetTaskCount' => '/ajax?action=GetTaskCount', //检查是否有安装任务 + 'UpdatePanel' => '/ajax?action=UpdatePanel', //检查面板更新 + # 网站管理相关接口 + 'Websites' => '/data?action=getData&table=sites', //获取网站列表 + 'Webtypes' => '/site?action=get_site_types', //获取网站分类 + 'GetPHPVersion' => '/site?action=GetPHPVersion', //获取已安装的 PHP 版本列表 + 'GetSitePHPVersion' => '/site?action=GetSitePHPVersion', //获取指定网站运行的PHP版本 + 'SetPHPVersion' => '/site?action=SetPHPVersion', //修改指定网站的PHP版本 + 'SetHasPwd' => '/site?action=SetHasPwd', //开启并设置网站密码访问 + 'CloseHasPwd' => '/site?action=CloseHasPwd', //关闭网站密码访问 + 'GetDirUserINI' => '/site?action=GetDirUserINI', //获取网站几项开关(防跨站、日志、密码访问) + 'WebAddSite' => '/site?action=AddSite', //创建网站 + 'WebDeleteSite' => '/site?action=DeleteSite', //删除网站 + 'WebSiteStop' => '/site?action=SiteStop', //停用网站 + 'WebSiteStart' => '/site?action=SiteStart', //启用网站 + 'WebSetEdate' => '/site?action=SetEdate', //设置网站有效期 + 'WebSetPs' => '/data?action=setPs&table=sites', //修改网站备注 + 'WebBackupList' => '/data?action=getData&table=backup', //获取网站备份列表 + 'WebToBackup' => '/site?action=ToBackup', //创建网站备份 + 'WebDelBackup' => '/site?action=DelBackup', //删除网站备份 + 'WebDoaminList' => '/data?action=getData&table=domain', //获取网站域名列表 + 'GetDirBinding' => '/site?action=GetDirBinding', //获取网站域名绑定二级目录信息 + 'AddDirBinding' => '/site?action=AddDirBinding', //添加网站子目录域名 + 'DelDirBinding' => '/site?action=DelDirBinding', //删除网站绑定子目录 + 'GetDirRewrite' => '/site?action=GetDirRewrite', //获取网站子目录伪静态规则 + 'WebAddDomain' => '/site?action=AddDomain', //添加网站域名 + 'WebDelDomain' => '/site?action=DelDomain', //删除网站域名 + 'GetSiteLogs' => '/site?action=GetSiteLogs', //获取网站日志 + 'GetSecurity' => '/site?action=GetSecurity', //获取网站盗链状态及规则信息 + 'SetSecurity' => '/site?action=SetSecurity', //设置网站盗链状态及规则信息 + 'GetSSL' => '/site?action=GetSSL', //获取SSL状态及证书详情 + 'HttpToHttps' => '/site?action=HttpToHttps', //强制HTTPS + 'CloseToHttps' => '/site?action=CloseToHttps', //关闭强制HTTPS + 'SetSSL' => '/site?action=SetSSL', //设置SSL证书 + 'CloseSSLConf' => '/site?action=CloseSSLConf', //关闭SSL + 'WebGetIndex' => '/site?action=GetIndex', //获取网站默认文件 + 'WebSetIndex' => '/site?action=SetIndex', //设置网站默认文件 + 'GetLimitNet' => '/site?action=GetLimitNet', //获取网站流量限制信息 + 'SetLimitNet' => '/site?action=SetLimitNet', //设置网站流量限制信息 + 'CloseLimitNet' => '/site?action=CloseLimitNet', //关闭网站流量限制 + 'Get301Status' => '/site?action=Get301Status', //获取网站301重定向信息 + 'Set301Status' => '/site?action=Set301Status', //设置网站301重定向信息 + 'GetRewriteList' => '/site?action=GetRewriteList', //获取可选的预定义伪静态列表 + 'GetFileBody' => '/files?action=GetFileBody', //获取指定预定义伪静态规则内容(获取文件内容) + 'SaveFileBody' => '/files?action=SaveFileBody', //保存伪静态规则内容(保存文件内容) + 'GetProxyList' => '/site?action=GetProxyList', //获取网站反代信息及状态 + 'CreateProxy' => '/site?action=CreateProxy', //添加网站反代信息 + 'ModifyProxy' => '/site?action=ModifyProxy', //修改网站反代信息 + + # Ftp管理 + 'WebFtpList' => '/data?action=getData&table=ftps', //获取FTP信息列表 + 'SetUserPassword' => '/ftp?action=SetUserPassword', //修改FTP账号密码 + 'SetStatus' => '/ftp?action=SetStatus', //启用/禁用FTP + + # Sql管理 + 'WebSqlList' => '/data?action=getData&table=databases', //获取SQL信息列表 + 'ResDatabasePass' => '/database?action=ResDatabasePassword', //修改SQL账号密码 + 'SQLToBackup' => '/database?action=ToBackup', //创建sql备份 + 'SQLDelBackup' => '/database?action=DelBackup', //删除sql备份 + + 'download' => '/download?filename=', //下载备份文件(目前暂停使用) + + # 插件管理 + 'deployment' => '/plugin?action=a&name=deployment&s=GetList&type=0', //宝塔一键部署列表 + 'SetupPackage' => '/plugin?action=a&name=deployment&s=SetupPackage', //部署任务 + + #宝塔WAF + 'WAF_customize_rule' =>'/plugin?action=a&name=btwaf&s=update_customize_rule', //Nginx自定义规则 + 'WAF_customize_rule_create' =>'/plugin?action=a&name=btwaf&s=create_customize_rule', //Nginx自定义规则 + 'WAF_customize_rule_list' => '/plugin?action=a&name=btwaf&s=get_customize_list', //Nginx自定义规则列表 + + + ); + /** + * 初始化服务 + * @return $this + */ + + + /** + * 初始化 + * @param [type] $bt_panel 宝塔接口地址 + * @param [type] $bt_key 宝塔Api密钥 + */ + public function __construct() + { + $bt_panel = sysconf('BtApi_ip'); + $bt_key = sysconf('BtApi_password'); + + if ($bt_panel) $this->BT_PANEL = $bt_panel; + if ($bt_key) $this->BT_KEY = $bt_key; + header('Content-type: application/json'); + } + + public function db($table = false) + { + $table = $table ? $table : $this->table; + $this->db = $this->app->db->name($table); + return $this->db; + } + + /** + * 构造带有签名的关联数组 + */ + public function GetKeyData(){ + $now_time = time(); + $p_data = array( + 'request_token' => md5($now_time.''.md5($this->BT_KEY)), + 'request_time' => $now_time + ); + return $p_data; + } + + + + /** + * 获取系统基础统计 + */ + public function update_waf_whiteIp($rule_id,$whiteName,$domain,$ip_white){ + + + #infos: {"name":"ip白名单-2","servers":["apis.gcdat.com"],"status":1,"is_global":0,"priority":0,"root":{"logic":"or","type":"block","option":null,"children":[{"logic":"and","type":"block","option":null,"children":[{"type":"option","logic":"","children":[],"option":{"type":"ip","operator":"eq","left_factor":"","right_factor":"12.12.12.12"}}]}]},"action":{"type":"allow","response":{"type":"","response_id":0,"status":0,"headers":{},"body":""}}} + + + + $p_data = $this->GetKeyData(); + if(isset($rule_id)&& $rule_id){ + $url = $this->BT_PANEL.$this->config["WAF_customize_rule"]; + $p_data['id'] = $rule_id; + }else{ + $url = $this->BT_PANEL.$this->config["WAF_customize_rule_create"]; + } + $info = array(); + $info['name'] = $whiteName; + $info['servers'] = [$domain]; + $info['status'] = 1; + $info['is_global'] = 0; + $info['priority'] = 0; + $root_info = []; + $root_info['logic'] = 'or'; + $root_info['type'] = 'block'; + $root_info['option'] = 'null'; +// $children; + $num = 0; +// var_dump($ip_white);die; + foreach ($ip_white as $k => $v){ + $children[$num]['logic'] = 'and'; + $children[$num]['type'] = 'block'; + $children[$num]['option'] = 'null'; + $children[$num]['children'][0]['type'] = 'block'; + $children[$num]['children'][0]['logic'] = ''; + $children[$num]['children'][0]['children'] = []; + $children[$num]['children'][0]['option'] = [ + 'type' => 'ip', + 'operator' => 'eq', + 'left_factor' => '', + 'right_factor' => $v, + ]; + $num++; + } + + + $root_info['children'] = $children; + $info['root'] = $root_info; + $info['action'] = [ + 'type'=>'allow', + 'response'=>[ + 'type'=>'', + 'response_id'=>0, + 'status'=>0, +// 'headers'=>[], + 'body'=>'' + ] + ]; +// var_dump($info);die; + $json = json_encode($info,JSON_UNESCAPED_UNICODE); +// var_dump($json);die; + + +// + $p_data['infos'] = $json; + +// var_dump($p_data); + + + $result = $this->HttpPostCookie($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + private function HttpPostCookie($url, $data,$timeout = 60) + { + //定义cookie保存位置 + $cookie_file='./'.md5($this->BT_PANEL).'.cookie'; + if(!file_exists($cookie_file)){ + $fp = fopen($cookie_file,'w+'); + fclose($fp); + } + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); + curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + $output = curl_exec($ch); + curl_close($ch); + return $output; + } + + public function get_customize_list(){ + $url = $this->BT_PANEL.$this->config["WAF_customize_rule_list"]; +// var_dump($url);die; + $p_data = $this->GetKeyData(); + $result = $this->HttpPostCookie($url,$p_data); + $data = json_decode($result,true); + return $data; + + } + + + # + +} diff --git a/app/gateway/controller/v4/Card.php b/app/gateway/controller/v4/Card.php index b726bb2..4b1269e 100644 --- a/app/gateway/controller/v4/Card.php +++ b/app/gateway/controller/v4/Card.php @@ -82,17 +82,17 @@ class Card extends Core $request = json_decode($data['channel_callback_msg'], true); $number = ''; - if (isset($request['s_nubmer']) && $request['s_nubmer']) { - $result['s_nubmer'] = $request['s_nubmer']; + if (isset($request['s_number']) && $request['s_number']) { + $result['s_number'] = $request['s_number']; } elseif (isset($request['s_number']) && $request['s_number']) { - $result['s_nubmer'] = $request['s_number']; + $result['s_number'] = $request['s_number']; } $order_name = sysconf('order_name'); if ($number && $order_name) { $result[$order_name] = $number; } elseif ($number) { - $result['s_nubmer'] = $number; + $result['s_number'] = $number; } $this->yes($result); diff --git a/app/gateway/controller/v4/Core.php b/app/gateway/controller/v4/Core.php index 851b7dd..9a61574 100644 --- a/app/gateway/controller/v4/Core.php +++ b/app/gateway/controller/v4/Core.php @@ -164,9 +164,9 @@ class Core extends Controller $ip_white_array = $ip_white_data?explode(',', $ip_white_data):[]; -// if(!$ip_white_array || !in_array($request_ip, $ip_white_array)){ -// $this->no(-801,'ip:'.$request_ip.',请求错误,不在白名单内。'); -// } + if(!$ip_white_array || !in_array($request_ip, $ip_white_array)){ + $this->no(-801,'ip:'.$request_ip.',请求错误,不在白名单内。'); + } // var_dump(1);die; if ($this->proid && !str_contains($this->product, '_cash')) { unset($input['cash']); diff --git a/app/merchant/controller/Merchant.php b/app/merchant/controller/Merchant.php index b614057..722f138 100644 --- a/app/merchant/controller/Merchant.php +++ b/app/merchant/controller/Merchant.php @@ -46,7 +46,7 @@ class Merchant extends Controller $this->title = '商户列表'; $query = $this->_query($this->table); $query->equal('status')->dateBetween('create_at'); - $query->like('name,phone,contacts'); + $query->like('name,phone,contacts,ip_white'); // 加载对应数据列表 $this->type = input('type', 'all'); $query->where(['is_deleted' => 0]); @@ -334,6 +334,8 @@ class Merchant extends Controller } } + + /** * 商户信息查看 * @login true @@ -392,5 +394,39 @@ class Merchant extends Controller $this->_delete($this->table); } + /** + * 修改ip白名单 + * @login true + * @auth true + * @param integer $id + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public function ipWhite($id = 0) + { + + if ($this->app->request->isGet()) { + $this->_applyFormToken(); + $this->verify = false; + +// $this->pkeylist = OrderService::instance()->getProductKeyList(true); + + $this->_form($this->table, 'ipWhite','id', [], ['id' => $id]); + + } else { + $id = input('id'); + $ip_white = input('ip_white'); + + $up_ipWhite = MerchantService::instance()->update_ipWhite($id,$ip_white); + if($up_ipWhite == '添加防火墙错误'){ + $this->error('添加防火墙ip错误,请联系技术何时!'); + }else{ + $this->success('IP白名单修改成功!', ''); + } + + } + } + } diff --git a/app/merchant/service/MerchantService.php b/app/merchant/service/MerchantService.php index 0ff1408..50475e5 100644 --- a/app/merchant/service/MerchantService.php +++ b/app/merchant/service/MerchantService.php @@ -2,6 +2,7 @@ namespace app\merchant\service; +use app\core\BtWafService; use app\core\Service; use app\merchant\service\OrderService; use app\order\service\Kami91OrderService; @@ -1172,4 +1173,45 @@ class MerchantService extends Service $this->db()->where(array('id' => $mid))->update($update); } + + public function update_ipWhite($mid,$ip_white_data='') + { + $is_btWaf = sysconf('settingBtWafStatus'); + $api_domain = sysconf('BtWaf_domain'); + + + if(isset($is_btWaf) && $is_btWaf == 1) { + $ip_white_array = $ip_white_data?explode(',', $ip_white_data):[]; + $bt = new BtWafService(); + $list = $bt->get_customize_list(); + $ip_white_id = ''; + if($list){ + $rule_list = $list['msg']['rules']; + $name = 'ip白名单-'.$mid; + foreach ($rule_list as $k=>$v){ + if($v['name'] == $name){ + $ip_white_id = $k; + break; + } + + } + + } + + if($ip_white_id){ + $data = $bt->update_waf_whiteIp($ip_white_id,$name,$api_domain,$ip_white_array); + + } else{ + $data = $bt->update_waf_whiteIp('', $name, $api_domain, $ip_white_array); + } + + if($data && isset($data['status']) && !$data['status']){ + return '添加防火墙错误'; + } + + } + return $this->db()->where(array('id' => $mid))->update(['ip_white'=>$ip_white_data]); + + + } } \ No newline at end of file diff --git a/app/merchant/view/merchant/index.html b/app/merchant/view/merchant/index.html index 8fd78a5..989837e 100644 --- a/app/merchant/view/merchant/index.html +++ b/app/merchant/view/merchant/index.html @@ -126,6 +126,9 @@ 映射产品编码设置 + 设置IP白名单 + + +
+ +
+ +

为空则不设置IP白名单

+
+ +
+
+ {notempty name='vo.id'}{/notempty} +
+ + +
+ \ No newline at end of file diff --git a/app/openapi/controller/Task.php b/app/openapi/controller/Task.php index c7dc5e9..d8eb925 100644 --- a/app/openapi/controller/Task.php +++ b/app/openapi/controller/Task.php @@ -210,6 +210,55 @@ class Task extends Core } } + /* 对快手黑名单队列进行退款处理正常执行 */ + public function refundKuaishou() + { + + + try { + $this->redis(); + $redisData = $this->redis->pop('blackcall'); + $param = array(); + + $param['orderId'] = $redisData['orderNo']; + $param['status'] = 'FAILED'; + $param['bizType'] = '10'; + $param['failCode'] = '4013022'; + $param['failMsg'] = '黑名单'; + + + $param = json_encode($param); + $signtime = time(); + + $sign = 'access_token=' . $redisData['access_token'] . '&appkey=' . $redisData['agentId'] . '&method=integration.virtual.topup.mobile.order.callback¶m=' . $param . '&signMethod=MD5×tamp=' . $signtime . '&version=1'; + $signmd5 = md5($sign); + $param = urlencode($param); + + $geturl = $redisData['notify_url'] . '?access_token=' . $redisData['access_token'] . '&appkey=' . $redisData['agentId'] . '&method=integration.virtual.topup.mobile.order.callback¶m=' . $param . '&signMethod=MD5×tamp=' . $signtime . '&version=1&sign=' . $signmd5; + +// $blackGet= ['result' => '1']; + + $blackGet = \app\openapi\controller\Coreks::get_curl_post($geturl); + $blackGet = json_decode($blackGet, true); + + $response = $blackGet['result']; + + if ($response == '1') { + Log::write('gateway', 'black', $blackGet); + } else { + Log::write('errorTip', 'black_request', $redisData); + Log::write('gateway', 'black', $blackGet); + } + + return 'ok'; + } catch (\Exception $e) { +// return $e; + Log::write('errorTip', 'redis', $e->getMessage()); + return 'error'; + } + + } + diff --git a/app/openapi/controller/Test.php b/app/openapi/controller/Test.php index d4d3a31..a546c63 100644 --- a/app/openapi/controller/Test.php +++ b/app/openapi/controller/Test.php @@ -7,6 +7,7 @@ use app\channel\service\CardService; use app\channel\service\ChannelService; use app\channel\service\KamiService; use app\channel\service\ProductService; +use app\core\BtWafService; use app\gateway\controller\api\Notify; use app\gateway\service\RedisService; use app\kami\controller\getcookie\KaiDianBao; @@ -79,6 +80,87 @@ class Test extends Core } + public function btwaf() + { +// $m_oldIpWhite_data = MerchantService::instance()->db()->field('ip_white')->where(['id'=>6])->find(); +//// $m_oldIpWhite = $m_oldIpWhite_data['ip_white']; +// if($m_oldIpWhite_data && isset($m_oldIpWhite_data['ip_white']) && $m_oldIpWhite_data['ip_white']){ +// $old_ip_white_array = $m_oldIpWhite_data['ip_white']?explode(',', $m_oldIpWhite_data['ip_white']):[]; +// $ip_white_array = [ +// '223.5.5.5','122.234.200.204' +// ]; +// foreach ($old_ip_white_array as $k => $v) { +// if(in_array($old_ip_white_array[$k], $ip_white_array)){ +// var_dump($old_ip_white_array[$k]); +// } +// +// } +// } +// var_dump(123);die; +// $inf= '{"name":"ip白名单","servers":["apis.gcdat.com"],"status":1,"is_global":0,"priority":0,"root":{"logic":"or","type":"block","option":null,"children":[{"logic":"and","type":"block","option":null,"children":[{"type":"option","logic":"","children":[],"option":{"type":"ip","operator":"eq","left_factor":"","right_factor":"125.122.178.235"}}]},{"logic":"and","type":"block","option":null,"children":[{"type":"option","logic":"","children":[],"option":{"type":"ip","operator":"eq","left_factor":"","right_factor":"1.1.1.1"}}]},{"logic":"and","type":"block","option":null,"children":[{"type":"option","logic":"","children":[],"option":{"type":"ip","operator":"eq","left_factor":"","right_factor":"223.5.5.5"}}]}]},"action":{"type":"allow","response":{"type":"","response_id":0,"status":0,"headers":{},"body":""}}}'; +// var_dump(json_decode($inf,true));die; + $api_domain = 'apis.gcdat.com'; + + $ip_white_data = '223.5.5.5,1.1.1.1,8.9.9.9'; + + + + $ip_white_array = $ip_white_data ? explode(',', $ip_white_data) : []; + $bt = new BtWafService(); + $list = $bt->get_customize_list(); + $ip_white_id = ''; + if ($list) { + $rule_list = $list['msg']['rules']; + $name = 'ip白名单-' . '3'; + foreach ($rule_list as $k => $v) { + if ($v['name'] == $name) { + $ip_white_id = $k; + break; + } + + } + + } + + if ($ip_white_id) { + $data = $bt->update_waf_whiteIp($ip_white_id, $name, $api_domain, $ip_white_array); + var_dump($data); + + }else{ + $data = $bt->update_waf_whiteIp('', $name, $api_domain, $ip_white_array); + var_dump($data); + } + die; + + + $bt = new BtWafService(); + $list = $bt->get_customize_list(); + $ip_white_id = ''; + if($list){ + $rule_list = $list['msg']['rules']; + $name = 'ip白名单-'.'1'; + foreach ($rule_list as $k=>$v){ + if($v['name'] == $name){ + $ip_white_id = $k; + break; + } + + } + var_dump($list); + + + } + + if($ip_white_id){ + var_dump($ip_white_id); + + } + + +// var_dump($rule_list); + + } + public function check_oar() { $orderAutoService = OrderAutoService::instance(); diff --git a/app/order/controller/Order.php b/app/order/controller/Order.php index e549425..cfc958f 100644 --- a/app/order/controller/Order.php +++ b/app/order/controller/Order.php @@ -196,10 +196,10 @@ class Order extends Controller if ($is_number == 1) { # 有流水号的 - $query->whereRaw(' channel_callback_msg like("%s_nubmer%")'); + $query->whereRaw(' channel_callback_msg like("%s_number%")'); } elseif ($is_number == 2) { # 无流水号的 - $query->whereRaw(' channel_callback_msg not like("%s_nubmer%")'); + $query->whereRaw(' channel_callback_msg not like("%s_number%")'); } return $query; @@ -277,7 +277,7 @@ class Order extends Controller $vo['other'][$k1]['cinfo'] = $this->clist[$v1['cid']] ?? false; } } - $vo['s_nubmer'] = ''; + $vo['s_number'] = ''; $vo['time'] = ''; if ($vo['channel_callback_msg']) { $vo['channel_callback_msg'] = json_decode($vo['channel_callback_msg'], true); @@ -285,8 +285,8 @@ class Order extends Controller $vo['channel_order_id'] = $vo['channel_callback_msg']['trade_no']; } - if (isset($vo['channel_callback_msg']['s_nubmer']) && $vo['channel_callback_msg']['s_nubmer'] && $vo['cid'] != 10031) { - $vo['s_nubmer'] = $vo['channel_callback_msg']['s_nubmer']; + if (isset($vo['channel_callback_msg']['s_number']) && $vo['channel_callback_msg']['s_number'] && $vo['cid'] != 10031) { + $vo['s_number'] = $vo['channel_callback_msg']['s_number']; } if (isset($vo['channel_callback_msg']['message']) && $vo['channel_callback_msg']['message']) { @@ -418,24 +418,6 @@ class Order extends Controller // } } -// $this->total = 0; -// //Todo 注释修改统计 -// -// $result['dong_num'] = 0; -// -// -// $result['no_num'] = 0; -// $result['act_yes_num'] = 0; -// $result['yes_num'] = 0; -// $result['num'] = 0; -// -// $result['order_num'] = $result['order_dong_num'] = $result['order_no_num'] = $result['order_yes_num'] = $result['order_ys_num'] = 0; -// -// $result['order_yes_lv'] = 0 . '%' ; -// $this->total = $result; - - -// $this->total = OrderService::instance()->total(); } @@ -521,6 +503,7 @@ class Order extends Controller $this->_form($this->table, 'pay'); } else { + $mid = 1; $data = input('data'); $cash = input('cash'); @@ -795,17 +778,17 @@ class Order extends Controller $order = OrderService::instance(); if ($this->request->isPost()) { - $s_nubmer = input('s_nubmer'); - $order->setCallback($data['data_type'], $data['order_id'], $data['status'], '', $s_nubmer); + $s_number = input('s_number'); + $order->setCallback($data['data_type'], $data['order_id'], $data['status'], '', $s_number); $this->success('设置成功,商户回调结果要等系统统一推送才会同步,请关注同步结果!也可以手动发起回调!', ''); } else { $info = $order->getOrder($data['data_type'], $data['order_id']); - $data['s_nubmer'] = ''; + $data['s_number'] = ''; if ($info && $info['channel_callback_msg']) { $info['channel_callback_msg'] = json_decode($info['channel_callback_msg'], true); - if (isset($info['channel_callback_msg']['s_nubmer']) && $info['channel_callback_msg']['s_nubmer']) { - $data['s_nubmer'] = $info['channel_callback_msg']['s_nubmer']; + if (isset($info['channel_callback_msg']['s_number']) && $info['channel_callback_msg']['s_number']) { + $data['s_number'] = $info['channel_callback_msg']['s_number']; } } $this->fetch('setYes', $data); diff --git a/app/order/service/OrderService.php b/app/order/service/OrderService.php index 110a667..51859fc 100644 --- a/app/order/service/OrderService.php +++ b/app/order/service/OrderService.php @@ -256,10 +256,10 @@ class orderService extends Service if ($is_number == 1) { # 有流水号的 - $db->whereRaw(' channel_callback_msg like("%s_nubmer%")'); + $db->whereRaw(' channel_callback_msg like("%s_number%")'); } elseif ($is_number == 2) { # 无流水号的 - $db->whereRaw(' channel_callback_msg not like("%s_nubmer%")'); + $db->whereRaw(' channel_callback_msg not like("%s_number%")'); } if ($col == '*') { diff --git a/app/order/view/aftersales_order/index.html b/app/order/view/aftersales_order/index.html index f4d0e83..051597c 100644 --- a/app/order/view/aftersales_order/index.html +++ b/app/order/view/aftersales_order/index.html @@ -93,7 +93,7 @@ {$vo.cash|number_format=###, 2, '.', ''}{if $vo.show_set == 1} / {$vo.actual_cash|number_format=###, 2, '.', ''} / {$vo.product_cash|number_format=###, 2, '.', ''}{/if} {$vo.buy_num|default=''} {$vo.one_cash|default=''} - {$vo.s_nubmer|default=''} + {$vo.s_number|default=''} {if $vo.other} diff --git a/app/order/view/aftersales_order/index_search.html b/app/order/view/aftersales_order/index_search.html index fd899de..615c8dd 100644 --- a/app/order/view/aftersales_order/index_search.html +++ b/app/order/view/aftersales_order/index_search.html @@ -252,7 +252,7 @@ item.account || '', item.cash || '', item.actual_cash || '', - item.s_nubmer || '', + item.s_number || '', item.status || '', item.create_at || '', item.time || '', diff --git a/app/order/view/aftersales_order/setKami.html b/app/order/view/aftersales_order/setKami.html index a02c008..2c50d3c 100644 --- a/app/order/view/aftersales_order/setKami.html +++ b/app/order/view/aftersales_order/setKami.html @@ -4,7 +4,7 @@

为空则不设置流水号

diff --git a/app/order/view/aftersales_order/setYes.html b/app/order/view/aftersales_order/setYes.html index dfc8a53..1f0f0e3 100644 --- a/app/order/view/aftersales_order/setYes.html +++ b/app/order/view/aftersales_order/setYes.html @@ -4,7 +4,7 @@

为空则不设置流水号

diff --git a/app/order/view/order/index.html b/app/order/view/order/index.html index 9ca9aa7..829dbf5 100644 --- a/app/order/view/order/index.html +++ b/app/order/view/order/index.html @@ -27,14 +27,15 @@
{include file='order/index_search'} {include file='order/statement'} +
{notempty name='list'} - - + @@ -47,18 +48,18 @@ - - + + {/notempty} {foreach $list as $key=>$vo} - - + -
+ 序号序号 商户 系统订单号 商户订单号下单时间 耗时 同步结果充值结果充值结果订单操作
+ {$vo.index|default=''}{$vo.index|default=''} {$vo.minfo.name|default=''} ( {$vo.minfo.id|default=''} {eq name='vo.minfo.status' value='0'}/{/eq} @@ -198,7 +199,7 @@ {$vo.time|default=''} {$vo.merchant_callback_msg|default=''} {$vo.msg|default=''} + {if $vo.show_set == 1} @@ -239,7 +240,7 @@ 置成功 {elseif $vo.card_status == 3} - 置成功 @@ -280,16 +281,51 @@ {/foreach}
- {empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty} +
{empty name='list'}没有记录哦{else}{$pagehtml|raw|default=''}{/empty}