浏览代码

Merge branch 'master' into master

Bruskyii Panda 7 年之前
父节点
当前提交
7331a1540c

+ 98 - 68
app/Components/Trimepay.php

@@ -1,101 +1,131 @@
 <?php
 <?php
+
 namespace App\Components;
 namespace App\Components;
 
 
-class Trimepay {
+class Trimepay
+{
     private $appId;
     private $appId;
     private $appSecret;
     private $appSecret;
+
     /**
     /**
-	 * 签名初始化
-	 * @param merKey	签名密钥
-	 */
-	public function __construct($appId, $appSecret) {
-	    $this->appId = $appId;
+     * 签名初始化
+     *
+     * @param string $appId     appId
+     * @param string $appSecret appSecret
+     */
+    public function __construct($appId, $appSecret)
+    {
+        $this->appId = $appId;
         $this->appSecret = $appSecret;
         $this->appSecret = $appSecret;
         //国内
         //国内
-		// $this->gatewayUri = 'https://api.ecy.es/gateway/pay/go';
+        // $this->gatewayUri = 'https://api.ecy.es/gateway/pay/go';
         // $this->refundUri = 'https://api.ecy.es/gateway/refund/go';
         // $this->refundUri = 'https://api.ecy.es/gateway/refund/go';
         //国外
         //国外
-		$this->gatewayUri = 'https://api.trimepay.com/gateway/pay/go';
+        $this->gatewayUri = 'https://api.trimepay.com/gateway/pay/go';
         $this->refundUri = 'https://api.trimepay.com/gateway/refund/go';
         $this->refundUri = 'https://api.trimepay.com/gateway/refund/go';
-	}
-	
-	/**
-	 * @name	准备签名/验签字符串
-	 */
-	public function prepareSign($data) {
-		ksort($data);
-		return http_build_query($data);
-	}
-	/**
-	 * @name	生成签名
-	 * @param	sourceData
-	 * @return	签名数据
-	 */
-	public function sign($data) {
-		$signature = strtolower(md5(md5($data).$this->appSecret));
-		return $signature;
-	}
-	/*
-	 * @name	验证签名
-	 * @param	signData 签名数据
-	 * @param	sourceData 原数据
-	 * @return
-	 */
-	public function verify($data, $signature) {
-		$mySign = $this->sign($data);
-		if ($mySign === $signature) {
-			return true;
-		} else {
-			return false;
-		}
-	}
-    
-    public function post($data, $url = ''){
-        if($url == '') {
+    }
+
+    /**
+     * 准备签名
+     *
+     * @param array $data 验签字符串
+     *
+     * @return string
+     */
+    public function prepareSign($data)
+    {
+        ksort($data);
+
+        return http_build_query($data);
+    }
+
+    /**
+     * 生成签名
+     *
+     * @param string $data 签名数据
+     *
+     * @return string
+     */
+    public function sign($data)
+    {
+        $signature = strtolower(md5(md5($data) . $this->appSecret));
+
+        return $signature;
+    }
+
+    /**
+     * 验证签名
+     *
+     * @param string $data      签名数据
+     * @param string $signature 原数据
+     *
+     * @return bool
+     */
+    public function verify($data, $signature)
+    {
+        $mySign = $this->sign($data);
+        if ($mySign === $signature) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public function post($data, $url = '')
+    {
+        if ($url == '') {
             $url = $this->gatewayUri;
             $url = $this->gatewayUri;
         }
         }
         $curl = curl_init();
         $curl = curl_init();
-		curl_setopt($curl, CURLOPT_URL, $url);
-		curl_setopt($curl, CURLOPT_HEADER, 0);
-		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
-		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
-		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
-		curl_setopt($curl, CURLOPT_POST, 1);
-		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
-		$data = curl_exec($curl);
-		curl_close($curl);
-		return json_decode($data, true);
+        curl_setopt($curl, CURLOPT_URL, $url);
+        curl_setopt($curl, CURLOPT_HEADER, 0);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
+        curl_setopt($curl, CURLOPT_POST, 1);
+        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
+        $data = curl_exec($curl);
+        curl_close($curl);
+
+        return json_decode($data, true);
     }
     }
 
 
-    public function pay($type, $tradeNo, $totalFee, $notifyUrl = '', $returnUrl = ''){
+    public function pay($type, $tradeNo, $totalFee, $notifyUrl = '', $returnUrl = '')
+    {
         $payData = [
         $payData = [
-            'appId' => $this->appId,
+            'appId'           => $this->appId,
             'merchantTradeNo' => $tradeNo,
             'merchantTradeNo' => $tradeNo,
-            'totalFee' => $totalFee * 100,
-            'notifyUrl' => $notifyUrl,
-            'returnUrl' => $returnUrl,
-            'payType' => $type
+            'totalFee'        => $totalFee * 100,
+            'notifyUrl'       => $notifyUrl,
+            'returnUrl'       => $returnUrl,
+            'payType'         => $type
         ];
         ];
         $signData = $this->prepareSign($payData);
         $signData = $this->prepareSign($payData);
         $payData['sign'] = $this->sign($signData);
         $payData['sign'] = $this->sign($signData);
         $response = $this->post($payData);
         $response = $this->post($payData);
+
         return $response;
         return $response;
     }
     }
-    
-    public function refund($merchantTradeNo) {
+
+    public function refund($merchantTradeNo)
+    {
         $params['merchantTradeNo'] = $merchantTradeNo;
         $params['merchantTradeNo'] = $merchantTradeNo;
         $params['appId'] = $this->appId;
         $params['appId'] = $this->appId;
         $prepareSign = $this->prepareSign($params);
         $prepareSign = $this->prepareSign($params);
         $params['sign'] = $this->sign($prepareSign);
         $params['sign'] = $this->sign($prepareSign);
+
         return $this->post($params, $this->refundUri);
         return $this->post($params, $this->refundUri);
     }
     }
-    public function buildHtml($params, $method = 'post', $target = '_self'){
+
+    public function buildHtml($params, $method = 'post', $target = '_self')
+    {
         // var_dump($params);exit;
         // var_dump($params);exit;
-		$html = "<form id='submit' name='submit' action='".$this->gatewayUri."' method='$method' target='$target'>";
-		foreach ($params as $key => $value) {
-			$html .= "<input type='hidden' name='$key' value='$value'/>";
-		}
-		$html .= "</form><script>document.forms['submit'].submit();</script>";
-		return $html;
+        $html = "<form id='submit' name='submit' action='" . $this->gatewayUri . "' method='$method' target='$target'>";
+        foreach ($params as $key => $value) {
+            $html .= "<input type='hidden' name='$key' value='$value'/>";
+        }
+        $html .= "</form><script>document.forms['submit'].submit();</script>";
+
+        return $html;
     }
     }
 }
 }

+ 17 - 1
app/Http/Controllers/AdminController.php

@@ -1979,7 +1979,7 @@ EOF;
 
 
         // 演示环境禁止修改特定配置项
         // 演示环境禁止修改特定配置项
         if (env('APP_DEMO')) {
         if (env('APP_DEMO')) {
-            if (in_array($name, ['website_url', 'push_bear_send_key', 'push_bear_qrcode', 'youzan_client_id', 'youzan_client_secret', 'kdt_id', 'is_forbid_china'])) {
+            if (in_array($name, ['website_url', 'push_bear_send_key', 'push_bear_qrcode', 'youzan_client_id', 'youzan_client_secret', 'kdt_id', 'is_forbid_china', 'trimepay_appid', 'trimepay_appsecret'])) {
                 return Response::json(['status' => 'fail', 'data' => '', 'message' => '演示环境禁止修改该配置']);
                 return Response::json(['status' => 'fail', 'data' => '', 'message' => '演示环境禁止修改该配置']);
             }
             }
         }
         }
@@ -1994,6 +1994,22 @@ EOF;
             $value = intval($value) / 100;
             $value = intval($value) / 100;
         }
         }
 
 
