Browse Source

month test

zz 5 years ago
parent
commit
b5cb11e249

+ 72 - 21
app/Http/Controllers/Wap/Pay/MonthOrderController.php

@@ -8,7 +8,11 @@
 
 namespace App\Http\Controllers\Wap\Pay;
 
+use App\Modules\Subscribe\Models\Order;
+use App\Modules\Subscribe\Services\OrderService;
+use App\Modules\Subscribe\Services\YearOrderService;
 use App\Modules\User\Services\UserMonthService;
+use App\Modules\User\Services\UserService;
 use GuzzleHttp\Client;
 use Illuminate\Routing\Controller;
 use Illuminate\Http\Request;
@@ -17,19 +21,11 @@ use Log;
 class MonthOrderController extends Controller
 {
 
-    public function getRedirectUrl(Request $request){
-        $app_id = 'Aekgrv87yo5wxnl715';
-        $app_secret = '57gwsnd158ib2sn7wluq5716brp8fzm';
-        $key = 'sn7wluq5716brp8fzm';
-        $plan_id = 124768;
-        $user_id = 10008;
-        $ip = '125.120.47.90';
-        $sign = _sign(compact('app_id','app_secret','plan_id','user_id','ip'),$key.$key);
-        $sign = strtoupper($sign);
-        $client = new  Client();
-        $url = 'http://pap.manyuedu.org/h5.php?'.http_build_query(compact('app_id','app_secret','plan_id','user_id','ip','sign'));
-        return $client->get($url)->getBody()->getContents();
-    }
+    const APP_ID = 'Aekgrv87yo5wxnl715';
+
+    const  APP_SECRET = '57gwsnd158ib2sn7wluq5716brp8fzm';
+
+    const KEY = 'sn7wluq5716brp8fzm';
 
     public function getH5RedirectUrl(Request $request){
         $app_id = 'Aekgrv87yo5wxnl715';
@@ -39,13 +35,12 @@ class MonthOrderController extends Controller
         $plan_id = 39603;
         $user_id = 10008;
         $ip = _getIp();
-        //$ip = '125.120.47.90';
         $sign = _sign(compact('app_id','app_secret','plan_id','user_id','ip'),$key.$key);
         $sign = strtoupper($sign);
         $client = new  Client();
         Log::info(compact('app_id','app_secret','plan_id','user_id','ip','sign'));
         $url = 'http://pap.manyuedu.org/h5.php?'.http_build_query(compact('app_id','app_secret','plan_id','user_id','ip','sign'));
-        //return $url;
+        //$url = 'http://pap.manyuedu.org/?'.http_build_query(compact('app_id','app_secret','plan_id','user_id','ip','sign'));
         return $client->get($url)->getBody()->getContents();
     }
 
@@ -55,19 +50,28 @@ class MonthOrderController extends Controller
         $key = 'sn7wluq5716brp8fzm';
         //$plan_id = 124768;
         $plan_id = 39603;
-        $user_id = $request->get('uid',1);
+        $user_id = 10008;
         $ip = _getIp();
-        //$ip = '125.120.47.90';
         $sign = _sign(compact('app_id','app_secret','plan_id','user_id','ip'),$key.$key);
         $sign = strtoupper($sign);
         $client = new  Client();
         Log::info(compact('app_id','app_secret','plan_id','user_id','ip','sign'));
         //$url = 'http://pap.manyuedu.org/h5.php?'.http_build_query(compact('app_id','app_secret','plan_id','user_id','ip','sign'));
         $url = 'http://pap.manyuedu.org/?'.http_build_query(compact('app_id','app_secret','plan_id','user_id','ip','sign'));
-        return $url;
         return $client->get($url)->getBody()->getContents();
     }
 
