浏览代码

Merge branch 'master' of iqiyoo:zhuishuyun_wap

onlinetest 6 年之前
父节点
当前提交
07cce16106

+ 2 - 1
app/Http/Controllers/Wap/Book/RedBookController.php

@@ -19,6 +19,7 @@ use App\Modules\Subscribe\Services\YearOrderService;
 use Log;
 use Illuminate\Support\Facades\Cache;
 use Redis;
+use DB;
 
 class RedBookController extends BaseController
 {
@@ -35,7 +36,7 @@ class RedBookController extends BaseController
         }
 
         $detail = DB::table('red_books')->where('id',$id)->first();
-        return response()->success($detail);
+        return response()->success(json_decode(json_encode($detail),true));
     }
 
     public function getChapterList(Request $request) {

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

@@ -0,0 +1,98 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: z-yang
+ * Date: 2019/7/25
+ * Time: 10:29
+ */
+
+namespace App\Http\Controllers\Wap\Pay;
+
+use GuzzleHttp\Client;
+use Illuminate\Routing\Controller;
+use Illuminate\Http\Request;
+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();
+    }
+
+    public function getH5RedirectUrl(Request $request){
+        $app_id = 'Aekgrv87115wxnl715';
+        $app_secret = '57gwsnd158ib2sn7wluq5716brp8fzm';
+        $key = 'sn7wluq5716brp8fzm';
+        //$plan_id = 124768;
+        $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;
+        return $client->get($url)->getBody()->getContents();
+    }
+
+    public function getWechatRedirectUrl(Request $request){
+        $app_id = 'Aekgrv87115wxnl715';
+        $app_secret = '57gwsnd158ib2sn7wluq5716brp8fzm';
+        $key = 'sn7wluq5716brp8fzm';
+        //$plan_id = 124768;
+        $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'));
+        $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();
+    }
+
+    public function signCallBack(Request $request){
+        Log::info('signCallBack------------------------------------------signCallBack');
+        Log::info($request->all());
+        Log::info($request->getMethod());
+        Log::info('signCallBack-------------------end-----------------------signCallBack');
+
+    }
+
+    public function orderCallBack(Request $request){
+        Log::info('orderCallBack------------------------------------------orderCallBack');
+        Log::info();
+        Log::info($request->all());
+        Log::info($request->getMethod());
+        Log::info('orderCallBack--------------------endend----------------------orderCallBack');
+    }
+
+    public function monthSignCallBack(Request $request){
+        $key = 'sn7wluq5716brp8fzm';
+        $app_id = $request->get('app_id');
+        $plan_id = $request->get('plan_id');
+        $user_id = $request->get('user_id');
+        $change_type = $request->get('change_type');
+        $sign = _sign(compact('app_id','plan_id','user_id','change_type'),$key.$key);
+        $sign = strtoupper($sign);
+        if($sign == $request->get('sign')){
+
+        }
+    }
+}

+ 134 - 3
app/Http/Controllers/Wap/Pay/OrdersController.php

@@ -770,11 +770,11 @@ class OrdersController extends Controller
         $order = (string)$order;
         $order_info = OrderService::getByTradeNo($order);
         $uid = $order_info->uid;
-        //$bind_info = UserBindPhoneService::bindInfo($uid);
-        $bind_info = false;
+        $bind_info = UserBindPhoneService::bindInfo($uid);
+        //$bind_info = false;
         $page = 'pay.order.wait';
         if(!$bind_info){
-            //$page = 'pay.order.bindPhone';
+            $page = 'pay.order.bindPhone';
         }
         $url = urldecode($request->input('redirect'));
         return view($page, compact('order', 'url','from'));
@@ -1330,6 +1330,137 @@ class OrdersController extends Controller
         echo "success";
     }
 