+        // 用有赞云支付不可用TrimePay支付
+        if (in_array($name, ['is_youzan']) && $name) {
+            $is_trimepay = Config::query()->where('name', 'is_trimepay')->first();
+            if ($is_trimepay->value) {
+                return Response::json(['status' => 'fail', 'data' => '', 'message' => '已经在使用【TrimePay支付】']);
+            }
+        }
+
+        // 用TrimePay支付不可用有赞云支付
+        if (in_array($name, ['is_trimepay']) && $name) {
+            $is_youzan = Config::query()->where('name', 'is_youzan')->first();
+            if ($is_youzan->value) {
+                return Response::json(['status' => 'fail', 'data' => '', 'message' => '已经在使用【有赞云支付】']);
+            }
+        }
+
         // 更新配置
         // 更新配置
         Config::query()->where('name', $name)->update(['value' => $value]);
         Config::query()->where('name', $name)->update(['value' => $value]);
 
 

+ 11 - 83
app/Http/Controllers/Api/TrimepayController.php

@@ -9,7 +9,6 @@ use App\Http\Models\Goods;
 use App\Http\Models\GoodsLabel;
 use App\Http\Models\GoodsLabel;
 use App\Http\Models\Order;
 use App\Http\Models\Order;
 use App\Http\Models\Payment;
 use App\Http\Models\Payment;
-use App\Http\Models\PaymentCallback;
 use App\Http\Models\SsNode;
 use App\Http\Models\SsNode;
 use App\Http\Models\SsNodeLabel;
 use App\Http\Models\SsNodeLabel;
 use App\Http\Models\User;
 use App\Http\Models\User;