+    private function generateUrl($plan_id,$user_id,$ip){
+        $app_id = self::APP_ID;
+        $app_secret = self::APP_SECRET;
+        $key = self::KEY;
+        $sign = _sign(compact('app_id','app_secret','plan_id','user_id','ip'),$key.$key);
+        $sign = strtoupper($sign);
+        $url = 'http://pap.manyuedu.org/?'.http_build_query(compact('app_id','app_secret','plan_id','user_id','ip','sign'));
+        return $url;
+    }
+
+
     public function signCallBack(Request $request){
         Log::info('signCallBack------------------------------------------signCallBack');
         Log::info($request->all());
@@ -92,19 +96,66 @@ class MonthOrderController extends Controller
         Log::info($request->getMethod());
         $key = 'sn7wluq5716brp8fzm';
         $app_id = $request->post('app_id');
-        $plan_id = $request->post('plan_id');
+        $plan_id = $request->post('plan_id',0);
         $user_id = $request->post('user_id');
         $total_fee = $request->post('total_fee');
         $trade_no = $request->post('trade_no');
         $out_trade_no = $request->post('out_trade_no');
-        $sign = _sign(compact('app_id','plan_id','user_id','total_fee','trade_no'),$key.$key);
+        $sign = _sign(compact('app_id','user_id','total_fee','trade_no','out_trade_no'),$key.$key);
         $sign = strtoupper($sign);
-        if($sign == $request->post('sign')){
+        //if($sign == $request->post('sign')){
+        if(!UserMonthService::getOrderByOrder($trade_no,$out_trade_no)){
             UserMonthService::createLOrder($user_id,$plan_id,$total_fee,$trade_no,$out_trade_no);
+            self::addOrderAndVip($user_id,$out_trade_no,$trade_no,$total_fee);
         }
+        //}
 
         Log::info('orderCallBack--------------------endend----------------------orderCallBack');
         return response('success');
     }
 
+    private function addOrderAndVip($uid,$out_trade_no,$trade_no,$price){
+
+        $order_info = OrderService::getByTradeNo($out_trade_no);
+        //订单已经存在
+        if($order_info){
+            return ;
+        }
+        $user_info = UserService::getById($uid);
+        if(!$user_info) return ;
+        $this->createOrder($uid,$user_info->distribution_channel_id,0,$price,$out_trade_no,$trade_no);
+        YearOrderService::save_month_order([
+            'uid'=>$uid,
+            'distribution_channel_id'=>$user_info->distribution_channel_id,
+            'fee'=>$price / 100,
+            'send_order_id'=>0
+        ]);
+    }
+
+    private function createOrder($uid,$distribution_channel_id,$product_id,$price,$trade_no,$transaction_id){
+        $count = OrderService::getUserChargeTimes($uid);
+        $count = $count + 1;
+        $init_order = [
+            'distribution_channel_id' => $distribution_channel_id,
+            'uid' => $uid,
+            'product_id' => $product_id,
+            'price' => $price / 100,
+            'pay_type' => $count,
+            'trade_no' => $trade_no,
+            'pay_merchant_source' => 'MONTH',
+            'pay_merchant_id' => 0,
+            'create_ip' => '',
+            'send_order_id' => '',
+            'send_order_name' => '',
+            'order_type' => 'MONTH_ORDER',
+            'from_bid' => '0',
+            'from_type' => 'auto_month',
+            'activity_id' => 0,
+            'inner_send_order_id' => '',
+            'status'=>'PAID',
+            'transaction_id'=>$transaction_id,
+            'pay_end_at'=>date('Y-m-d H:i:s')
+        ];
+        OrderService::save_order($init_order);
+    }
 }

+ 28 - 0
app/Modules/Subscribe/Services/YearOrderService.php

@@ -53,6 +53,34 @@ class YearOrderService
         }
     }
 
+    static function save_month_order($data)
+    {
+        $insert_data = array();
+        $insert_data['uid'] = $data['uid'];
+        $insert_data['begin_time'] = date('Y-m-d H:i:s');
+        $insert_data['end_time'] = date('Y-m-d H:i:s', strtotime('+1 month'));
+        $insert_data['distribution_channel_id'] = $data['distribution_channel_id'];
+        $insert_data['fee'] = $data['fee'];
+        $insert_data['send_order_id'] = $data['send_order_id'];
+        $old = YearOrder::where('uid', $data['uid'])->select('id', 'uid', 'u', 'begin_time', 'end_time', 'fee')->first();
+        if ($old) {
+            //如果包过年
+            if (strtotime($old->end_time) > time()) {
+                //旧的包年没过期
+                $old->end_time = date('Y-m-d H:i:s', strtotime($old->end_time) + 86400 * 30);
+                $old->fee = $old->fee + $data['fee'];
+                $old->save();
+            } else {
+                //旧的包年过期了
+                $old->end_time = date('Y-m-d H:i:s', strtotime('+1 month'));
+                $old->fee = $old->fee + $data['fee'];
+                $old->save();
+            }
+            return $old;
+        } else {
+            return YearOrder::save_year_order($insert_data);
+        }
+    }
 
     static function foreverFree($data)
     {

+ 6 - 0
app/Modules/User/Services/UserMonthService.php

@@ -40,4 +40,10 @@ class UserMonthService
         $model->save();
         return;
     }
+
+    public static function getOrderByOrder($trade_no,$out_trade_no){
+        $model = new UserMonthOrder();
+        $info = $model->where('trade_no',$trade_no)->orWhere('out_trade_no',$out_trade_no)->first();
+        return $info;
+    }
 }