+    //平安银行支付回调
+    function wcback_originbank(Request $request)
+    {
+        Log::info($request->all());
+        Log::info('wcback_palmpay_request');
+        try {
+            $data = $request->except('_url');
+            unset($data['sign']);
+
+            //订单
+            $trade_no = $data['out_no'];
+            $order = OrderService::getByTradeNo($trade_no);
+            if (!$order) die('failed');
+
+            $pay_merchant = DB::table('pay_merchants')->select('appid', 'source', 'config_info')->where('id', $order->pay_merchant_id)->first();
+
+            // 防止重复推送
+            if (isset($order->status) && $order->status == 'PAID') {
+                Log::info('has_pay:' . $trade_no);
+                echo 'success';
+                exit();
+            }
+
+            //校验签名
+//            $sign = _sign($data, json_decode($pay_merchant->config_info, 1)['appKey']);
+//            if ($sign != $data['sign']) die('failed');
+
+            $trade_result = json_decode($data['trade_result'],true);
+            $transaction_id = $trade_result['transaction_id'];
+
+            if ($trade_result['return_code'] == 'SUCCESS') {
+                Log::info('wcback_palmpay_notify_sign_success');
+                // 修改表比较多,开启事务
+                DB::beginTransaction();
+
+                $uid = $order->uid;
+                $distribution_channel_id = $order->distribution_channel_id;
+                $product_id = $order->product_id;
+                $product = ProductService::getProductSingle($product_id);
+                $send_order_id = $order->send_order_id;
+                $price = $product->price;
+                Log::info('save_order_end');
+
+                Log::info($product);
+
+                Log::info('product_type:' . $product->type);
+                $prize_fee = (int)(($product->price * 100) * 0.1);
+                $this->substituteOrderPrice($order->id, $prize_fee);
+                $this->smartPushTestBookPaidUv($order->from_bid, $order->uid, $order->price);
+                //获取用户充值次数
+                $order->pay_type = $this->getChargeTimes($order->uid);
+                // 更新其他定制Order表
+                if ($product->type == 'YEAR_ORDER') {
+                    Log::info('YEAR_ORDERYEAR_ORDERYEAR_ORDERYEAR_ORDERYEAR_ORDERYEAR_ORDERYEAR_ORDERYEAR_ORDER');
+                    $order_type = 'YEAR';
+                    $this->yearOrder($uid, $distribution_channel_id, $price, $send_order_id);
+                    $order->order_type = $order_type;
+                    $order->status = 'PAID';
+                    $order->pay_end_at = date('Y-m-d H:i:s');
+                    $order->transaction_id = $transaction_id;
+                    $order->save();
+                } elseif ($product->type == 'BOOK_ORDER') {
+                    Log::info('BOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDERBOOK_ORDER');
+                    $order_type = 'BOOK';
+                    $this->bookOrder($product_id, $uid, $send_order_id, $price, $distribution_channel_id);
+                    $order->order_type = $order_type;
+                    $order->status = 'PAID';
+                    $order->pay_end_at = date('Y-m-d H:i:s');
+                    $order->transaction_id = $transaction_id;
+                    $order->save();
+                } elseif ($product->type == 'TICKET_RECHARGE' || $product->type == 'NEW_USER') {
+                    Log::info('TICKET_RECHARGETICKET_RECHARGETICKET_RECHARGETICKET_RECHARGETICKET_RECHARGE');
+                    $order_type = 'RECHARGE';
+                    $this->userCharge($product, $uid);
+                    $order->order_type = $order_type;
+                    $order->status = 'PAID';
+                    $order->pay_end_at = date('Y-m-d H:i:s');
+                    $order->transaction_id = $transaction_id;
+                    $order->save();
+                } elseif ($product->type == 'FOREVER') {
+                    Log::info('FOREVER------------------------FOREVER');
+                    $order_type = 'FOREVER';
+                    $this->foreverFreeOrder($uid, $distribution_channel_id, $price, $send_order_id);
+                    $order->order_type = $order_type;
+                    $order->status = 'PAID';
+                    $order->pay_end_at = date('Y-m-d H:i:s');
+                    $order->transaction_id = $transaction_id;
+                    $order->save();
+                }
+                $this->successPayPushMsg($uid, $product, $order->id);
+                $this->orderStatistical($order);
+                DB::commit();
+                //redis 删除未支付的uid
+                try {
+                    $key = 'leyuee:to_send_not_pay_uid:distribution_channel_id:' . $distribution_channel_id;
+                    Redis::hdel($key, $uid);
+                } catch (\Exception $e) {
+                    Log::info('redis remote error-----------------------');
+                    Log::info($e);
+                }
+
+                // 注册动作-》回调订单
+                $action_type = 'CallBackOrder';
+                $param = [
+                    'order_sn' => isset($trade_no) ? $trade_no : '0',
+                    'openid' => isset($uid) ? $uid : '0',// 没有openid,用uid写log
+                ];
+                UserService::PushUserActionToQueue($action_type, $distribution_channel_id, $param);
+
+                $this->userProperty($uid,$price,$product->type,$order->activity_id);
+                $this->huaweiActivity($order->activity_id,$uid,$product_id);
+                //交换订单时间
+                $this->exchangeUpdateAndCreated($order->id);
+
+            }else {
+
+                Log::info('wcback_palmpay_notify_sign_fail');
+            }
+        } catch (\Exception $e) {
+            var_dump($e->getMessage());
+            DB::rollBack();
+            Log::info('receive_wcback_palmpay_ept:' . $e->getMessage());
+            echo 'fail';
+            Log::info('pay_callback_end error');
+            return;
+        }
+        Log::info('pay_callback_end');
+
+        echo "success";
+    }
+
     /**
      * 公众号签名@华灯初上
      * @param $params

+ 24 - 7
app/Http/Controllers/Wap/Web/ActivityController.php

@@ -382,17 +382,24 @@ class ActivityController extends BaseController
             $redirect_url = urldecode($redirect_url);
         }
 
-        $product_ids = [6621, 6622,6623];
-
+        //$product_ids = [6621, 6622,6623];
+        $imgs = [
+            'page_bd_img'=>'https://cdn-novel.iycdm.com/h5/activity-2019-07-25/bg.jpg',
+            'page_btn_pre_img'=>'https://cdn-novel.iycdm.com/h5/activity-2019-07-25/undone.png',
+            'page_btn_doing_img'=>'https://cdn-novel.iycdm.com/h5/activity-2019-07-25/doing.png',
+            'page_btn_end_img'=>'https://cdn-novel.iycdm.com/h5/activity-2019-07-25/over.png'
+        ];
         //未开始
         if (time() < strtotime($activity_info->start_time)) {
-            return view('pay.activity.summerHoliday', ['url' => ['javascript:void(0)', 'javascript:void(0)','javascript:void(0)'], 'code' => -1]);
+            //return view('pay.activity.summerHoliday', ['url' => ['javascript:void(0)', 'javascript:void(0)','javascript:void(0)'], 'code' => -1]);
+            return view('pay.order.common', ['url' => [], 'code' => 1, 'img' => $imgs]);
         }
         //结束
         if (time() > strtotime($activity_info->end_time)) {
+            //return view('pay.order.common', ['url' => [], 'code' => 2, 'img' => $imgs]);
             return view('pay.activity.summerHoliday', ['url' => ['javascript:void(0)', 'javascript:void(0)','javascript:void(0)'], 'code' => -2]);
         }
-        $url = [];
+        /*$url = [];
         foreach ($product_ids as $product_id) {
             $param = [
                 'uid' => $this->uid,
@@ -404,9 +411,19 @@ class ActivityController extends BaseController
                 'limit' => 100
             ];
             $url[] = env('CREATE_PAY_URL') . '?' . http_build_query($param);
-        }
-
-        return view('pay.activity.summerHoliday', ['url' => $url, 'code' => 0]);
+        }*/
+        $param = [
+            'uid' => $this->uid,
+            'distribution_channel_id' => $this->distribution_channel_id,
+            'product_id' => $activity_info->product_id,
+            'activity_id' => $activity_info->id,
+            'fromtype' => $from,
+            'pay_redirect_url' => $redirect_url,
+            'limit' => 100,
+        ];
+        $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
+        return view('pay.order.common', ['url' => $url, 'code' => 0, 'img' => $imgs]);
+        //return view('pay.activity.summerHoliday', ['url' => $url, 'code' => 0]);
     }
 
     public function crmYearActivity(Request $request)

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