@@ -33,29 +32,30 @@ class TrimepayController extends Controller
     // 接收GET请求
     // 接收GET请求
     public function index(Request $request)
     public function index(Request $request)
     {
     {
-        \Log::info("【Trimepay】回调接口[GET]:" . var_export($request->all(), true) . '[' . getClientIp() . ']');
+        \Log::info("【TrimePay】回调接口[GET]:" . var_export($request->all(), true) . '[' . getClientIp() . ']');
+        exit("【TrimePay】接口正常");
     }
     }
 
 
     // 接收POST请求
     // 接收POST请求
     public function store(Request $request)
     public function store(Request $request)
     {
     {
-        \Log::info("【Trimepay】回调接口[POST]:" . var_export($request->all(), true));
+        \Log::info("【TrimePay】回调接口[POST]:" . var_export($request->all(), true));
 
 
         $json = file_get_contents('php://input');
         $json = file_get_contents('php://input');
         parse_str($json, $data);
         parse_str($json, $data);
         if (!$data) {
         if (!$data) {
-            Log::info('Trimepay-POST:回调数据无法解析,可能是非法请求[' . getClientIp() . ']');
+            Log::info('TrimePay-POST:回调数据无法解析,可能是非法请求[' . getClientIp() . ']');
             exit();
             exit();
         }
         }
 
 
         // 判断消息是否合法
         // 判断消息是否合法
         $trimepay = new Trimepay(self::$systemConfig['trimepay_appid'], self::$systemConfig['trimepay_appsecret']);
         $trimepay = new Trimepay(self::$systemConfig['trimepay_appid'], self::$systemConfig['trimepay_appsecret']);
-        $cbData	= [
-            'payStatus' 				=> $data['payStatus'],
-            'payFee'					=> $data['payFee'],
-            'callbackTradeNo' 			=> $data['callbackTradeNo'],
-            'payType'					=> $data['payType'],
-            'merchantTradeNo'			=> $data['merchantTradeNo']
+        $cbData = [
+            'payStatus'       => $data['payStatus'],
+            'payFee'          => $data['payFee'],
+            'callbackTradeNo' => $data['callbackTradeNo'],
+            'payType'         => $data['payType'],
+            'merchantTradeNo' => $data['merchantTradeNo']
         ];
         ];
         $strToSign = $trimepay->prepareSign($cbData);
         $strToSign = $trimepay->prepareSign($cbData);
         $verify_result = $trimepay->verify($strToSign, $data['sign']);
         $verify_result = $trimepay->verify($strToSign, $data['sign']);
@@ -66,7 +66,7 @@ class TrimepayController extends Controller
         } else {
         } else {
             var_dump('SUCCESS');
             var_dump('SUCCESS');
         }
         }
-        
+
         switch ($data['payStatus']) {
         switch ($data['payStatus']) {
             case 'SUCCESS':
             case 'SUCCESS':
                 $this->tradePaid($data);
                 $this->tradePaid($data);
@@ -284,80 +284,8 @@ class TrimepayController extends Controller
         exit();
         exit();
     }
     }
 
 
-    // 创建交易
-    private function tradeCreate($msg)
-    {
-        Log::info('【Trimepay】回调创建交易');
-        exit();
-    }
-
-    // 关闭交易(无视,系统自带15分钟自动关闭未支付订单的定时任务)
-    private function tradeClose($msg)
-    {
-        Log::info('【Trimepay】回调关闭交易');
-
-        exit();
-    }
-
-    // 交易成功
-    private function tradeSuccess($msg)
-    {
-        Log::info('【Trimepay】回调交易成功');
-
-        exit();
-    }
-
-    // 卖家部分发货
-    private function tradePartlySellerShip($msg)
-    {
-        Log::info('【Trimepay】回调卖家部分发货');
-        exit();
-    }
-
-    // 卖家发货
-    private function tradeSellerShip($msg)
-    {
-        Log::info('【Trimepay】回调卖家发货');
-        exit();
-    }
-
-    // 买家付款
-    private function tradeBuyerPay($msg)
-    {
-        Log::info('【Trimepay】回调买家付款');
-        exit();
-    }
-
-    // 卖家修改交易备注
-    private function tradeMemoModified($msg)
-    {
-        Log::info('【Trimepay】回调卖家修改交易备注');
-        exit();
-    }
-
     public function show(Request $request)
     public function show(Request $request)
     {
     {
         exit('show');
         exit('show');
     }
     }
-
-    // 写入回调请求日志
-    private function callbackLog($client_id, $yz_id, $kdt_id, $kdt_name, $mode, $msg, $sendCount, $sign, $status, $test, $type, $version)
-    {
-        $obj = new PaymentCallback();
-        $obj->client_id = $client_id;
-        $obj->yz_id = $yz_id;
-        $obj->kdt_id = $kdt_id;
-        $obj->kdt_name = $kdt_name;
-        $obj->mode = $mode;
-        $obj->msg = urldecode($msg);
-        $obj->sendCount = $sendCount;
-        $obj->sign = $sign;
-        $obj->status = $status;
-        $obj->test = $test;
-        $obj->type = $type;
-        $obj->version = $version;
-        $obj->save();
-
-        return $obj->id;
-    }
 }
 }

+ 1 - 0
app/Http/Controllers/Api/YzyController.php

@@ -40,6 +40,7 @@ class YzyController extends Controller
     public function index(Request $request)
     public function index(Request $request)
     {
     {
         \Log::info("【有赞云】回调接口[GET]:" . var_export($request->all(), true) . '[' . getClientIp() . ']');
         \Log::info("【有赞云】回调接口[GET]:" . var_export($request->all(), true) . '[' . getClientIp() . ']');
+        exit("【有赞云】接口正常");
     }
     }
 
 
     // 接收POST请求
     // 接收POST请求

