diff --git a/app/common/controller/Alipay.php b/app/common/controller/Alipay.php
index ca66270..7435a87 100644
--- a/app/common/controller/Alipay.php
+++ b/app/common/controller/Alipay.php
@@ -6,6 +6,9 @@ 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;
+use app\jinyou\model\ProductOrder as ProductOrderModel;
+use app\jinyou\model\Account as AccountModel;
+use app\jinyou\model\Package as PackageModel;
class Alipay {
@@ -105,5 +108,59 @@ class Alipay {
echo 'success';
}
+
+ public function jinyoualipayverify() {
+
+ $ali = new AlipaySdk();
+
+ $flag = $ali->payVerify2($_POST);
+
+ if($flag){
+
+ $status = $_POST['trade_status'];
+
+ $flag = false;
+
+ if ($status == 'TRADE_SUCCESS') {
+ $flag = true;
+ }
+
+ if ($flag) {
+
+ $order_model = new ProductOrderModel();
+ $order_no=$_POST['out_trade_no'];
+ $alipay_no = $_POST['trade_no'];
+
+
+
+ //获取充值信息
+ $order_info = $order_model->getOne(['OrderNo'=>$order_no]);
+
+ if (!empty($order_info['TradeNo'])) {
+ die;
+ }
+
+ $update_data = [];
+
+ //更新充值订单
+ $update_data['TradeNo'] = $alipay_no;
+ $update_data['OrderState'] = 90;
+ if($order_model->updateOne(['OrderNo'=>$order_no],$update_data)) {
+ $account_info = json_decode($order_info['remark2']);
+
+ $user_model = new UserModel();
+ $user_info = $user_model->getOne(['Id' => $order_info['UserId']]);
+
+ $package_model = new PackageModel;//套餐详情
+ $package_info = $package_model->getOne(['Id' => $account_info['package_id']]);
+
+ $account_model = new AccountModel;
+ $account_model->open_account($account_info,$user_info,$package_info);
+ }
+ }
+ }
+
+ echo 'success';
+ }
}
\ No newline at end of file
diff --git a/app/common/controller/Wxpay.php b/app/common/controller/Wxpay.php
index 176bff2..253ce16 100644
--- a/app/common/controller/Wxpay.php
+++ b/app/common/controller/Wxpay.php
@@ -5,6 +5,9 @@ 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;
+use app\jinyou\model\ProductOrder as ProductOrderModel;
+use app\jinyou\model\Account as AccountModel;
+use app\jinyou\model\Package as PackageModel;
class Wxpay {
@@ -87,6 +90,57 @@ class Wxpay {
$user_model->updateOne(['Id'=>$order_info['user_id']],$user_update);
+ //处理完成之后,告诉微信成功结果
+ echo '
+
+
+ ';
+ exit();
+ }
+ }
+
+
+ public function jinyouwxpayverify() {
+
+
+ //接收数据
+ $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 ProductOrderModel();
+ $order_no = $data['out_trade_no'];
+ $wx_no = $data['transaction_id'];
+
+ //获取充值信息
+ $order_info = $order_model->getOne(['OrderNo'=>$order_no]);
+
+ if (!empty($order_info['TradeNo'])) {
+ die;
+ }
+
+ //判断算出的签名和通知信息的签名是否一致
+ if($data['result_code'] == 'SUCCESS' && $data['appid'] == 'wx18e5b4f42773c3ec' && $data['mch_id'] == '1571608411'){
+
+ $update_data = [];
+
+ //更新充值订单
+ $update_data['TradeNo'] = $wx_no;
+ $update_data['OrderState'] = 90;
+ $order_model->updateOne(['OrderNo'=>$order_no],$update_data);
+
+ $account_info = json_decode($order_info['remark2']);
+
+ $user_model = new UserModel();
+ $user_info = $user_model->getOne(['Id' => $order_info['UserId']]);
+
+ $package_model = new PackageModel;//套餐详情
+ $package_info = $package_model->getOne(['Id' => $account_info['package_id']]);
+
+ $account_model = new AccountModel;
+ $account_model->open_account($account_info,$user_info,$package_info);
+
+
//处理完成之后,告诉微信成功结果
echo '
diff --git a/app/jinyou/controller/Api.php b/app/jinyou/controller/Api.php
new file mode 100644
index 0000000..8af5c3b
--- /dev/null
+++ b/app/jinyou/controller/Api.php
@@ -0,0 +1,60 @@
+get_package($package_type);
+
+ $data = [
+ 'code' => 1,
+ 'msg' => '',
+ 'data' => $list,
+ ];
+
+ echo json_encode($data);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/jinyou/controller/Jinyoujt.php b/app/jinyou/controller/Jinyoujt.php
new file mode 100644
index 0000000..0ea17b0
--- /dev/null
+++ b/app/jinyou/controller/Jinyoujt.php
@@ -0,0 +1,370 @@
+getOne(['Id' => $this->userinfo['UserId']],'Id,discount_id,RestAmount,TestCountLimit,UseTestCount,is_verify');
+
+ if ($user_info['discount_id'] != 0) {
+ $isset_price = true;
+ if ($user_info['discount_id'] == -1) {
+ $user_price_model = new UserPriceModel;
+ $user_price_list = $user_price_model->getList(['UserId' => $this->userinfo['UserId'],'ProductId' => 28]);
+ foreach ($user_price_list as $info) {
+ $user_price[$info['PackageId']] = $info['UserPrice'];
+ }
+ } else {
+ $scheme_model = new SchemeModel;
+ $discount = $scheme_model->getone(['Id' => $user_info['discount_id']])['discount'];
+ }
+ }
+
+ $package_type = '';
+ if ($info['type'] == 1) {
+ $package_type = '静态';
+ } else if ($info['type'] == 2) {
+ $package_type = '固态';
+ }
+ $package_model = new PackageModel;
+ $list = $package_model->get_package($package_type,$isset_price,$discount,$user_price);
+
+ $data = [
+ 'code' => 1,
+ 'msg' => '',
+ 'data' => $list,
+ ];
+
+ echo json_encode($data);
+ }
+ //创建静态订单
+ public function create_order() {
+ $request_data = json_decode(file_get_contents("php://input"),true)['order_info'];
+
+ $return_data['code'] = 0;
+
+ $request_data['price'] = abs($request_data['price']);
+
+ $user_model = new UserModel;
+ $jinyoujingtai = new Jinyoujingtai;
+ $package_model = new PackageModel;
+ $user_update_info = [];
+
+ $user_info = $user_model->getOne(['Id' => $this->userinfo['UserId']]);
+
+
+ //套餐详情
+ $package_info = $package_model->getOne(['Id' => $request_data['package_id']]);
+
+ $user_price_model = new UserPriceModel;
+ $package_info['Price'] = $user_price_model->get_user_price($user_info['Id'],$user_info['discount_id'],$package_info);
+
+ //判读测试卡是否需要付钱
+ if ($package_info['IsTest'] == 1 && (($user_info['TestCountLimit']!=0 && $user_info['TestCountLimit']<=$user_info['UseTestCount']) || ($user_info['TestCountLimit'] ==0 && $user_info['UseTestCount']>2))) {
+ $package_info['Price'] = 1.00;
+ } else if($package_info['IsTest'] == 1) {
+ $request_data['buy_num'] = 1;
+ $account_info['product_info'] = [];
+ $user_update_info['UseTestCount'] = $user_info['UseTestCount'] + 1;
+ $user_model->updateOne(['Id'=>$this->userinfo['UserId']],$user_update_info);
+ }
+
+ //计算实际需要支付的金额
+ $OrderAmount = abs($package_info['Price'] * $request_data['buy_num']);
+
+ //判断价格是否正确
+ if ($OrderAmount != $request_data['price']) {
+ $return_data['code'] = -1;
+ $return_data['msg'] = "价格有误,请联系客服!";
+ }
+
+ //判断是否实名
+ if ($user_info['is_verify'] != 1) {
+ $return_data['code'] = -1;
+ $return_data['msg'] = "请前往实名!";
+ }
+
+ //判断余额是否足够支付
+ if ($request_data['pay_type'] == 1 && $user_info['RestAmount'] < $request_data['price']) {
+ $return_data['code'] = -1;
+ $return_data['msg'] = "余额不足!";
+ }
+
+ //判断账号是否存在
+ $exist = $jinyoujingtai::checkVpnAccountExists($request_data['account'],$request_data['type']);
+ if($exist->code != 200){
+ $return_data['code'] = -1;
+ $return_data['msg'] = "账号已经存在!";
+ }
+
+ //判断连接数
+ if ($request_data['buy_num'] < 1) {
+ $return_data['code'] = -1;
+ $return_data['msg'] = "账号数量至少为1!";
+ }
+
+ if ($return_data['code'] == -1) {
+ echo json_encode($return_data);
+ die;
+ }
+
+ //获取产品信息
+ $product_model = new ProductModel;
+
+ $product_info = $product_model->getOne(['Id' => $package_info['ProductId']]);
+
+ $package_info['ProductName'] = $product_info['Name'];
+
+ $order_no = 'xk'.time().rand(100,999);
+
+ $order_enum = new OrderEnum;
+
+ //判断新开类型
+ $OrderType = $order_enum::$New;
+ if ($request_data['buy_num'] > 1) {
+ $OrderType = $order_enum::$News;
+ }
+
+ $OtherPayAmount = 0;
+ $AccountPayAmount = 0;
+
+ if ($request_data['pay_type'] == $order_enum::$Balance) {
+ $AccountPayAmount = $OrderAmount;
+ } else {
+ $OtherPayAmount = $OrderAmount;
+ }
+
+ $time = date('Y-m-d H:i:s',time());
+ $endtime = date("Y-m-d H:i:s",strtotime("+30 day"));
+
+ $order_info = [
+ 'TenantId' => 0,
+ 'UserId' => $user_info['Id'],
+ 'UserName' => $user_info['LoginCode'],
+ 'ProductId' => $package_info['ProductId'],
+ 'ProductName' => $product_info['Name'],
+ 'PackageId' => $package_info['Id'],
+ 'PackageName' => $package_info['Name'],
+ 'CouponId' => 0,
+ 'OrderName' => $package_info['Name'],
+ 'OrderNo' => $order_no,
+ 'OrderState' => $order_enum::$NoPay,
+ 'OrderType' => $OrderType,
+ 'PayType' => $request_data['pay_type'],
+ 'PayState' => 0,
+ 'ConnectCount' => 1,
+ 'OrderAmount' => $OrderAmount,
+ 'PaymentAmount' => $OrderAmount,
+ 'OtherPayAmount' => $OtherPayAmount,
+ 'AccountPayAmount' => $AccountPayAmount,
+ 'CouponAmount' => 0,
+ 'DayPrice' => $package_info['DayPrice'],
+ 'DayCount' => $package_info['DayCount'],
+ 'RefundCount' => 0,
+ 'RefundAmount' => 0,
+ 'ClientType' => 0,
+ 'ChannelType' => 0,
+ 'CreateTime' => $time,
+ 'UpdateTime' => $time,
+ 'Accounts' => $request_data['account'],
+ 'AccountCount' => $request_data['buy_num'],
+ 'AccountPwd' => $request_data['password'],
+ 'DeleteTag' => 0,
+ 'StartTime' => $time,
+ 'EndTime' => $endtime,
+ 'IsAutoRefund' => $product_info['AutoRefund'],
+ 'BackAmount' => 0,
+ 'remark2' => json_encode($request_data)
+ ];
+
+ $order_model = new ProductOrderModel;
+
+ //用户余额
+ $old_balance = $rest_money = $user_info['RestAmount'];
+
+ if ($request_data['pay_type'] == $order_enum::$Balance) {
+ //判断余额是否足够
+ if ($old_balance < $OrderAmount) {
+ $return_data['code'] = -1;
+ $return_data['msg'] = "余额不足!";
+ echo json_encode($return_data);
+ die;
+ } else {
+ $rest_money -= $OrderAmount;
+ $rest_data = [
+ 'RestAmount' => $rest_money
+ ];
+ if ($user_model->updateOne(['Id'=>$this->userinfo['UserId'],'RestAmount'=>$old_balance],$rest_data) || $OrderAmount == 0) {
+ $score_model = new UserScore;
+ $score_data = [
+ 'TenantId'=>0,
+ 'UserId' => $this->userinfo['UserId'],
+ 'ScoreType' => '6',
+ 'ScoreTypeName' => '购买水滴',
+ 'ScoreValue' => $OrderAmount,
+ 'UserName' => $user_info['Phone'],
+ 'OperateUserName' => $user_info['LoginCode'],
+ 'RestAmount1' => $old_balance,
+ 'RestAmount2' => $rest_money,
+ 'DeleteTag'=>0,
+ 'CreateTime' => date('Y-m-d H:i:s'),
+ 'UpdateTime' => date('Y-m-d H:i:s'),
+ ];
+ $score_model->add($score_data);
+
+ $order_info['OrderState'] = $order_enum::$Complete;
+ //添加订单
+ $order_model->add($order_info);
+
+ $account_model = new AccountModel;
+ $return_data = $account_model->open_account($request_data,$user_info,$package_info);
+ echo json_encode($return_data);
+ } else {
+ $return_data['code'] = -1;
+ $return_data['msg'] = "余额不足!";
+ echo json_encode($return_data);
+ die;
+ }
+ }
+ } else if($request_data['pay_type'] == $order_enum::$Wechat) {
+ $param = [
+ 'out_trade_no' => $order_model['order_no'],
+ 'total_amount' => $OrderAmount,
+ 'subject' => '购买水滴',
+ 'product_code' => 'FAST_INSTANT_TRADE_PAY',
+ 'timeout_express' => '30m',
+ ];
+
+
+ $pay_html = Alipay::pay_jinyou($param);
+ $info = [
+ 'code'=>2,
+ 'data' => $pay_html
+ ];
+ echo json_encode($info);
+ } else if($request_data['pay_type'] == $order_enum::$Ali) {
+ //微信支付
+ $wxpay = new Wxpay();
+
+ $param = [
+ 'username' => $this->userinfo['LoginName'],
+ 'money' => $OrderAmount*100,
+ 'order_no' => $order_model['order_no'],
+ ];
+ $url = $wxpay->http_pay($param);
+
+ $info = [
+ 'code'=>3,
+ 'data' => $url
+ ];
+ echo json_encode($info);
+ }
+
+ }
+
+ //获取剩余的节点
+ public function address_margin(){
+ $account_id = json_decode(file_get_contents("php://input"),true)['data'];
+
+ $account_model = new AccountModel;
+ $product_shuidi_id = 0;
+ $game_id = 0;
+ $is_unshar = 0;
+
+ $where = [
+ 'Id' => $account_id,
+ ];
+
+ $account_info = $account_model->getOne($where);
+
+ $game_id = $account_info['game_id'];
+
+ $package_info = explode('-',$account_info['PackageName']);
+
+ if ($package_info[0] == "静态") {
+ $product_shuidi_id = 1;
+ } else {
+ $product_shuidi_id = 2;
+ }
+ if ($package_info[1] == "线路") {
+ $is_unshar = 1;
+ } else {
+ $is_unshar = 0;
+ }
+
+ $jinyoujingtai = new Jinyoujingtai;
+
+ $data = $jinyoujingtai::regionSurplusOuts($product_shuidi_id,$is_unshar,$game_id);
+
+ echo json_encode($data);
+ }
+
+ //获取可切换的ip
+ public function change_ip_list() {
+ $info = json_decode(file_get_contents("php://input"),true)['data'];
+ $jinyoujingtai = new Jinyoujingtai;
+
+ $data = $jinyoujingtai::switchIpList(121,$info['account'],$info['type']);
+
+ echo json_encode($data);
+
+ }
+
+
+ //切换的ip
+ public function change_ip() {
+ $info = json_decode(file_get_contents("php://input"),true)['data'];
+ $jinyoujingtai = new Jinyoujingtai;
+
+ $account_model = new AccountModel;
+ $where = [
+ 'ProductId' => 28,
+ 'Account' => $info['chinge_addr']['account'],
+ 'Status' => 1,
+ 'DeleteTag' => 0,
+ ];
+
+ if ($info['chinge_addr']['rid'] != 0 ) {
+ $data = $jinyoujingtai::changeRegion(121,$info['chinge_addr']['province_id'],$info['chinge_addr']['rid'],$info['chinge_addr']['account'],$info['chinge_addr']['type']);
+ }
+
+ if ($info['chinge_ip']['ip_id'] != 0 ) {
+ $data = $jinyoujingtai::saveSwitchIp(121,$info['chinge_ip']['account'],$info['chinge_ip']['type'],$info['chinge_ip']['ip_id']);
+ }
+
+ $shuidi_account_data = $jinyoujingtai::accountInfo(121,$info['chinge_ip']['account'],$info['chinge_ip']['type']);
+
+ $update_data = [
+ 'Remark' => $shuidi_account_data->data->region.$shuidi_account_data->data->address,
+ 'Raw' => $shuidi_account_data->data->inlet_website,
+ ];
+ $account_model->updateOne($where,$update_data);
+
+ echo json_encode(['code' => 1]);
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/jinyou/model/Account.php b/app/jinyou/model/Account.php
new file mode 100644
index 0000000..850e1db
--- /dev/null
+++ b/app/jinyou/model/Account.php
@@ -0,0 +1,74 @@
+$add_city) {
+ if ($add_city == 0) {
+ unset($account_info['product_info'][$key]);
+ }
+ }
+
+ $package_origin = explode('-',$package_info['OriginKey']);
+ $api_data = $jinyou::createStatic($package_origin['3'],$account_info['game_id'],$account_info['account'],$account_info['password'],$account_info['buy_num'],121,$package_origin['0'],$package_origin['1'],$package_origin['2'],'',$account_info['product_info']);
+
+ $account_list = [];
+ if ($api_data->code == 200) {
+ $account_enum = new AccountEnum;
+
+ $account_type = $account_enum::$New;
+ if ($package_info['IsTest'] == 1) {
+ $account_type = $account_enum::$Test;
+ } else if ($account_info['buy_num'] > 1) {
+ $account_type = $account_enum::$News;
+ }
+ foreach ($api_data->data as $account) {
+
+ $account = [
+ 'TenantId' => 0,
+ 'UserId' => $user_info['Id'],
+ 'UserCode' => $user_info['LoginCode'],
+ 'ProductId' => $package_info['ProductId'],
+ 'ProductName' => $package_info['ProductName'],
+ 'PackageId' => $package_info['Id'],
+ 'PackageName' => $package_info['Name'],
+ 'AccountType' => $account_type,
+ 'Account' => $account->user,
+ 'Pwd' => $account->passwd,
+ 'ConnectCount' => $account->conn_max,
+ 'StartTime' => date('Y-m-d H:i:s',$account->add_time),
+ 'EndTime' => date('Y-m-d H:i:s',$account->end_time),
+ 'Status' => $account_enum::$Normal,
+ 'ChargeStatus' => $account_enum::$Success,
+ 'CreateTime' => date('Y-m-d H:i:s',time()),
+ 'UpdateTime' => date('Y-m-d H:i:s',time()),
+ 'DeleteTag' => 0,
+ 'Remark' => $account->region.$account->address,
+ 'Raw' => $account->inlet_website,
+ 'game_id' => $account->game_id,
+ ];
+ $account_list[] = $account;
+ }
+ $this->addAll($account_list);
+ $return_data['code'] = 1;
+ $return_data['msg'] = "账号开通成功!";
+ } else {
+ $return_data['code'] = -1;
+ $return_data['msg'] = "账号开通失败!请联系客服";
+ }
+ return $return_data;
+ }
+
+}
diff --git a/app/jinyou/model/Package.php b/app/jinyou/model/Package.php
new file mode 100644
index 0000000..4339b58
--- /dev/null
+++ b/app/jinyou/model/Package.php
@@ -0,0 +1,68 @@
+getList($where,'*', 'id asc');
+
+ $list = [];
+
+ foreach ($package_list as $package) {
+ $package_info = explode('-',$package['OriginName']);
+
+ //判断价格
+ if ($isset_price) {
+ $price = 1000000;
+ $package_price = $package['Price'];
+ if ($discount != 0) {
+ $price = $package['LinePrice'] * $discount / 100;
+ } else {
+ if (!empty($user_price)) {
+ if ($package['Id'] == $user_price['PackageId']) {
+ $price = $user_price['UserPrice'];
+ }
+ }
+ }
+ //判读最低价
+ if ($price < $package['MinPrice']) {
+ $price = $package['MinPrice'];
+ }
+ if ($price < $package_price) {
+ $package['Price'] = $price;
+ }
+ }
+
+ if (isset($package_info[3])) {
+ $package['package_name'] = $package_info[3];
+ } else {
+ $package['package_name'] = '1小时';
+ }
+
+ if($package_info[1] == "游戏") {
+ $package_info[1] = 'game';
+ }
+ if($package_info[1] == "线路") {
+ $package_info[1] = 'line';
+ }
+ if ($package_info[2] == '测试') {
+ $package_info[2] = 'test';
+ }
+ $list[$package_info[1]][$package_info[2]][] = $package;
+ }
+ return $list;
+ }
+}
\ No newline at end of file
diff --git a/app/jinyou/model/PriceScheme.php b/app/jinyou/model/PriceScheme.php
new file mode 100644
index 0000000..c27e0a3
--- /dev/null
+++ b/app/jinyou/model/PriceScheme.php
@@ -0,0 +1,11 @@
+getOne(['UserId' => $user_id,'PackageId' => $package_info['Id']])['UserPrice'];
+ } else {
+ $scheme_model = new PriceScheme;
+ $discount = $scheme_model->getone(['Id' => $discount])['discount'];
+ $price = $package_info['LinePrice'] * $discount / 100;
+ }
+ //判读最低价
+ if ($price < $package_info['MinPrice']) {
+ $price = $package_info['MinPrice'];
+ }
+ if ($price < $package_info['Price']) {
+ $package_info['Price'] = $price;
+ }
+ }
+
+ return $package_info['Price'];
+ }
+
+}
diff --git a/enum/account/ProductAccount.php b/enum/account/ProductAccount.php
index 4818f1a..871ec56 100644
--- a/enum/account/ProductAccount.php
+++ b/enum/account/ProductAccount.php
@@ -4,8 +4,8 @@
* @version:
* @Author: kangkang
* @Date: 2020-10-22 15:35:49
- * @LastEditors: kangkang
- * @LastEditTime: 2020-11-18 10:41:10
+ * @LastEditors: “wanyongkang” “937888580@qq.com”
+ * @LastEditTime: 2024-01-27 14:42:08
*/
namespace enum\account;
@@ -26,4 +26,25 @@ class ProductAccount
public static $AgainBuys = 4;
public static $Origin = 100;
public static $Test = 200;
+
+ public static $status = [
+ 1 => '正常',
+ 2 => '退款',
+ ];
+
+ public static $Normal = 1;
+ public static $Refund = 2;
+
+ public static $ChargeStatus = [
+ 1 => '成功',
+ 2 => '失败',
+ 3 => '关闭',
+ 4 => '超时',
+ ];
+
+ public static $Success = 1;
+ public static $Fail = 2;
+ public static $Close = 3;
+ public static $Outtime = 4;
+
}
diff --git a/extends/alipay/Alipay.php b/extends/alipay/Alipay.php
index e121245..241bb21 100644
--- a/extends/alipay/Alipay.php
+++ b/extends/alipay/Alipay.php
@@ -2,7 +2,7 @@
/*
* @Author: 万永康
* @Date: 2020-10-11 12:32:50
- * @LastEditTime: 2024-01-13 17:52:59
+ * @LastEditTime: 2024-01-27 16:19:49
* @LastEditors: “wanyongkang” “937888580@qq.com”
* @Description: In User Settings Edit
* @FilePath: /phptest/alipay/Alipay.php
@@ -153,6 +153,36 @@ class Alipay
return $result;
+ }
+ public static function pay_jinyou($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/user/myaccounts');
+
+ $notifyUrl="http://php-api.juip.com/common/alipay/jinyoualipayverify";
+ $request->setNotifyUrl($notifyUrl);
+
+ $request->setBizContent($param);
+ $result = $aop->pageExecute ( $request);
+
+ return $result;
+
}
/**
diff --git a/extends/jinyouapi/Jinyoujingtai.php b/extends/jinyouapi/Jinyoujingtai.php
new file mode 100644
index 0000000..9db1316
--- /dev/null
+++ b/extends/jinyouapi/Jinyoujingtai.php
@@ -0,0 +1,565 @@
+ $phone,
+ 'cn_name' => $cn_name,
+ 'cn_id' => $cn_id,
+ 't_id' => $t_id,
+ ];
+
+ $res = self::send_post('create-third-user', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 获取当前账户的可用余额
+ * @return @json
+ */
+ public static function getMyPoint()
+ {
+ $res = self::send_post('get-my-point', []);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 检查VPN账户是否存在
+ * @param string $user vpn账户
+ * @param int $type 类型,0:静态;1:专线;
+ */
+ public static function checkVpnAccountExists($user, $type)
+ {
+ $data = [
+ 'user' => $user,
+ 'type' => $type
+ ];
+
+ $res = self::send_post('check-vpn-account-exists', $data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 踢线
+ * @param string $user VPN账户
+ * @param int $type 类型,0:静态;1:专线;
+ */
+ public static function kickOffLine($user, $type)
+ {
+ $data = [
+ 'user' => $user,
+ 'type' => $type
+ ];
+
+ $res = self::send_post('kick-off-line', $data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 上传用户手持身份证照片
+ * 文件大小限制为不超过3M,支持格式为:jpg,jpeg,bmp,webp,png
+ * @param $t_id mixed 接入方平台中客户唯一的身份标识
+ * @param $upload_img mixed 这里是以thinkphp为示例,实例的ThinkFile($file_path)对象
+ * 在CURLFILE(string $filename, string|null $mime_type = '', string|null $posted_filename = '')中你可以直接使用绝对地址,请勿使用网络地址。
+ * @return @json
+ */
+ public static function uploadExamineFile($t_id, $upload_img)
+ {
+ $post_data = array(
+ 't_id' => $t_id,
+ 'upload_img' => new \CURLFile($upload_img->getRealPath(), $upload_img->getMime(), 'up.jpg'),
+ );
+
+ $res = self::send_post('upload-examine-file', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * * 查询第三方接入用户状态
+ * @param $t_id 接入方平台中客户唯一的身份标识,整型 数字范围1-999999999
+ * @return @json
+ */
+ public static function examineStatus($t_id)
+ {
+ $post_data = [
+ 't_id' => $t_id,
+ ];
+
+ $res = self::send_post('examine-status', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 开启白名单,涉及到用户需要使用到娱乐应用软件,例如:微信,抖音,均需要开启白名单
+ * @param $user string vpn账户
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ * @param $t_id int 接入方平台中客户唯一的身份标识,整型 数字范围1-999999999
+ * @return @json
+ */
+ public static function setFirewallStatus($user, $type, $t_id)
+ {
+ $post_data = [
+ 'user' => $user,
+ 'type' => $type,
+ 't_id' => $t_id
+ ];
+
+ $res = self::send_post('set-firewall-status', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * * 获取VPN账户列表
+ * @param $page int 当前分页
+ * @param $page_size int 分页条目数 1-100
+ * @param $t_id int 接入方客户唯一值UID用于查询客户账号列表、0或缺省则查询当前应用下全部客户账号,非必填字段
+ * @param $user string vpn账户
+ * @return @json
+ */
+ public static function userList($type, $page, $page_size, $t_id = null, $user = "")
+ {
+ $post_data = [
+ 'type' => $type,
+ 't_id' => $t_id,
+ 'user' => $user,
+ 'page' => $page,
+ 'page_size' => $page_size,
+ ];
+
+ $res = self::send_post('user-list', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 拉取已对接的产品ID
+ * @param $type int 产品分类 0:静态;1:专线 非必填
+ * @param $is_unshar int 产品类型 0:游戏独享;1:线路独享 非必填
+ */
+ public static function productList($type = 0, $is_unshar = 0)
+ {
+ $post_data = [
+ 'type' => $type
+ ];
+
+ $res = self::send_post('product-list', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 游戏列表
+ */
+ public static function gameList()
+ {
+ $post_data = [
+
+ ];
+
+ $res=self::send_post('game-list', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 获取所有静态服务器列表
+ * @param $area string 区域查询,可为空,例如:"福建"
+ * @return @json
+ */
+ public static function getStaticNodeList($area = '')
+ {
+ $post_data = [
+ 'area' => $area
+ ];
+
+ $res = self::send_post('static-node-list', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 创建静态VPN账户
+ * @param int $days 时长,通过已对接产品接口获取
+ * @param int $game_id 游戏ID,通过游戏列表接口获取,线路独享时可以传空
+ * @param string $account 自定义VPN账户,当存在自定义账户时且购买数量大于,则账户末尾会追加数量序号,例如账号为abc,数量为3,则会生成abc1-3
+ * @param string $passwd 自定义VPN密码
+ * @param string $nums 购买数量
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param int $product_id 产品大类ID,通过已对接产品接口获取
+ * @param int $product_sub_id 产品小类ID,通过已对接产品接口获取
+ * @param int $product_item_id 产品ID,通过已对接产品接口获取
+ * @param string $remark 备注
+ * @param array $product_info
+ */
+ public static function createStatic($days, $game_id, $account, $passwd, $nums, $t_id, $product_id, $product_sub_id, $product_item_id, $remark = '', $product_info = [])
+ {
+ $post_data = [
+ 'days' => $days,
+ 'product_item_id' => $product_item_id,
+ 'product_id' => $product_id,
+ 'product_sub_id' => $product_sub_id,
+ 'nums' => $nums,
+ 't_id' => $t_id,
+ 'game_id' => $game_id,
+ 'account' => $account,
+ 'passwd' => $passwd,
+ 'remark' => $remark
+ ];
+
+ if (!empty($product_info)) {
+ $post_data ['product_info'] = json_encode($product_info);
+ }
+
+ $res = self::send_post('create-vpn-user', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 创建专线VPN账户
+ * @param int $days 时长,通过已对接产品接口获取
+ * @param int $game_id 游戏ID,通过游戏列表接口获取,线路独享时可以传空
+ * @param string $account 自定义VPN账户,当存在自定义账户时且购买数量大于,则账户末尾会追加数量序号,例如账号为abc,数量为3,则会生成abc1-3
+ * @param string $passwd 自定义VPN密码
+ * @param string $nums 购买数量
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param int $product_id 产品大类ID,通过已对接产品接口获取
+ * @param int $product_sub_id 产品小类ID,通过已对接产品接口获取
+ * @param int $product_item_id 产品ID,通过已对接产品接口获取
+ * @param string $remark 备注
+ * @param array $product_info
+ */
+ public static function createFixed($days, $game_id, $account, $passwd, $nums, $t_id, $product_id, $product_sub_id, $product_item_id, $product_info = [])
+ {
+ $post_data = [
+ 'days' => $days,
+ 'product_item_id' => $product_item_id,
+ 'product_id' => $product_id,
+ 'product_sub_id' => $product_sub_id,
+ 'nums' => $nums,
+ 't_id' => $t_id,
+ 'game_id' => $game_id,
+ 'account' => $account,
+ 'passwd' => $passwd
+ ];
+
+ if (!empty($product_info)) {
+ $post_data ['product_info'] = json_encode($product_info);
+ }
+
+ $res = self::send_post('create-vpn-user', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 静态账户续费
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param string $account 要续费的VPN账户
+ * @param int $product_id 产品大类ID,通过已对接产品接口获取
+ * @param int $product_sub_id 产品小类ID,通过已对接产品接口获取
+ * @param int $product_item_id 产品ID,通过已对接产品接口获取
+ * @param int $days 时长,通过已对接产品接口获取
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function staticAccountRenew($t_id, $account, $product_id, $product_sub_id, $product_item_id, $days, $type = 0)
+ {
+ $post_data = [
+ 'days' => $days,
+ 'product_item_id' => $product_item_id,
+ 'product_id' => $product_id,
+ 'product_sub_id' => $product_sub_id,
+ 't_id' => $t_id,
+ 'account' => $account,
+ 'type' => $type
+ ];
+
+ $res = self::send_post('account-renew', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 专线账户续费
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param string $account 要续费的VPN账户
+ * @param int $product_id 产品大类ID,通过已对接产品接口获取
+ * @param int $product_sub_id 产品小类ID,通过已对接产品接口获取
+ * @param int $product_item_id 产品ID,通过已对接产品接口获取
+ * @param int $days 时长,通过已对接产品接口获取
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function fixedAccountRenew($t_id, $account, $product_id, $product_sub_id, $product_item_id, $days, $type = 1)
+ {
+ $post_data = [
+ 'days' => $days,
+ 'product_item_id' => $product_item_id,
+ 'product_id' => $product_id,
+ 'product_sub_id' => $product_sub_id,
+ 't_id' => $t_id,
+ 'account' => $account,
+ 'type' => $type
+ ];
+
+ $res = self::send_post('account-renew', $post_data);
+
+ return json_decode($res);
+ }
+
+
+ /**
+ * 获取地区剩余线路
+ * @param int $product_id 产品ID
+ * @param int $is_unshar 游戏独享0,线路独享1
+ * @param int $game_id 游戏ID
+ */
+ public static function regionSurplusOuts($product_id, $is_unshar, $game_id)
+ {
+ $post_data = [
+ 'product_id' => $product_id,
+ 'is_unshar' => $is_unshar,
+ 'game_id' => $game_id
+ ];
+
+ $res = self::send_post('region-surplus-outs', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 切换地区
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param int $province_id 区域ID
+ * @param int $rid 地区编码
+ * @param string $account VPN账户
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function changeRegion($t_id, $province_id, $rid, $account, $type = 0)
+ {
+ $post_data = [
+ 't_id' => $t_id,
+ 'province_id' => $province_id,
+ 'rid' => $rid,
+ 'account' => $account,
+ 'type' => $type
+ ];
+
+ $res = self::send_post('change-region', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 修改VPN账户备注
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param string $remark 备注
+ * @param string $account VPN账户
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function editRemark($t_id, $remark, $account, $type = 0)
+ {
+ $post_data = [
+ 't_id' => $t_id,
+ 'remark' => $remark,
+ 'account' => $account,
+ 'type' => $type
+ ];
+
+ $res = self::send_post('edit-remark', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 修改VPN账户密码
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param string $new_password 新密码
+ * @param string $account VPN账户
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function editPassword($t_id, $new_password, $account, $type = 0)
+ {
+ $post_data = [
+ 't_id' => $t_id,
+ 'passwd' => $new_password,
+ 'account' => $account,
+ 'type' => $type
+ ];
+
+ $res = self::send_post('edit-password', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 账户在线状态
+ * @param string $account VPN账户 多账户以英文状态下逗号连接,例如:account1,account2
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function accountIsOnline($account, $type = 0)
+ {
+ $post_data = [
+ 'account' => $account,
+ 'type' => $type
+ ];
+
+ $res = self::send_post('account-is-online', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 获取可切换IP列表
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param string $account VPN账户
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function switchIpList($t_id, $account, $type = 0)
+ {
+ $post_data = [
+ 'account' => $account,
+ 'type' => $type,
+ 't_id' => $t_id
+ ];
+
+ $res = self::send_post('switch-ip-list', $post_data);
+
+ return json_decode($res);
+ }
+
+ /**
+ * 保存切换的IP
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param string $account VPN账户
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function saveSwitchIp($t_id, $account, $type = 0, $ip_id)
+ {
+ $post_data = [
+ 'account' => $account,
+ 'type' => $type,
+ 't_id' => $t_id,
+ 'ip_id' => $ip_id
+ ];
+
+ $res = self::send_post('save-switch-ip', $post_data);
+
+ return json_decode($res);
+ }
+
+
+ /**
+ * 获取账号信息
+ * @param int $t_id 第三方身份唯一标识符号
+ * @param string $account VPN账户
+ * @param $type int 账户类型,0:静态账户;1:专线账户
+ */
+ public static function accountInfo($t_id, $account, $type = 0)
+ {
+ $post_data = [
+ 'account' => $account,
+ 'type' => $type,
+ 't_id' => $t_id,
+ ];
+
+ $res = self::send_post('account-info', $post_data);
+
+ return json_decode($res);
+ }
+}
\ No newline at end of file
diff --git a/extends/wechatpay/Wxpay.php b/extends/wechatpay/Wxpay.php
index d685d22..0c28b7d 100644
--- a/extends/wechatpay/Wxpay.php
+++ b/extends/wechatpay/Wxpay.php
@@ -43,4 +43,21 @@ class Wxpay
$url2 = $result["code_url"];
return $url2;
}
+
+ public function jinyou_pay($param) {
+ $notify = new \NativePay();
+ $input = new \WxPayUnifiedOrder();
+ $input->SetBody("购买水滴");
+ $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/jinyouwxpayverify");
+ $input->SetTrade_type("NATIVE");
+
+ $result = $notify->GetPayUrl($input);
+
+ $url2 = $result["code_url"];
+ return $url2;
+ }
}