From 95200f1c5ad9fcf9f8ab3cf805d2d16be4aad6ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwanyongkang=E2=80=9D?= <“937888580@qq.com”> Date: Tue, 26 Dec 2023 16:37:09 +0800 Subject: [PATCH] =?UTF-8?q?http=E4=B8=8A=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/controller/Alipay.php | 51 ++++ app/common/controller/Wxpay.php | 46 ++++ app/http/controller/Order.php | 425 +++++++++++++++++++++++++++++++ app/http/controller/Product.php | 88 +++++++ app/http/controller/User.php | 397 +++++++++++++++++++++++++++++ app/http/model/Order.php | 9 + app/http/model/Package.php | 78 ++++++ app/http/model/Recharge.php | 9 + app/http/model/User.php | 33 +++ enum/http/Order.php | 60 +++++ extends/alipay/Alipay.php | 33 ++- extends/wechatpay/Wxpay.php | 17 ++ fastphp/func/common.php | 26 +- 13 files changed, 1269 insertions(+), 3 deletions(-) create mode 100644 app/http/controller/Order.php create mode 100644 app/http/controller/Product.php create mode 100644 app/http/controller/User.php create mode 100644 app/http/model/Order.php create mode 100644 app/http/model/Package.php create mode 100644 app/http/model/Recharge.php create mode 100644 app/http/model/User.php create mode 100644 enum/http/Order.php diff --git a/app/common/controller/Alipay.php b/app/common/controller/Alipay.php index c52dc17..cdc64eb 100644 --- a/app/common/controller/Alipay.php +++ b/app/common/controller/Alipay.php @@ -4,6 +4,8 @@ namespace app\common\controller; use extend\alipay\Alipay as AlipaySdk; use app\ros\model\Order as OrderModel; +use app\http\model\User as UserModel; +use app\http\model\Recharge as RechargeModel; class Alipay { @@ -55,4 +57,53 @@ class Alipay { echo 'success'; } + public function httpalipayVerify() { + + $ali = new AlipaySdk(); + + $flag = $ali->payVerify2($_POST); + + if($flag){ + + $status = $_POST['trade_status']; + + $flag = false; + + if ($status == 'TRADE_SUCCESS' && $_POST['auth_app_id'] == '2021002102631089' && $_POST['seller_id'] = '2088431603383955') { + $flag = true; + } + + if ($flag) { + + $recharge_model = new RechargeModel(); + $order_no=$_POST['out_trade_no']; + $alipay_no = $_POST['trade_no']; + + + + //获取充值信息 + $order_info = $recharge_model->getOne(['order_no'=>$order_no]); + + if (!empty($order_info['ali_wx_no'])) { + die; + } + + $update_data = []; + + //更新充值订单 + $update_data['ali_wx_no'] = $alipay_no; + $update_data['pay_status'] = 1; + if($recharge_model->updateOne(['order_no'=>$order_no],$update_data)) { + $user_model = new UserModel(); + $user_info = $user_model->getOne(['Id' => $order_info['user_id']]); + $user_update = []; + $user_update['ju_money'] = $user_info['ju_money'] + $order_info['ju_money']; + $user_model->updateOne(['Id'=>$order_info['user_id']],$user_update); + } + } + } + + echo 'success'; + } + } \ No newline at end of file diff --git a/app/common/controller/Wxpay.php b/app/common/controller/Wxpay.php index 7dc648b..176bff2 100644 --- a/app/common/controller/Wxpay.php +++ b/app/common/controller/Wxpay.php @@ -3,6 +3,8 @@ namespace app\common\controller; use app\ros\model\Order as OrderModel; +use app\http\model\User as UserModel; +use app\http\model\Recharge as RechargeModel; class Wxpay { @@ -41,6 +43,50 @@ class Wxpay { $order_model->updateOne(['order_no'=>$order_no],$update_data); + //处理完成之后,告诉微信成功结果 + echo ' + + + '; + exit(); + } + } + + public function httpwxpayVerify() { + + + //接收数据 + $xmlData = file_get_contents('php://input'); + libxml_disable_entity_loader(true); + $data = json_decode(json_encode(simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOCDATA)), true); + + $order_model = new RechargeModel(); + $order_no = $data['out_trade_no']; + $wx_no = $data['transaction_id']; + + //获取充值信息 + $order_info = $order_model->getOne(['order_no'=>$order_no]); + + if (!empty($order_info['ali_wx_no'])) { + die; + } + + //判断算出的签名和通知信息的签名是否一致 + if($data['result_code'] == 'SUCCESS' && $data['appid'] == 'wx18e5b4f42773c3ec' && $data['mch_id'] == '1571608411'){ + + $update_data = []; + + //更新充值订单 + $update_data['ali_wx_no'] = $wx_no; + $update_data['pay_status'] = 1; + $order_model->updateOne(['order_no'=>$order_no],$update_data); + $user_model = new UserModel(); + $user_info = $user_model->getOne(['Id' => $order_info['user_id']]); + $user_update = []; + $user_update['ju_money'] = $user_info['ju_money'] + $order_info['ju_money']; + $user_model->updateOne(['Id'=>$order_info['user_id']],$user_update); + + //处理完成之后,告诉微信成功结果 echo ' diff --git a/app/http/controller/Order.php b/app/http/controller/Order.php new file mode 100644 index 0000000..6b76611 --- /dev/null +++ b/app/http/controller/Order.php @@ -0,0 +1,425 @@ + 50, + '200' => 210, + '500' => 550, + '1000' => 1150, + '2000' => 2400, + '5000' => 6250, + '10000' => 13000, + ]; + // private $url_root = 'https://sandbox.sgxz.cn'; + private $url_root = 'https://merchant.sgxz.cn'; + + private $http_user_info = []; + + public function __construct() + { + parent::__construct('',''); + if (empty($this->userinfo['UserId'])) { + die; + } + + $user_model = new UserModel; + $this->http_user_info = $user_model->get_http_user($this->userinfo['UserId']); + + if ($this->http_user_info['is_verify'] == 0) { + $return_data = [ + 'code'=>-1, + 'data' => '非法参数', + 'msg' => '未实名,请先实名!' + ]; + echo json_encode($return_data); + die; + } + } + //创建订单 + public function create_order(){ + $data = json_decode(file_get_contents("php://input"),true)['order_info']; + + + $data['money'] = abs($data['money']); + $return_data = []; + switch ($data['order_type']) { + case 1: + $return_data = $this->recharge($data,HttpOrderEnum::$charge,$this->url_root.'/plan/recharge/place/order'); + break; + case 2: + $return_data = $this->dxwxl($data,HttpOrderEnum::$new,$this->url_root.'/plan/unlimited/place/order'); + break; + case 3: + $return_data = $this->dxbt($data,HttpOrderEnum::$new,$this->url_root.'/plan/period/place/order'); + break; + case 4: + $return_data = $this->dxbl($data); + break; + case 5: + $return_data = $this->game($data,HttpOrderEnum::$new,$this->url_root.'/plan/long/place/order'); + break; + + } + echo json_encode($return_data); + } + + //续费 + public function rebuy_order(){ + $data = json_decode(file_get_contents("php://input"),true)['order_info']; + + $data['money'] = abs($data['money']); + unset($data['data']['title']); + + $return_data = []; + switch ($data['order_type']) { + case 2: + $return_data = $this->dxwxl($data,HttpOrderEnum::$rebuy,$this->url_root.'/user/pack/renew'); + break; + case 3: + $return_data = $this->dxbt($data,HttpOrderEnum::$rebuy,$this->url_root.'/user/pack/renew'); + break; + case 5: + unset($data['data']['ids']); + $return_data = $this->game($data,HttpOrderEnum::$rebuy,$this->url_root.'/user/pack/renew'); + break; + case 6: + $return_data = $this->game($data,HttpOrderEnum::$rebuy,$this->url_root.'/user/long/ip/renew'); + break; + + } + echo json_encode($return_data); + } + //充值 + private function recharge($data) { + + $data['money'] = abs($data['money']); + $recharge_model = new RechargeModel; + $recharge_data = []; + $recharge_data['pay_money'] = $data['money']; + $recharge_data['user_id'] = $this->userinfo['UserId']; + + //判断充值的金额是否在赠送列表里 + if (in_array($recharge_data['pay_money'],$this->ju_zhengsong)){ + $recharge_data['ju_money'] = $this->ju_zhengsong[$data['money']]; + } else { + die; + } + $recharge_data['pay_type'] = $data['pay_type']; + $recharge_data['order_no'] = md5(time()); + $recharge_data['pay_status'] = 0; + + $recharge_model->add($recharge_data); + + //支付宝 + if ($data['pay_type'] == 2) { + $param = [ + 'out_trade_no' => $recharge_data['order_no'], + 'total_amount' => $data['money'], + 'subject' => 'HTTP充值', + 'product_code' => 'FAST_INSTANT_TRADE_PAY', + 'timeout_express' => '30m', + ]; + + + $pay_html = Alipay::pay_http($param); + $info = [ + 'code'=>2, + 'data' => $pay_html + ]; + return $info; + } + //微信 + if ($data['pay_type'] == 3) { + //微信支付 + $wxpay = new Wxpay(); + + $param = [ + 'username' => $this->userinfo['LoginName'], + 'money' => $data['money']*100, + 'order_no' => $recharge_data['order_no'], + ]; + $url = $wxpay->http_pay($param); + + $info = [ + 'code'=>3, + 'data' => $url + ]; + return $info; + } + $info = [ + 'code'=>-1, + 'data' => '非法参数' + ]; + return $info; + } + + //短效无限量 + private function dxwxl($data, $order_type=1,$url='') { + + $order_data = [ + 'user_id' => $this->http_user_info['Id'], + 'order_type' => $order_type, + 'package_type' => HttpOrderEnum::$dxwxl, + 'durationType' => isset($data['data']['durationType'])?$data['data']['durationType']:'', + 'order_status' => HttpOrderEnum::$pay_yes, + 'money' => $data['money'] + ]; + if ($order_type == 2) { + unset($data['data']['durationType']); + } + $request_data = $data['data']; + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + return $this->order_format($data,$order_data,$request_data,$url); + } + + //短效包天 + private function dxbt($data,$order_type=1,$url='') { + $order_data = [ + 'user_id' => $this->http_user_info['Id'], + 'order_type' => $order_type, + 'package_type' => HttpOrderEnum::$dxbt, + 'durationType' => isset($data['data']['durationType'])?$data['data']['durationType']:'', + 'order_status' => HttpOrderEnum::$pay_yes, + 'money' => $data['money'] + ]; + if ($order_type == 2) { + unset($data['data']['durationType']); + } + $request_data = $data['data']; + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + return $this->order_format($data,$order_data,$request_data,$url); + } + + //短效包量 + private function dxbl($data) { + $order_data = [ + 'user_id' => $this->http_user_info['Id'], + 'order_type' => HttpOrderEnum::$new, + 'package_type' => HttpOrderEnum::$dxbl, + 'durationType' => $data['data']['durationType'], + 'order_status' => HttpOrderEnum::$pay_yes, + 'money' => $data['money'] + ]; + + $request_data = $data['data']; + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + return $this->order_format($data,$order_data,$request_data,$this->url_root.'/plan/usage/place/order'); + } + + //长效游戏 + private function game($data,$order_type=1,$url='') { + if (isset($data['data']['isAbroad'])) { + if($data['data']['isAbroad'] == '国内') { + $data['data']['isAbroad'] = 0; + } else if($data['data']['isAbroad'] == '国外') { + $data['data']['isAbroad'] = 1; + } + } + $order_data = [ + 'user_id' => $this->http_user_info['Id'], + 'order_type' => $order_type, + 'package_type' => HttpOrderEnum::$cxyx, + 'game_type' => isset($data['data']['isAbroad'])?isset($data['data']['isAbroad']):'', + 'ip_count' => $data['data']['ipAmount'], + 'order_status' => HttpOrderEnum::$pay_yes, + 'money' => $data['money'] + ]; + // if ($order_type == 2) { + // unset($data['data']['isAbroad']); + // unset($data['data']['ipAmount']); + // } + + $request_data = $data['data']; + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + return $this->order_format($data,$order_data,$request_data,$url); + } + + //获取更换ip的城市列表 + public function get_change_ip_city() { + $data = json_decode(file_get_contents("php://input"),true); + $url = $this->url_root.'/user/long/ip/relate/cities'; + + unset($data['cookie']); + + $data['sgUserId'] = $this->http_user_info['sgUserId']; + $request_data = formatHttpRequert($data); + + echo(linkcurl($url,'POST',$request_data,[],0)); + } + //更换ip订单 + public function change_ip_order() { + $data = json_decode(file_get_contents("php://input"),true)['order_info']; + $url = $this->url_root.'/user/long/ip/switch'; + $package_model = new PackageModel; + + $data['data']['order_type'] = 6; + + $price = $package_model->get_price($data['data']); + + $data['money'] = round(($data['data']['data']['periodAmount'] * $price['price'] * $data['data']['data']['ipAmount']),2); + + unset($data['data']['data']); + unset($data['data']['order_type']); + + + $order_data = [ + 'user_id' => $this->http_user_info['Id'], + 'order_type' => HttpOrderEnum::$change_ip, + 'package_type' => HttpOrderEnum::$cxyx, + 'order_status' => HttpOrderEnum::$pay_yes, + 'ip_count' => 1, + 'game_type' => isset($data['data']['isAbroad'])?isset($data['data']['isAbroad']):'', + 'money' => $data['money'] + ]; + unset($data['data']['cookie']); + unset($data['data']['title']); + unset($data['data']['isAbroad']); + + $request_data = $data['data']; + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + $return_data = $this->order_format($data,$order_data,$request_data,$url); + echo json_encode($return_data); + } + + private function order_format($data,$order_data,$request_data,$http_url) { + + //去掉切换ip的价格计算,在上一步计算 + if ($order_data['order_type'] != HttpOrderEnum::$change_ip) { + + $package_model = new PackageModel; + + $price = $package_model->get_price($data); + + switch ($data['order_type']) { + case 2: + $data['money'] = round($data['data']['periodAmount'] * $price['price'],2); + break; + case 3: + $data['money'] = round(($data['data']['periodAmount'] * $price['price'] * $data['data']['ipAmount']),2); + break; + case 5: + case 6: + $data['money'] = round(($data['data']['periodAmount'] * $price['price'] * $data['data']['ipAmount']),2); + break; + + } + } + + + $data['money'] = abs($data['money']); + + if ($this->http_user_info['ju_money'] >= $data['money']) { + $ju_money = $this->http_user_info['ju_money'] - $data['money']; + $user_update_data['ju_money'] = $ju_money; + + $where = [ + 'Id' => $this->userinfo['UserId'], + 'ju_money' => $this->http_user_info['ju_money'] + ]; + + $user_model = new UserModel; + if($user_model->updateOne($where,$user_update_data)) { + $order_model = new OrderModel; + + $order_data['order_no'] = md5(time()); + + if ($order_model->add($order_data)) { + $url = $http_url; + + $request_data = formatHttpRequert($request_data); + + $http_data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + if ($http_data->s < 0) { + $info = [ + 'code'=>-1, + 'data' => '非法参数', + 'msg' => '请求后台失败,请联系客服!' + ]; + return $info; + } else { + $request_order_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + 'orderId' => $http_data->d->orderId, + 'orderType' => $http_data->d->orderType, + ]; + + //支付订单 + $order_url = $this->url_root.'/user/order/try/pay'; + + $request_order_data = formatHttpRequert($request_order_data); + + $http_order_data = json_decode(linkcurl($order_url,'POST',$request_order_data,[],0)); + + if ($http_order_data->s < 0) { + $info = [ + 'code'=>-1, + 'data' => '非法参数', + 'msg' => '请求后台失败,请联系客服!' + ]; + return $info; + } else { + $order_update = [ + 'status' => 1, + 'order_id' => $http_order_data->d->orderId, + 'serial' => $http_order_data->d->serial, + 'payCash' => $http_order_data->d->payCash, + ]; + $order_id = $order_model->getNewOne('id')['id']; + $order_model->updateOne(['id' => $order_id],$order_update); + $info = [ + 'code'=>1, + 'data' => '', + 'msg' => '操作成功!' + ]; + return $info; + } + } + } else { + $info = [ + 'code'=>-1, + 'data' => '非法参数', + 'msg' => '请求后台失败,请联系客服!' + ]; + return $info; + + } + } else { + $info = [ + 'code'=>-1, + 'data' => '非法参数', + 'msg' => '聚币不足!' + ]; + return $info; + } + + } else { + $info = [ + 'code'=>-1, + 'data' => '非法参数', + 'msg' => '聚币不足!' + ]; + return $info; + } + + } + + + + +} \ No newline at end of file diff --git a/app/http/controller/Product.php b/app/http/controller/Product.php new file mode 100644 index 0000000..f9e28b2 --- /dev/null +++ b/app/http/controller/Product.php @@ -0,0 +1,88 @@ +url_root.'/plan/long/assignable/cities'; + + $request_data = formatHttpRequert($request_data); + + echo(linkcurl($url,'GET',$request_data,[],0)); + } + + //查询长效可切换入口城市 + public function in_city(){ + $request_data = $_POST['data']; + $url = $this->url_root.'/plan/long/assignable/cities'; + + $request_data = formatHttpRequert($request_data); + + echo(linkcurl($url,'GET',$request_data,[],0)); + } + + + //查询长效可切换出口城市 + public function out_city(){ + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + $url = $this->url_root.'/plan/long/assignable/cities'; + + $request_data = formatHttpRequert($request_data); + + echo(linkcurl($url,'GET',$request_data,[],0)); + } + //查询长效可选游戏 + public function game(){ + $request_data = $_POST; + $url = $this->url_root.'/plan/long/assignable/games'; + + $request_data = formatHttpRequert($request_data); + + echo(linkcurl($url,'GET',$request_data,[],0)); + } + //可选线路数量 + public function linecount(){ + $request_data = $_POST; + $url = $this->url_root.'/plan/long/assignable/line/count'; + + $request_data = formatHttpRequert($request_data); + + echo(linkcurl($url,'GET',$request_data,[],0)); + } + + + //计算价格 + public function calc_price(){ + $data = $_POST; + + $package_model = new PackageModel; + + $price = $package_model->get_price($data); + + echo json_encode($price); + } + +} \ No newline at end of file diff --git a/app/http/controller/User.php b/app/http/controller/User.php new file mode 100644 index 0000000..23c08ea --- /dev/null +++ b/app/http/controller/User.php @@ -0,0 +1,397 @@ +userinfo['UserId'])) { + die; + } + + $user_model = new UserModel; + $this->http_user_info = $user_model->get_http_user($this->userinfo['UserId']); + } + + //获取聚币余额 + public function get_balance() { + $data = $this->http_user_info['ju_money']; + echo json_encode($data); + } + + //获取所有充值订单 + public function charge_list() { + $recharge_model = new RechargeModel; + $where = [ + 'user_id' => $this->userinfo['UserId'], + 'user_id' => $this->userinfo['UserId'], + ]; + + $list = $recharge_model->getListPage($where); + + $pay_type = [ + '2' => '支付宝', + '3' => '微信', + ]; + + foreach ($list as &$info) { + $info['pay_type'] = $pay_type[$info['pay_type']]; + } + + echo json_encode($list); + } + + //短效全部套餐 + public function dx_package() { + $request_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + ]; + $url = $this->url_root.'/user/short/pack/list'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + $list = array_merge($data->d->packs->period,$data->d->packs->unlimited,$data->d->packs->usage); + + foreach ($list as &$info) { + $info->name = HttpOrderEnum::$package_type[ $info->planType]; + $info->durationType2 = $info->durationType; + $info->durationType = HttpOrderEnum::$durationType[ $info->durationType]; + $info->expireTime = date('Y-m-d H:i:s',$info->expireTime); + $info->isExpired = $info->isExpired?'已过期':'未过期'; + $info->ipAmount = $info->ipAmount?:'无限量'; + $info->remainingAmount = $info->remainingAmount?:'无限量'; + } + + $return_data = [ + 'code' => 1, + 'data' => $list, + 'msg' => '', + ]; + + echo json_encode($return_data); + + } + + //短效全部套餐 + public function dx_order() { + $order_model = new OrderModel(); + $order_where = [ + 'package_type' => ['in',HttpOrderEnum::$package_list], + 'order_status' => HttpOrderEnum::$pay_yes, + 'user_id' => $this->userinfo['UserId'] + ]; + $order_list = $order_model->getListPage($order_where); + + foreach ($order_list as &$info) { + $info['order_type'] = HttpOrderEnum::$order_type[$info['order_type']]; + $info['package_type'] = HttpOrderEnum::$package_type[$info['package_type']]; + $info['durationType'] = HttpOrderEnum::$durationType[ $info['durationType']]; + } + + $return_data = [ + 'code' => 1, + 'data' => $order_list, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + //用户短效每日使用情况查询 + public function dx_used() { + $request_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + ]; + $url = $this->url_root.'/user/short/ip/used/summary'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + $return_data = [ + 'code' => 1, + 'data' => $data->d, + 'msg' => '', + ]; + + echo json_encode($return_data); + + } + //用户短效每日使用情况查询 + public function dx_used_log() { + + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + + $request_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + 'page' => isset($request_data['page'])?$request_data['page']:1, + 'limit' => 50, + 'packType' => $request_data['packType'], + ]; + $url = $this->url_root.'/user/short/ip/used/list'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + foreach ($data->d->items as &$info) { + $info->packType = HttpOrderEnum::$package_type[$info->packType]; + $info->createTime = date('Y-m-d H:i:s',$info->createTime); + } + $return_data = [ + 'code' => 1, + 'data' => $data, + 'msg' => '', + ]; + + echo json_encode($return_data); + + } + + //长效ip列表 + public function lang_ip_list() { + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + $url = $this->url_root.'/user/long/ip/list'; + + foreach ($request_data as $key => &$info) { + if (strlen($info) == 0) { + unset($request_data[$key]); + } + } + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $line_status = [ + '1' => '正常', + '0' => '异常', + '9' => '禁用', + ]; + + foreach ($data->d->items as &$info) { + $info->lineType2 = $info->lineType; + $info->lineType = ($info->lineType == 1)?'普通':'优质'; + $info->expireTime = date('Y-m-d H:i:s',$info->expireTime); + $info->shareType2 = $info->shareType; + $info->shareType = ($info->shareType == 1)?'共享':'独享'; + $info->state = $line_status[$info->state]; + } + + $return_data = [ + 'code' => 1, + 'data' => $data, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + //长效全部套餐 + public function cx_package() { + $list = []; + $request_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + ]; + $url = $this->url_root.'/user/long/pack/list'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + $list = array_merge($data->d->packs); + + foreach ($list as &$info) { + $info->isAbroad2 = $info->isAbroad; + $info->isAbroad = HttpOrderEnum::$game_type[ $info->isAbroad]; + $info->expireTime = date('Y-m-d H:i:s',$info->expireTime); + $info->isExpired = $info->isExpired?'已过期':'未过期'; + $info->shareType = ($info->shareType == 1) ?'共享':'独享'; + } + + $return_data = [ + 'code' => 1, + 'data' => $list, + 'msg' => '', + ]; + + echo json_encode($return_data); + + } + + //长效全部订单 + public function cx_order() { + $order_list = []; + $order_model = new OrderModel(); + $order_where = [ + 'package_type' => HttpOrderEnum::$cxyx, + 'order_status' => HttpOrderEnum::$pay_yes, + 'user_id' => $this->userinfo['UserId'] + ]; + $order_list = $order_model->getListPage($order_where); + + foreach ($order_list as &$info) { + $info['order_type'] = HttpOrderEnum::$order_type[$info['order_type']]; + $info['package_type'] = HttpOrderEnum::$package_type[$info['package_type']]; + $info['game_type'] = HttpOrderEnum::$game_type[ $info['game_type']]; + } + + $return_data = [ + 'code' => 1, + 'data' => $order_list, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + //长效ip切换记录 + public function cx_switch() { + ini_set('display_errors', 'off'); + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + + $request_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + 'page' => isset($request_data['page'])?$request_data['page']:1, + 'limit' => 50, + ]; + $url = $this->url_root.'/user/long/switch/ip/log'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + //切换原因,0-系统自动切换,1-失效手动切换,2-免费手动切换,5-管理员免费切换,6-收费手动切换 + $reason = [ + 0 => '系统自动切换,1', + 1 => '失效手动切换,2', + 2 => '免费手动切换', + 5 => '管理员免费切换', + 6 => '收费手动切换', + ]; + + foreach ($data->d->items as &$info) { + $info->createTime = date('Y-m-d H:i:s',$info->createTime); + $info->reason = $reason[$info->reason]; + } + + $return_data = [ + 'code' => 1, + 'data' => $data, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + //用户白名单列表 + public function white_list() { + $list = []; + $request_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + ]; + $url = $this->url_root.'/user/short/whitelist'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + $list = $data->d->items; + + foreach ($list as &$info) { + $info->isLocked = $info->isLocked?'已锁定':'未锁定'; + } + + $return_data = [ + 'code' => 1, + 'data' => $list, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + //用户创建白名单 + public function create_white_ip() { + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + $url = $this->url_root.'/user/short/whitelist/create'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + $return_data = [ + 'code' => 1, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + //用户锁定ip + public function lock_ip() { + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + $url = $this->url_root.'/user/short/whitelist/lock'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + $return_data = [ + 'code' => 1, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + //用户删除ip + public function delete_ip() { + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + $url = $this->url_root.'/user/short/whitelist/delete'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + $return_data = [ + 'code' => 1, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + //提取长效ip + public function get_lang_ip(){ + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + $request_data['ids'] = trim($request_data['ids'],','); + + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + $url = $this->url_root.'/user/long/ip/batch/get'; + + $request_data = formatHttpRequert($request_data); + + echo(linkcurl($url,'GET',$request_data,[],0)); + } + + +} \ No newline at end of file diff --git a/app/http/model/Order.php b/app/http/model/Order.php new file mode 100644 index 0000000..023561b --- /dev/null +++ b/app/http/model/Order.php @@ -0,0 +1,9 @@ + $data['data']['periodType'], + 'isAbroad' => $data['data']['isAbroad'], + 'shareType' => $data['data']['shareType'], + 'isRelayed' => $data['data']['isRelayed'], + 'lineType' => $data['data']['lineType'], + 'bandwidth' => $data['data']['bandwidth'], + 'package_type' => HttpOrderEnum::$cxyx + ]; + if ($data['data']['isAbroad'] == 0) { + unset($where['isRelayed']); + } + if ($data['data']['shareType'] == 1) { + unset($where['lineType']); + } + break; + + } + + $price = $this->getOne($where, 'ipAmount,price'); + return $price; + } +} \ No newline at end of file diff --git a/app/http/model/Recharge.php b/app/http/model/Recharge.php new file mode 100644 index 0000000..5e9e6cc --- /dev/null +++ b/app/http/model/Recharge.php @@ -0,0 +1,9 @@ +getOne(['Id' => $id],'Id,sgUserId,ju_money,is_verify'); + + if (empty($user_info['sgUserId'])) { + $request_data = ['account' => $user_info['Id']]; + $url = $this->url_root.'/register/user'; + + $request_data = formatHttpRequert($request_data); + + $http_data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $update_user_info['sgUserId'] = $user_info['sgUserId'] = $http_data->d->id; + + $this->updateOne(['Id' => $id],$update_user_info); + } + return $user_info; + } +} \ No newline at end of file diff --git a/enum/http/Order.php b/enum/http/Order.php new file mode 100644 index 0000000..6f3c4ce --- /dev/null +++ b/enum/http/Order.php @@ -0,0 +1,60 @@ + '新开', + 2 => '续费', + 3 => '修改IP', + 4 => '储值包', + ]; + public static $new = 1; + public static $rebuy = 2; + public static $change_ip = 3; + public static $charge = 4; + + public static $package_type = [ + 11 => '短效储值包', + 21 => '短效包天', + 22 => '短效包量', + 23 => '短效无限量', + 31 => '长效游戏', + ]; + public static $dxczb = 11; + public static $dxwxl = 23; + public static $dxbt = 21; + public static $dxbl = 22; + public static $cxyx = 31; + public static $package_list = [21,22,23]; + + //有效时长 + public static $durationType = [ + 5 => '1至5分钟', + 25 => '5至25分钟', + 180 => '25至180分钟', + 360 => '3至6小时', + ]; + public static $five = 5; + public static $twfive = 25; + public static $oneet = 180; + public static $tshour = 360; + + public static $order_status = [ + 0 => '未支付', + 1 => '已支付', + ]; + public static $pay_no = 0; + public static $pay_yes = 1; + + public static $game_type = [ + 0 => '国内', + 1 => '国外', + ]; + public static $sataus = [ + 0 => '请求后台失败', + 1 => '请求成功', + ]; + public static $success = 1; + public static $fail = 0; +} diff --git a/extends/alipay/Alipay.php b/extends/alipay/Alipay.php index 2db76a4..94ef7b3 100644 --- a/extends/alipay/Alipay.php +++ b/extends/alipay/Alipay.php @@ -2,7 +2,7 @@ /* * @Author: 万永康 * @Date: 2020-10-11 12:32:50 - * @LastEditTime: 2023-11-11 14:15:28 + * @LastEditTime: 2023-12-06 16:47:16 * @LastEditors: “wanyongkang” “937888580@qq.com” * @Description: In User Settings Edit * @FilePath: /phptest/alipay/Alipay.php @@ -122,6 +122,37 @@ class Alipay return $result; } + + public static function pay_http($param) + { + global $config; + $aop = new \AopClient (); + $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; + $aop->appId = $config['alipay2']['app_id'];; + $aop->rsaPrivateKey = $config['alipay2']['private_key'] ; + $aop->apiVersion = '1.0'; + $aop->signType = 'RSA2'; + $aop->postCharset='utf-8'; + $aop->format='json'; + $aop->alipayrsaPublicKey = $config['alipay2']['public_key']; + + $request = new \AlipayTradePagePayRequest(); + + + + $param = json_encode($param); + + $request->setReturnUrl('http://www.juip.com/product/http'); + + $notifyUrl="http://php-api.juip.com/common/alipay/httalipayverify"; + $request->setNotifyUrl($notifyUrl); + + $request->setBizContent($param); + $result = $aop->pageExecute ( $request); + + return $result; + + } /** * @description: 获取支付返回参数 diff --git a/extends/wechatpay/Wxpay.php b/extends/wechatpay/Wxpay.php index ec44386..d685d22 100644 --- a/extends/wechatpay/Wxpay.php +++ b/extends/wechatpay/Wxpay.php @@ -26,4 +26,21 @@ class Wxpay $url2 = $result["code_url"]; return $url2; } + + public function http_pay($param) { + $notify = new \NativePay(); + $input = new \WxPayUnifiedOrder(); + $input->SetBody("HTTP充值"); + $input->SetOut_trade_no($param['order_no']); + $input->SetTotal_fee($param['money']); + $input->SetTime_start(date("YmdHis")); + $input->SetTime_expire(date("YmdHis", time() + 600)); + $input->SetNotify_url("http://php-api.juip.com/common/wxpay/httpwxpayverify"); + $input->SetTrade_type("NATIVE"); + + $result = $notify->GetPayUrl($input); + + $url2 = $result["code_url"]; + return $url2; + } } diff --git a/fastphp/func/common.php b/fastphp/func/common.php index 81bef64..29c3200 100644 --- a/fastphp/func/common.php +++ b/fastphp/func/common.php @@ -4,8 +4,8 @@ * @version: * @Author: kangkang * @Date: 2020-09-30 17:32:46 - * @LastEditors: Please set LastEditors - * @LastEditTime: 2020-12-07 16:44:09 + * @LastEditors: “wanyongkang” “937888580@qq.com” + * @LastEditTime: 2023-12-26 16:29:17 */ /** * 浏览器友好的变量输出 @@ -221,4 +221,26 @@ function getIp() } } return ($ip); +} + +//格式化http接口的请求函数 +function formatHttpRequert($data){ + //1001 +//f031e77c3055ade88b1db389e85a973a + + $time = time(); + $data['appid'] = 1001; + $data['timestamp'] = $time; + ksort($data); + + $http_request = http_build_query($data); + $http_request =str_replace("%2C", ",", $http_request); + + $sign = md5($http_request.'f031e77c3055ade88b1db389e85a973a'); + + $data ['appid'] = '1001'; + $data ['timestamp'] = $time; + $data ['sign'] = $sign; + + return $data; } \ No newline at end of file