+ 17 - 12
app/Http/Controllers/PaymentController.php

@@ -46,7 +46,7 @@ class PaymentController extends Controller
         }
         }
 
 
         // 判断是否开启有赞云支付
         // 判断是否开启有赞云支付
-        if (!self::$systemConfig['is_youzan']&&!self::$systemConfig['is_trimepay']) {
+        if (!self::$systemConfig['is_youzan'] && !self::$systemConfig['is_trimepay']) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建支付单失败:系统并未开启在线支付功能']);
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建支付单失败:系统并未开启在线支付功能']);
         }
         }
 
 
@@ -118,6 +118,13 @@ class PaymentController extends Controller
             $orderSn = date('ymdHis') . mt_rand(100000, 999999);
             $orderSn = date('ymdHis') . mt_rand(100000, 999999);
             $sn = makeRandStr(12);
             $sn = makeRandStr(12);
 
 
+            // 支付方式
+            if (self::$systemConfig['is_youzan']) {
+                $pay_way = 2;
+            } else if (self::$systemConfig['is_trimepay']) {
+                $pay_way = 3;
+            }
+
             // 生成订单
             // 生成订单
             $order = new Order();
             $order = new Order();
             $order->order_sn = $orderSn;
             $order->order_sn = $orderSn;
@@ -128,16 +135,12 @@ class PaymentController extends Controller
             $order->amount = $amount;
             $order->amount = $amount;
             $order->expire_at = date("Y-m-d H:i:s", strtotime("+" . $goods->days . " days"));
             $order->expire_at = date("Y-m-d H:i:s", strtotime("+" . $goods->days . " days"));
             $order->is_expire = 0;
             $order->is_expire = 0;
-            if(self::$systemConfig['is_youzan']){
-                $order->pay_way = 2;
-            }else if(self::$systemConfig['is_trimepay']){
-                $order->pay_way = 3;
-            }
+            $order->pay_way = $pay_way;
             $order->status = 0;
             $order->status = 0;
             $order->save();
             $order->save();
 
 
             // 生成支付单
             // 生成支付单
