瀏覽代碼

month pay fix

zz 5 年之前
父節點
當前提交
d2e472f177

+ 41 - 23
app/Http/Controllers/Wap/Order/OrdersController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers\Wap\Order;
 
 use App\Modules\Book\Services\BookGiftsService;
+use App\Modules\SendOrder\Services\SendOrderService;
 use App\Modules\Subscribe\Models\Order;
 use App\Http\Controllers\Wap\BaseController;
 use App\Modules\Book\Services\BookConfigService;
@@ -865,33 +866,50 @@ class OrdersController extends BaseController
         }
     }
 
-    /*public function monthPay(Request $request,$channel_id,$domain){
+    public function monthPay(Request $request){
         \Log::info('monthPay url--------------');
         \Log::info($request->all());
-        $from = $request->get('from_wxpay');
-        if($from && $from == 1){
-            //if()
-            $source = Cookie::get('month_pay_redirect');
-            if($source){
-                $source = urldecode($source);
-            }else{
-                $source = '/person';
+        $uid = $this->uid;
+        $count = OrderService::getUserChargeTimes($uid);
+        $count = $count + 1;
+        $send_order_id = 0;
+        try {
+            $send_order_id = (int)Redis::hget('book_read:' . $uid, 'send_order_id');
+        } catch (\Exception $e) {
+        }
+        $distribution_channel_id = $this->distribution_channel_id;
+        $trade_no = date("YmdHis") . str_shuffle(hexdec(uniqid()));
+        $send_order_name = '';
+        if ($send_order_id) {
+            $send_order_info = SendOrderService::getById($send_order_id);
+            if ($send_order_info && isset($send_order_info->name) && !empty($send_order_info->name)) {
+                $send_order_name = $send_order_info->name;
             }
-            return redirect()->to($source);
-        }
-        $source = $request->get('redirect_url');
-        if($source){
-            Cookie::queue('month_pay_redirect',$source,600);
         }
-        $url = generateMonthOrderUrl($this->uid);
-        $h5_scheme = env('PROTOCOL', 'https');
-
-        $refer = str_replace('http://', $h5_scheme . '://', url()->current());
-        \Log::info('$refer is :'.$refer);
-        return redirect()->to($url)->withHeaders([
-            'Referer'=>$refer
-        ]);
-    }*/
+        $init_order = [
+            'distribution_channel_id' => $distribution_channel_id,
+            'uid' => $uid,
+            'product_id' => 6826,
+            'price' => 30,
+            'pay_type' => $count,
+            'trade_no' => $trade_no,
+            'pay_merchant_source' => 'MONTH',
+            'pay_merchant_id' => 99,
+            'create_ip' => '',
+            'send_order_id' => $send_order_id,
+            'send_order_name' => $send_order_name,
+            'order_type' => 'RECHARGE',
+            'from_bid' => '0',
+            'from_type' => 'auto_month',
+            'activity_id' => 0,
+            'inner_send_order_id' => '',
+            'status'=>'UNPAID',
+            'transaction_id'=>'',
+            'pay_end_at'=>date('Y-m-d H:i:s')
+        ];
+        $info = Order::create($init_order);
+        return redirect()->to(generateMonthOrderUrl($info->id));
+    }
 
     private function monthPayExposureRecord($property,$openid){
         if (!$property) return '';

+ 56 - 0
app/Http/Controllers/Wap/Pay/MonthOrderController.php

@@ -81,6 +81,47 @@ class MonthOrderController extends Controller
         return response('success');
     }
 
+
+    public function orderCallBackV2(Request $request){
+        Log::info('orderCallBack------------------------------------------orderCallBack');
+        Log::info($request->all());
+        Log::info($request->getMethod());
+
+        $key = env('MONTH_ORDER_KEY');//'sn7wluq5716brp8fzm';
+        $app_id = $request->post('app_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');
+        if($check = checkParam($request->except('_url'),['app_id','user_id','total_fee','trade_no','out_trade_no'])){
+            return response()->error('PARAM_EMPTY',['msg'=>$check]);
+        }
+        $sign = _sign(compact('app_id','user_id','total_fee','trade_no','out_trade_no'),$key.$key);
+        $sign = strtoupper($sign);
+        Log::info('self sign is: '.$sign);
+        $order_info = Order::find($user_id);
+        if(!$order_info){
+            Log::error('month order not exist !!!order is :'.$trade_no);
+            return response('fail');
+        }
+        if($order_info->status == 'PAID'){
+            Log::error('month order had deal !!!, order is :'.$trade_no);
+            return response('fail');
+        }
+        //if($sign == $request->post('sign')){
+        if(!UserMonthService::getOrderByOrder($trade_no,$out_trade_no)){
+            UserMonthService::createLOrder($order_info->uid,$plan_id,$total_fee,$trade_no,$out_trade_no);
+            $order_info->transaction_id = $trade_no;
+            $order_info->status = 'PAID';
+            self::addOrderAndVipV2($order_info->uid,$total_fee);
+        }
+        //}
+
+        Log::info('orderCallBack--------------------endend----------------------orderCallBack');
+        return response('success');
+    }
+
     public function orderCallBack(Request $request){
         Log::info('orderCallBack------------------------------------------orderCallBack');
         Log::info($request->all());
@@ -109,6 +150,7 @@ class MonthOrderController extends Controller
         return response('success');
     }
 
+
     private function addOrderAndVip($uid,$out_trade_no,$trade_no,$price){
 
         $order_info = OrderService::getByTradeNo($out_trade_no);
@@ -127,6 +169,20 @@ class MonthOrderController extends Controller
         ]);
     }
 
+    private function addOrderAndVipV2($uid,$price){
+
+
+        $user_info = UserService::getById($uid);
+        if(!$user_info) return ;
+
+        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;

+ 2 - 1
app/Http/Controllers/Wap/Web/WelcomeController.php

@@ -2198,7 +2198,8 @@ class WelcomeController extends BaseController
                 return [
                     'price'=>'30元',
                     'text' => '30元包月 全站万本精彩小说免费看',
-                    'link'=> generateMonthOrderUrl($this->uid)
+                    //'link'=> generateMonthOrderUrl($this->uid)
+                    'link'=> '/rmonthpay'
                 ];
             }
         }

+ 3 - 1
app/Http/Routes/Wap/WapRoutes.php

@@ -22,7 +22,7 @@ Route::group(['domain'=>env('PAY_WAP_DOMAIN'),'namespace'=>'App\Http\Controllers
     Route::get('monthpay/getH5RedirectUrl','Pay\MonthOrderController@getH5RedirectUrl');
     Route::get('monthpay/getWechatRedirectUrl','Pay\MonthOrderController@getWechatRedirectUrl');
     Route::any('monthpay/signcallback','Pay\MonthOrderController@signCallBack');
-    Route::post('monthpay/ordercallback','Pay\MonthOrderController@orderCallBack');
+    Route::post('monthpay/ordercallback','Pay\MonthOrderController@orderCallBackV2');
 
 });
 Route::group(['domain'=>env('OFFICIAL_AUTH_FOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){
@@ -308,6 +308,8 @@ Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap
         //随机每日领5-15书币
         Route::get('randSign','User\UserController@day_rand_sign');
 
+        Route::get('rmonthpay','Order\OrdersController@monthPay');
+
         Route::any('{slug}','Web\WelcomeController@index')->where('slug', '(.*)?');
 
     });