@@ -498,7 +498,8 @@ class WelcomeController extends BaseController
                     } else {
                         $activity_img = 'https://cdn-novel.iycdm.com/h5/activity-2019-05-10/reader-50.jpg';
                     }*/
-                    $activity_img = sprintf('https://cdn-novel.iycdm.com/h5/activity-2019-07-10/reader-banner%s.jpg',random_int(1,3));
+                    //$activity_img = sprintf('https://cdn-novel.iycdm.com/h5/activity-2019-07-10/reader-banner%s.jpg',random_int(1,3));
+                    $activity_img = 'https://cdn-novel.iycdm.com/h5/activity-2019-07-25/reader-banner.png';
                     $url = $h5_scheme . '://' . _domain() . $activity_info->activity_page . '&fromtype=reader';
                 }
             }

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

@@ -15,7 +15,15 @@ Route::group(['domain'=>env('PAY_WAP_DOMAIN'),'namespace'=>'App\Http\Controllers
     Route::any('pay/wcback_official','Pay\OrdersController@wcback_official');
     Route::any('pay/wcback_lianlianpay','Pay\OrdersController@wcback_lianlianpay');
     Route::any('pay/wcback_palmpay','Pay\OrdersController@wcback_palmpay');
+    Route::any('pay/wcback_originbank','Pay\OrdersController@wcback_originbank');
     Route::post('pay/reportError','Pay\OrdersController@reportError');
+    //包月
+    Route::get('monthpay/getRedirectUrl','Pay\getH5RedirectUrl@getRedirectUrl');
+    Route::get('monthpay/getH5RedirectUrl','Pay\MonthOrderController@getH5RedirectUrl');
+    Route::get('monthpay/getWechatRedirectUrl','Pay\MonthOrderController@getWechatRedirectUrl');
+    Route::get('monthpay/signcallback','Pay\MonthOrderController@signCallBack');
+    Route::any('monthpay/ordercallback','Pay\MonthOrderController@orderCallBack');
+
 });
 Route::group(['domain'=>env('OFFICIAL_AUTH_FOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){
     //避免人工上传授权目录验证文件
@@ -38,9 +46,9 @@ Route::group(['domain'=>env('HELP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wa
 });
 //分享中间页
 Route::group(['domain'=>env('WAP_DOMAIN'),'prefix'=>'api','namespace'=>'App\Http\Controllers\Wap\Book'],function(){//,'middleware'=>'ReadOauth'
-    Route::any('rea_book/getLoop','RedBookController@getLoop');
-    Route::any('rea_book/getBookDetail','RedBookController@getBookDetail');
-    Route::any('rea_book/getChapterList','RedBookController@getChapterList');
+    Route::any('red_book/getLoop','RedBookController@getLoop');
+    Route::any('red_book/getBookDetail','RedBookController@getBookDetail');
+    Route::any('red_book/getChapterList','RedBookController@getChapterList');
 
 });
 

+ 17 - 65
app/Libs/Pay/Merchants/OriginBank.php

@@ -25,55 +25,46 @@ class OriginBank
         ];
         $data = [
             'out_no'=>$data['trade_no'],
-            'pmt_tag'=>'WeixinBERL',
-            'ord_name'=>'小说充值',
+            'pmt_tag'=>'WeixinOL',
+            'ord_name'=>$data['body'],
             'original_amount'=>$data['price'],
             'trade_amount'=>$data['price'],
-            //'notify_url'=>env('ORIGINBANK_NOFITY_URL'),
+            'notify_url'=>env('ORIGINBANK_NOFITY_URL'),
             'sub_appid'=>$this->sub_appid,
-            'sub_openid'=>$data['openid']
+            'sub_openid'=>$data['openid'],
+            'JSAPI'=>1
         ];
 
-//        $data =[];
-//        $data['out_no'] = "123456";
-//        $data['pmt_tag'] = "WeixinBERL";
-//        $data['original_amount'] = "1";
-//        $data['trade_amount'] = "1";
-//        $data['ord_name'] = "购买物品订单名称";
-
-        dump($data);
         $base_data['data'] = $this->encrypt(json_encode($data),$this->open_key);
-        dump($data);
-
-        dump($this->decrypt($base_data['data'],$this->open_key));
         $base_data['sign'] = $this->signs($base_data);
 
-        dump('base_data');dump($base_data);
-
         $response = $this->PayClient->request('POST','/mct1/payorder',['form_params'=>$base_data])->getBody()->getContents();
-        dd(json_decode($response,1));
-       // return $this->getPayInfo($response);
+        return $this->getPayInfo($response);
     }
 
     function getPayInfo($response)
     {
         try{
             $return_info = json_decode($response,1);
-            //dd($return_info);
             if($return_info['errcode'] == 0)
             {
+                $data = json_decode($this->decrypt($return_info['data'],$this->open_key,true),true);
+                $trade_result = json_decode($data['trade_result'],true);
+                $wc_pay_data = json_decode($trade_result['wc_pay_data'],true);
                 $pay_info = [
-                    'appId'=>$return_info['data']['appId'],
-                    'timeStamp'=>$return_info['data']['timeStamp'],
-                    'nonceStr'=>$return_info['data']['nonceStr'],
-                    'signType'=>$return_info['data']['signType'],
-                    'package'=>$return_info['data']['package'],
-                    'paySign'=>$return_info['data']['paySign']
+                    'appId'=>$wc_pay_data['appId'],
+                    'timeStamp'=>$wc_pay_data['timeStamp'],
+                    'nonceStr'=>$wc_pay_data['nonceStr'],
+                    'signType'=>$wc_pay_data['signType'],
+                    'package'=>$wc_pay_data['package'],
+                    'paySign'=>$wc_pay_data['paySign']
                 ];
                 return $pay_info;
             }
         }catch (\Exception $e)
         {
+            echo $e->getMessage();
+            Log::error($response);
             return null;
         }
 
@@ -96,7 +87,6 @@ class OriginBank
     #加密
     private function encrypt($input, $key) {
         $size = @mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
-        dump('size');dump($size);
         $input = $this->pkcs5_pad($input, $size);
         $td = @mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
         $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
@@ -108,44 +98,6 @@ class OriginBank
         return $data;
     }
 
-    public function encrypt3($key, $iv, $data)
-    {
-        /**
-         * 打开加密
-         */
-        $td = @mcrypt_module_open(MCRYPT_RIJNDAEL_128, "", MCRYPT_MODE_CBC, "");
-        /**
-         * 初始化加密
-         */
-        @mcrypt_generic_init($td, $key, $iv);
-        /**
-         * 加密
-         */
-        $encrypted = @mcrypt_generic($td, $data);
-        /**
-         * 清理加密
-         */
-        @mcrypt_generic_deinit($td);
-        /**
-         * 关闭
-         */
-        @mcrypt_module_close($td);
-        return base64_encode($encrypted);
-    }
-
-    public function encrypt2($input, $key)
-    {
-        $data = openssl_encrypt($input, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
-        $data = base64_encode($data);
-        return $data;
-    }
-
-    public function decrypt2($sStr, $sKey)
-    {
-        $decrypted = openssl_decrypt(base64_decode($sStr), 'AES-128-ECB', $sKey, OPENSSL_RAW_DATA);
-        return $decrypted;
-    }
-
     private function pkcs5_pad ($text, $blocksize) {
         $pad = $blocksize - (strlen($text) % $blocksize);
         return $text . str_repeat(chr($pad), $pad);

+ 4 - 4
resources/views/wap/index.blade.php

@@ -9,7 +9,7 @@
     <script>window.VueRouter || document.write('<script src="https://cdn-novel.iycdm.com/static/vue-router.min.js"><\/script>')</script>
     <script>(window.Vue && window.VueLazyload) || document.write('<script src="https://cdn-novel.iycdm.com/static/vue-lazyload.js"><\/script>')</script>
     <title>{{$title}}</title>
-    <link href=https://cdn-novel.iycdm.com/static2019-7-24/css/app.d9184aa90ae483eaf4a7fa90e28075db.css rel=stylesheet>
+    <link href=https://cdn-novel.iycdm.com/static2019-7-26/css/app.4251825a5328878f7948281866d47f1c.css rel=stylesheet>
 </head>
 <body>
 <div id=app></div>
@@ -32,8 +32,8 @@
     })();</script>
 <script id=options>window.options = {!! $options!!};</script>
 <script type=text/javascript
-        src=https://cdn-novel.iycdm.com/static2019-7-24/js/manifest.cc14524545b1dbabac3c.js></script>
-<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-7-24/js/vendor.cd37d0f2c51da0dd309b.js></script>
-<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-7-24/js/app.a49a111c9f73ac3cf7c2.js></script>
+        src=https://cdn-novel.iycdm.com/static2019-7-26/js/manifest.db64e4310974e676f24e.js></script>
+<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-7-26/js/vendor.fa223fb19e81cd0aa605.js></script>
+<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-7-26/js/app.af5e191228d51cbb679a.js></script>
 </body>
 </html>