-            if(self::$systemConfig['is_youzan']){
+            if (self::$systemConfig['is_youzan']) {
                 $yzy = new Yzy();
                 $yzy = new Yzy();
                 $result = $yzy->createQrCode($goods->name, $amount * 100, $orderSn);
                 $result = $yzy->createQrCode($goods->name, $amount * 100, $orderSn);
                 if (isset($result['error_response'])) {
                 if (isset($result['error_response'])) {
@@ -145,13 +148,15 @@ class PaymentController extends Controller
 
 
                     throw new \Exception($result['error_response']['msg']);
                     throw new \Exception($result['error_response']['msg']);
                 }
                 }
-            }else if(self::$systemConfig['is_trimepay']){
+            } else if (self::$systemConfig['is_trimepay']) {
                 $trimepay = new Trimepay(self::$systemConfig['trimepay_appid'], self::$systemConfig['trimepay_appsecret']);
                 $trimepay = new Trimepay(self::$systemConfig['trimepay_appid'], self::$systemConfig['trimepay_appsecret']);
+
                 if($pay_type==1){
                 if($pay_type==1){
                     $payMethod='ALIPAY_QR';
                     $payMethod='ALIPAY_QR';
                 }else if($pay_type==2){
                 }else if($pay_type==2){
                     $payMethod='WEPAY_QR';
                     $payMethod='WEPAY_QR';
                 }
                 }
+
                 $result = $trimepay->pay($payMethod, $orderSn, $amount, self::$systemConfig['website_url'].'/api/trimepay', self::$systemConfig['website_url']);
                 $result = $trimepay->pay($payMethod, $orderSn, $amount, self::$systemConfig['website_url'].'/api/trimepay', self::$systemConfig['website_url']);
                 if ($result['code']!==0) {
                 if ($result['code']!==0) {
                     Log::error('【Trimepay】创建二维码失败:' . $result['msg']);
                     Log::error('【Trimepay】创建二维码失败:' . $result['msg']);
@@ -167,15 +172,15 @@ class PaymentController extends Controller
             $payment->order_sn = $orderSn;
             $payment->order_sn = $orderSn;
             $payment->pay_way = 1;
             $payment->pay_way = 1;
             $payment->amount = $amount;
             $payment->amount = $amount;
-            if(self::$systemConfig['is_youzan']){
+            if (self::$systemConfig['is_youzan']) {
                 $payment->qr_id = $result['response']['qr_id'];
                 $payment->qr_id = $result['response']['qr_id'];
                 $payment->qr_url = $result['response']['qr_url'];
                 $payment->qr_url = $result['response']['qr_url'];
                 $payment->qr_code = $result['response']['qr_code'];
                 $payment->qr_code = $result['response']['qr_code'];
                 $payment->qr_local_url = $this->base64ImageSaver($result['response']['qr_code']);
                 $payment->qr_local_url = $this->base64ImageSaver($result['response']['qr_code']);
-            }else if(self::$systemConfig['is_trimepay']){
+            } else if (self::$systemConfig['is_trimepay']) {
                 $payment->qr_url = $result['data'];
                 $payment->qr_url = $result['data'];
-                $payment->qr_code = 'https://www.zhihu.com/qrcode?url='.$result['data'];
-                $payment->qr_local_url = 'https://www.zhihu.com/qrcode?url='.$result['data'];
+                $payment->qr_code = 'https://www.zhihu.com/qrcode?url=' . $result['data'];
+                $payment->qr_local_url = 'https://www.zhihu.com/qrcode?url=' . $result['data'];
             }
             }
             $payment->status = 0;
             $payment->status = 0;
             $payment->save();
             $payment->save();

+ 19 - 18
app/Http/Controllers/SubscribeController.php

@@ -87,18 +87,19 @@ class SubscribeController extends Controller
 
 
         // 控制客户端最多获取节点数
         // 控制客户端最多获取节点数
         $scheme = '';
         $scheme = '';
+
+        // 展示到期时间和剩余流量
+        if (self::$systemConfig['is_custom_subscribe']) {
+            $scheme .= $this->expireDate($user);
+            $scheme .= $this->lastTraffic($user);
+        }
+
         foreach ($nodeList as $key => $node) {
         foreach ($nodeList as $key => $node) {
             // 控制显示的节点数
             // 控制显示的节点数
             if (self::$systemConfig['subscribe_max'] && $key >= self::$systemConfig['subscribe_max']) {
             if (self::$systemConfig['subscribe_max'] && $key >= self::$systemConfig['subscribe_max']) {
                 break;
                 break;
             }
             }
 
 
-            // 展示到期时间和剩余流量
-            if (self::$systemConfig['is_custom_subscribe']) {
-                $scheme .= $this->expireDate($user);
-                $scheme .= $this->lastTraffic($user);
-            }
-
             // 获取分组名称
             // 获取分组名称
             if ($node['type'] == 1) {
             if ($node['type'] == 1) {
                 $group = SsGroup::query()->where('id', $node['group_id'])->first();
                 $group = SsGroup::query()->where('id', $node['group_id'])->first();
@@ -122,16 +123,16 @@ class SubscribeController extends Controller
                 // 生成v2ray scheme
                 // 生成v2ray scheme
                 $v2_json = [
                 $v2_json = [
                     "v"    => "2",
                     "v"    => "2",
-                    "ps"   => $node->name,
-                    "add"  => $node->server ? $node->server : $node->ip,
-                    "port" => $node->v2_port,
-                    "id"   => $user->vmess_id,
-                    "aid"  => $node->v2_alter_id,
-                    "net"  => $node->v2_net,
-                    "type" => $node->v2_type,
-                    "host" => $node->v2_host,
-                    "path" => $node->v2_path,
-                    "tls"  => $node->v2_tls == 1 ? "tls" : ""
+                    "ps"   => $node['name'],
+                    "add"  => $node['server'] ? $node['server'] : $node['ip'],
+                    "port" => $node['v2_port'],
+                    "id"   => $user['vmess_id'],
+                    "aid"  => $node['v2_alter_id'],
+                    "net"  => $node['v2_net'],
+                    "type" => $node['v2_type'],
+                    "host" => $node['v2_host'],
+                    "path" => $node['v2_path'],
+                    "tls"  => $node['v2_tls'] == 1 ? "tls" : ""
                 ];
                 ];
 
 
                 $scheme .= 'vmess://' . base64url_encode(json_encode($v2_json));
                 $scheme .= 'vmess://' . base64url_encode(json_encode($v2_json));
@@ -169,7 +170,7 @@ class SubscribeController extends Controller
     {
     {
         $text = '到期时间:' . $user->expire_time;
         $text = '到期时间:' . $user->expire_time;
 
 
-        return base64url_encode('ssr://' . base64url_encode('8.8.8.8:8888:origin:none:plain:' . base64url_encode('0000') . '/?obfsparam=&protoparam=&remarks=' . base64url_encode($text) . '&group=' . base64url_encode('VPN') . '&udpport=0&uot=0') . "\n");
+        return 'ssr://' . base64url_encode('8.8.8.8:8888:origin:none:plain:' . base64url_encode('0000') . '/?obfsparam=&protoparam=&remarks=' . base64url_encode($text) . '&group=' . base64url_encode('VPN') . '&udpport=0&uot=0') . "\n";
     }
     }
 
 
     /**
     /**
@@ -183,6 +184,6 @@ class SubscribeController extends Controller
     {
     {
         $text = '剩余流量:' . flowAutoShow($user->transfer_enable - $user->u - $user->d);
         $text = '剩余流量:' . flowAutoShow($user->transfer_enable - $user->u - $user->d);
 
 
-        return base64url_encode('ssr://' . base64url_encode('8.8.8.8:8888:origin:none:plain:' . base64url_encode('0000') . '/?obfsparam=&protoparam=&remarks=' . base64url_encode($text) . '&group=' . base64url_encode('VPN') . '&udpport=0&uot=0') . "\n");
+        return 'ssr://' . base64url_encode('8.8.8.8:8888:origin:none:plain:' . base64url_encode('0000') . '/?obfsparam=&protoparam=&remarks=' . base64url_encode($text) . '&group=' . base64url_encode('VPN') . '&udpport=0&uot=0') . "\n";
     }
     }
 }
 }

+ 4 - 2
app/Http/Controllers/UserController.php

@@ -289,6 +289,7 @@ class UserController extends Controller
             }
             }
 
 
             Session::flash('errorMsg', '非法请求');
             Session::flash('errorMsg', '非法请求');
+
             return Redirect::to('profile#tab_1');
             return Redirect::to('profile#tab_1');
         } else {
         } else {
             $view['info'] = User::query()->where('id', Auth::user()->id)->first();
             $view['info'] = User::query()->where('id', Auth::user()->id)->first();
@@ -576,8 +577,8 @@ class UserController extends Controller
                     return Response::json(['status' => 'fail', 'data' => '', 'message' => '支付失败:商品不可重复购买']);
                     return Response::json(['status' => 'fail', 'data' => '', 'message' => '支付失败:商品不可重复购买']);
                 }
                 }
             }
             }
-      
-      	    // 单个商品限购
+
+            // 单个商品限购
             if ($goods->is_limit == 1) {
             if ($goods->is_limit == 1) {
                 $noneExpireOrderExist = Order::query()->where('status', '>=', 0)->where('user_id', Auth::user()->id)->where('goods_id', $goods_id)->exists();
                 $noneExpireOrderExist = Order::query()->where('status', '>=', 0)->where('user_id', Auth::user()->id)->where('goods_id', $goods_id)->exists();
                 if ($noneExpireOrderExist) {
                 if ($noneExpireOrderExist) {
@@ -775,6 +776,7 @@ class UserController extends Controller
             $view['goods'] = $goods;
             $view['goods'] = $goods;
             $view['is_youzan'] = self::$systemConfig['is_youzan'];
             $view['is_youzan'] = self::$systemConfig['is_youzan'];
             $view['is_trimepay'] = self::$systemConfig['is_trimepay'];
             $view['is_trimepay'] = self::$systemConfig['is_trimepay'];
+
             return Response::view('user.buy', $view);
             return Response::view('user.buy', $view);
         }
         }
     }
     }

+ 0 - 0
public/downloads/decompile.json


+ 12 - 2
resources/views/admin/orderList.blade.php

@@ -42,7 +42,7 @@
                                     <option value="" @if(Request::get('pay_way') == '') selected @endif>支付方式</option>
                                     <option value="" @if(Request::get('pay_way') == '') selected @endif>支付方式</option>
                                     <option value="1" @if(Request::get('pay_way') == '1') selected @endif>余额支付</option>
                                     <option value="1" @if(Request::get('pay_way') == '1') selected @endif>余额支付</option>
                                     <option value="2" @if(Request::get('pay_way') == '2') selected @endif>有赞云支付</option>
                                     <option value="2" @if(Request::get('pay_way') == '2') selected @endif>有赞云支付</option>
-                                    <option value="2" @if(Request::get('pay_way') == '3') selected @endif>微信支付</option>
+                                    <option value="3" @if(Request::get('pay_way') == '3') selected @endif>TrimePay支付</option>
                                 </select>
                                 </select>
                             </div>
                             </div>
                             <div class="col-md-3 col-sm-4 col-xs-12">
                             <div class="col-md-3 col-sm-4 col-xs-12">
@@ -98,7 +98,17 @@
                                                 <td> {{$order->coupon ? $order->coupon->name . ' - ' . $order->coupon->sn : ''}} </td>
                                                 <td> {{$order->coupon ? $order->coupon->name . ' - ' . $order->coupon->sn : ''}} </td>
                                                 <td> ¥{{$order->origin_amount}} </td>
                                                 <td> ¥{{$order->origin_amount}} </td>
                                                 <td> ¥{{$order->amount}} </td>
                                                 <td> ¥{{$order->amount}} </td>
-                                                <td> {{$order->pay_way == '1' ? '余额支付' : $order->pay_way == '2' ? '有赞云支付': '微信支付'}} </td>
+                                                <td>
+                                                    @if($order->pay_way == '1')
+                                                        余额支付
+                                                    @elseif($order->pay_way == '2')
+                                                        有赞云支付
+                                                    @elseif($order->pay_way == '3')
+                                                        TrimePay支付
+                                                    @else
+                                                        未知
+                                                    @endif
+                                                </td>
                                                 <td>
                                                 <td>
                                                     @if($order->status == '-1')
                                                     @if($order->status == '-1')
                                                         已关闭
                                                         已关闭

+ 62 - 62
resources/views/admin/system.blade.php

@@ -38,13 +38,13 @@
                                             <a href="#tab_6" data-toggle="tab"> 自动化任务 </a>
                                             <a href="#tab_6" data-toggle="tab"> 自动化任务 </a>
                                         </li>
                                         </li>
                                         <li>
                                         <li>
-                                            <a href="#tab_7" data-toggle="tab"> 有赞云支付设置 </a>
+                                            <a href="#tab_7" data-toggle="tab"> LOGO、客服、统计设置 </a>
                                         </li>
                                         </li>
                                         <li>
                                         <li>
-                                            <a href="#tab_8" data-toggle="tab"> LOGO、客服、统计设置 </a>
+                                            <a href="#tab_8" data-toggle="tab"> 有赞云支付 </a>
                                         </li>
                                         </li>
                                         <li>
                                         <li>
-                                            <a href="#tab_9" data-toggle="tab"> Trimepay设置 </a>
+                                            <a href="#tab_9" data-toggle="tab"> TrimePay支付 </a>
                                         </li>
                                         </li>
                                     </ul>
                                     </ul>
                                 </div>
                                 </div>
@@ -732,64 +732,6 @@
                                             </form>
                                             </form>
                                         </div>
                                         </div>
                                         <div class="tab-pane" id="tab_7">
                                         <div class="tab-pane" id="tab_7">
-                                            <form action="#" method="post" class="form-horizontal">
-                                                <div class="portlet-body">
-                                                    <div class="form-group">
-                                                        <div class="col-md-12">
-                                                            <div class="alert alert-info" style="text-align: center;">
-                                                                请在<a href="https://console.youzanyun.com/login" target="_blank" style="color: red;">有赞云</a>设置应用的推送网址为:{{$website_url . '/api/yzy'}}
-                                                            </div>
-                                                        </div>
-                                                    </div>
-                                                    <div class="form-group">
-                                                        <div class="col-md-6 col-sm-6 col-xs-12">
-                                                            <label for="is_youzan" class="col-md-3 control-label">本功能</label>
-                                                            <div class="col-md-9">
-                                                                <input type="checkbox" class="make-switch" @if($is_youzan) checked @endif id="is_youzan" data-on-color="success" data-off-color="danger" data-on-text="启用" data-off-text="关闭">
-                                                                <span class="help-block"> 请先到<a href="https://console.youzanyun.com/dashboard">有赞云</a>申请client_id和client_secret并绑定店铺(<a href="https://github.com/ssrpanel/SSRPanel/wiki/%E6%9C%89%E8%B5%9E%E4%BA%91%E6%94%AF%E4%BB%98" target="_blank">申请教程</a>) </span>
-                                                            </div>
-                                                        </div>
-                                                        <div class="col-md-6 col-sm-6 col-xs-12">
-                                                            <label for="kdt_id" class="col-md-3 control-label">kdt_id</label>
-                                                            <div class="col-md-9">
-                                                                <div class="input-group">
-                                                                    <input class="form-control" type="text" name="kdt_id" value="{{$kdt_id}}" id="kdt_id" />
-                                                                    <span class="input-group-btn">
-                                                                        <button class="btn btn-success" type="button" onclick="setKdtId()">修改</button>
-                                                                    </span>
-                                                                </div>
-                                                                <span class="help-block"> 即:授权店铺id </span>
-                                                            </div>
-                                                        </div>
-                                                    </div>
-                                                    <div class="form-group">
-                                                        <div class="col-md-6 col-sm-6 col-xs-12">
-                                                            <label for="youzan_client_id" class="col-md-3 control-label">client_id</label>
-                                                            <div class="col-md-9">
-                                                                <div class="input-group">
-                                                                    <input class="form-control" type="text" name="youzan_client_id" value="{{$youzan_client_id}}" id="youzan_client_id" />
-                                                                    <span class="input-group-btn">
-                                                                        <button class="btn btn-success" type="button" onclick="setYouzanClientId()">修改</button>
-                                                                    </span>
-                                                                </div>
-                                                            </div>
-                                                        </div>
-                                                        <div class="col-md-6 col-sm-6 col-xs-12">
-                                                            <label for="youzan_client_secret" class="col-md-3 control-label">client_secret</label>
-                                                            <div class="col-md-9">
-                                                                <div class="input-group">
-                                                                    <input class="form-control" type="text" name="youzan_client_secret" value="{{$youzan_client_secret}}" id="youzan_client_secret" />
-                                                                    <span class="input-group-btn">
-                                                                    <button class="btn btn-success" type="button" onclick="setYouzanClientSecret()">修改</button>
-                                                                </span>
-                                                                </div>
-                                                            </div>
-                                                        </div>
-                                                    </div>
-                                                </div>
-                                            </form>
-                                        </div>
-                                        <div class="tab-pane" id="tab_8">
                                             <form action="{{url('admin/setExtend')}}" method="post" enctype="multipart/form-data" class="form-horizontal" role="form" id="setExtend">
                                             <form action="{{url('admin/setExtend')}}" method="post" enctype="multipart/form-data" class="form-horizontal" role="form" id="setExtend">
                                                 {{csrf_field()}}
                                                 {{csrf_field()}}
                                                 <div class="form-group">
                                                 <div class="form-group">
@@ -863,6 +805,64 @@
                                                 </div>
                                                 </div>
                                             </form>
                                             </form>
                                         </div>
                                         </div>
+                                        <div class="tab-pane" id="tab_8">
+                                            <form action="#" method="post" class="form-horizontal">
+                                                <div class="portlet-body">
+                                                    <div class="form-group">
+                                                        <div class="col-md-12">
+                                                            <div class="alert alert-info" style="text-align: center;">
+                                                                请在<a href="https://console.youzanyun.com/login" target="_blank" style="color: red;"> 有赞云 </a>设置应用的推送网址为:{{$website_url . '/api/yzy'}}
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <div class="col-md-6 col-sm-6 col-xs-12">
+                                                            <label for="is_youzan" class="col-md-3 control-label">本功能</label>
+                                                            <div class="col-md-9">
+                                                                <input type="checkbox" class="make-switch" @if($is_youzan) checked @endif id="is_youzan" data-on-color="success" data-off-color="danger" data-on-text="启用" data-off-text="关闭">
+                                                                <span class="help-block"> 请先到 <a href="https://console.youzanyun.com/dashboard">有赞云</a> 申请client_id和client_secret(<a href="https://github.com/ssrpanel/SSRPanel/wiki/%E6%9C%89%E8%B5%9E%E4%BA%91%E6%94%AF%E4%BB%98" target="_blank">申请教程</a>) </span>
+                                                            </div>
+                                                        </div>
+                                                        <div class="col-md-6 col-sm-6 col-xs-12">
+                                                            <label for="kdt_id" class="col-md-3 control-label">kdt_id</label>
+                                                            <div class="col-md-9">
+                                                                <div class="input-group">
+                                                                    <input class="form-control" type="text" name="kdt_id" value="{{$kdt_id}}" id="kdt_id" />
+                                                                    <span class="input-group-btn">
+                                                                        <button class="btn btn-success" type="button" onclick="setKdtId()">修改</button>
+                                                                    </span>
+                                                                </div>
+                                                                <span class="help-block"> 即:授权店铺id </span>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <div class="col-md-6 col-sm-6 col-xs-12">
+                                                            <label for="youzan_client_id" class="col-md-3 control-label">client_id</label>
+                                                            <div class="col-md-9">
+                                                                <div class="input-group">
+                                                                    <input class="form-control" type="text" name="youzan_client_id" value="{{$youzan_client_id}}" id="youzan_client_id" />
+                                                                    <span class="input-group-btn">
+                                                                        <button class="btn btn-success" type="button" onclick="setYouzanClientId()">修改</button>
+                                                                    </span>
+                                                                </div>
+                                                            </div>
+                                                        </div>
+                                                        <div class="col-md-6 col-sm-6 col-xs-12">
+                                                            <label for="youzan_client_secret" class="col-md-3 control-label">client_secret</label>
+                                                            <div class="col-md-9">
+                                                                <div class="input-group">
+                                                                    <input class="form-control" type="text" name="youzan_client_secret" value="{{$youzan_client_secret}}" id="youzan_client_secret" />
+                                                                    <span class="input-group-btn">
+                                                                    <button class="btn btn-success" type="button" onclick="setYouzanClientSecret()">修改</button>
+                                                                </span>
+                                                                </div>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </form>
+                                        </div>
                                         <div class="tab-pane" id="tab_9">
                                         <div class="tab-pane" id="tab_9">
                                             <form action="#" method="post" class="form-horizontal">
                                             <form action="#" method="post" class="form-horizontal">
                                                 <div class="portlet-body">
                                                 <div class="portlet-body">
@@ -871,7 +871,7 @@
                                                             <label for="is_trimepay" class="col-md-3 control-label">本功能</label>
                                                             <label for="is_trimepay" class="col-md-3 control-label">本功能</label>
                                                             <div class="col-md-9">
                                                             <div class="col-md-9">
                                                                 <input type="checkbox" class="make-switch" @if($is_trimepay) checked @endif id="is_trimepay" data-on-color="success" data-off-color="danger" data-on-text="启用" data-off-text="关闭">
                                                                 <input type="checkbox" class="make-switch" @if($is_trimepay) checked @endif id="is_trimepay" data-on-color="success" data-off-color="danger" data-on-text="启用" data-off-text="关闭">
-                                                                <span class="help-block"> 请先到<a href="https://portal.trimepay.com">Trimepay</a>申请app_id和app_secret </span>
+                                                                <span class="help-block"> 请先到 <a href="https://portal.trimepay.com/#/auth/register/408" target="_blank">TrimePay</a> 申请app_id和app_secret </span>
                                                             </div>
                                                             </div>
                                                         </div>
                                                         </div>
                                                     </div>
                                                     </div>

+ 1 - 1
resources/views/payment/detail.blade.php

@@ -8,7 +8,7 @@
         <div class="portlet light bordered">
         <div class="portlet light bordered">
             <div class="portlet-body">
             <div class="portlet-body">
                 <div class="alert alert-info" style="text-align: center;">
                 <div class="alert alert-info" style="text-align: center;">
-                    请使用<strong style="color:red;">支付宝、QQ、微信</strong>扫描如下二维码
+                    请使用<strong style="color:red;">支付宝、微信</strong>扫描如下二维码
                 </div>
                 </div>
                 <div class="row" style="text-align: center; font-size: 1.05em;">
                 <div class="row" style="text-align: center; font-size: 1.05em;">
                     <div class="col-md-12">
                     <div class="col-md-12">