Wang Chen 4 年 前
コミット
963b6abfe4

+ 6 - 36
app/Http/Controllers/QuickApp/Order/OrdersController.php

@@ -7,9 +7,7 @@ use App\Libs\Utils;
 use App\Modules\Activity\Models\Activity;
 use App\Modules\Statistic\Services\AdVisitStatService;
 use App\Http\Controllers\QuickApp\BaseController;
-use App\Modules\User\Models\QappPackage;
 use Illuminate\Http\Request;
-
 use App\Modules\Subscribe\Services\BookOrderService;
 use App\Modules\Subscribe\Services\ChapterOrderService;
 use App\Modules\Subscribe\Services\OrderService;
@@ -458,6 +456,9 @@ class OrdersController extends BaseController
             }
         }
 
+        // 包名
+        $package = $request->header('x-package', '');
+
         return compact(
             'distribution_channel_id',
             'uid',
@@ -469,7 +470,8 @@ class OrdersController extends BaseController
             'from_bid',
             'from_type',
             'order_type',
-            'activity_id'
+            'activity_id',
+            'package'
         );
     }
 
@@ -506,17 +508,6 @@ class OrdersController extends BaseController
     {
         if ($params = $this->getPayParams($request)) {
             $params['pay_merchant_id'] = $this->app_pay_merchat_id;
-
-            // 针对聚裕的包无法支付的问题(注册时传入了仙女阅读的包名,导致支付时取的支付信息不一致)
-            $package = $request->header('x-package', '');
-            if ($package === 'com.juyu.kuaiying.rmyq') {
-                $packageInfo   = QappPackage::getPackageByPackage($package);
-                $payMerchantId = getProp($packageInfo, 'app_pay_merchat_id');
-                if ($payMerchantId) {
-                    $params['pay_merchant_id'] = $payMerchantId;
-                }
-            }
-
         } else {
             return response()->error('QAPP_PARAM_ERROR');
         }
@@ -566,16 +557,6 @@ class OrdersController extends BaseController
     {
         if ($params = $this->getPayParams($request)) {
             $params['pay_merchant_id'] = $this->h5_pay_merchat_id;
-
-            // 针对聚裕的包无法支付的问题(注册时传入了仙女阅读的包名,导致支付时取的支付信息不一致)
-            $package = $request->header('x-package', '');
-            if ($package === 'com.juyu.kuaiying.rmyq') {
-                $packageInfo   = QappPackage::getPackageByPackage($package);
-                $payMerchantId = getProp($packageInfo, 'h5_pay_merchat_id');
-                if ($payMerchantId) {
-                    $params['pay_merchant_id'] = $payMerchantId;
-                }
-            }
         } else {
             return response()->error('QAPP_PARAM_ERROR');
         }
@@ -615,18 +596,7 @@ class OrdersController extends BaseController
     {
         if ($params = $this->getPayParams($request)) {
             $params['pay_merchant_id'] = $this->ali_pay_merchat_id;
-
-            // 针对聚裕的包无法支付的问题(注册时传入了仙女阅读的包名,导致支付时取的支付信息不一致)
-            $package = $request->header('x-package', '');
-            if ($package === 'com.juyu.kuaiying.rmyq') {
-                $packageInfo   = QappPackage::getPackageByPackage($package);
-                $payMerchantId = getProp($packageInfo, 'ali_pay_merchat_id');
-                if ($payMerchantId) {
-                    $params['pay_merchant_id'] = $payMerchantId;
-                }
-            }
-
-            $params['type'] = 'App';
+            $params['type']            = 'App';
         } else {
             return response()->error('QAPP_PARAM_ERROR');
         }

+ 14 - 10
app/Http/Middleware/QuickAppGetUserFromToken.php

@@ -24,17 +24,24 @@ class QuickAppGetUserFromToken extends BaseMiddleware
      */
     public function handle(Request $request, Closure $next)
     {
-        $version = $request->header('X-Version', '');
+        // 获取头部信息
+        $package     = $request->header('x-package', '');
+        $provider    = $request->header('x-provider', '');
+        $regId       = $request->header('x-regid', '');
+        $sendOrderId = $request->header('send-order-id', 0);
+
+        // 判断是否登录
         if (!$token = $this->auth->setRequest($request)->getToken()) {
             return response()->error('QAPP_NOT_LOGIN');
         }
         try {
-            $user          = $this->auth->authenticate($token);
-            $send_order_id = $request->header('send-order-id', 0);
-            if ($send_order_id) {
-                UserService::setUserSendOrder($user->id, $send_order_id);
+            $user = $this->auth->authenticate($token);
+            if ($sendOrderId) {
+                UserService::setUserSendOrder($user->id, $sendOrderId);
             }
-            (new QappUserService)->setGolableUser($user->id);
+
+            // 设置全局信息
+            (new QappUserService)->setGolableUser($user->id, $package);
         } catch (TokenExpiredException $e) {
             return response()->error('QAPP_TOKEN_ERROR');
         } catch (JWTException $e) {
@@ -45,10 +52,7 @@ class QuickAppGetUserFromToken extends BaseMiddleware
         }
 
         // 更新用户reg_id
-        $uid      = $user->id;
-        $package  = $request->header('x-package', '');
-        $provider = $request->header('x-provider', '');
-        $regId    = $request->header('x-regid', '');
+        $uid = $user->id;
         PushService::setUserRegId($uid, $regId, $provider, $package);
 
         // 推送pv、uv统计

+ 11 - 2
app/Modules/Trade/Pay/AliOrderArousePay.php

@@ -12,9 +12,18 @@ class AliOrderArousePay extends OrderArousePayAbstract
     public function arouse(array $data)
     {
         $pay_merchant_id = (int)$data['pay_merchant_id'];
-        $ali_param       = [
+
+        // 订单描述,针对聚裕的包无法支付的问题(注册时传入了仙女阅读的包名,导致支付时取的支付信息不一致)
+        $package = getProp($data, 'package');
+        if ($package && $package === 'com.juyu.kuaiying.rmyq') {
+            $body = $this->getSubjectNameByPackage($package);
+        } else {
+            $body = $this->getSubjectName($data['distribution_channel_id']);
+        }
+
+        $ali_param = [
             'body'            => '小说阅读',
-            'subject'         => $this->getSubjectName($data['distribution_channel_id']),
+            'subject'         => $body,
             'out_trade_no'    => $data['trade_no'],
             'timeout_express' => '90m',
             'total_amount'    => $data['price'] / 100,

+ 7 - 0
app/Modules/Trade/Pay/OrderArousePayAbstract.php

@@ -58,4 +58,11 @@ abstract class OrderArousePayAbstract
         $name    = $package ? $package->name : '';
         return "搜索快应用({$name})继续阅读,投诉电话:0571-56680189";
     }
+
+    protected function getSubjectNameByPackage(string $package)
+    {
+        $package = QappPackage::where('package', $package)->select('name')->first();
+        $name    = $package ? $package->name : '';
+        return "搜索快应用({$name})继续阅读,投诉电话:0571-56680189";
+    }
 }

+ 10 - 1
app/Modules/Trade/Pay/WxOrderArousePay.php

@@ -14,12 +14,21 @@ class WxOrderArousePay extends OrderArousePayAbstract
         $pay_merchant_id = (int)$data['pay_merchant_id'];
         $config          = PayMerchantService::findPayConfig($pay_merchant_id);
         $pay             = PayFactory::official($config);
+
+        // 订单描述,针对聚裕的包无法支付的问题(注册时传入了仙女阅读的包名,导致支付时取的支付信息不一致)
+        $package = getProp($data, 'package');
+        if ($package && $package === 'com.juyu.kuaiying.rmyq') {
+            $body = $this->getSubjectNameByPackage($package);
+        } else {
+            $body = $this->getSubjectName($data['distribution_channel_id']);
+        }
+
         try {
             $payOrder = [
                 'trade_type' => $data['trade_type'], // 交易类型
                 'trade_no'   => $data['trade_no'], // 订单号
                 'price'      => $data['price'], // 订单金额,单位:分
-                'body'       => $this->getSubjectName($data['distribution_channel_id']), // 订单描述
+                'body'       => $body, // 订单描述
                 'create_ip'  => _getIp(), // 支付人的 IP
                 'remark'     => $pay_merchant_id
             ];

+ 18 - 7
app/Modules/User/Services/QappUserService.php

@@ -111,9 +111,9 @@ class QappUserService
         }
     }
 
-    public function setGolableUser(int $uid)
+    public function setGolableUser(int $uid, string $package)
     {
-        $user_info                     = $this->getQAppUserByUid($uid);
+        $user_info                     = $this->getQAppUserByUid($uid, $package);
         $qapp_user                     = app()->make('qapp_user');
         $qapp_user->id                 = $user_info->id;
         $qapp_user->uid                = $user_info->uid;
@@ -142,15 +142,26 @@ class QappUserService
 
     /**
      * 根据uid获取快应用用户信息
+     * @param int    $uid
+     * @param string $package
+     * @return mixed
      */
-    public function getQAppUserByUid(int $uid)
+    public function getQAppUserByUid(int $uid, string $package = '')
     {
         $qapp_user = QappUser::where('uid', $uid)->first();
         if ($qapp_user) {
-            $user                          = User::find($uid);
-            $qapp_user->user               = $user;
-            $qapp_user->send_order_id      = UserService::getUserSendOrder($uid);
-            $package_info                  = QappPackage::where('channel_id', $user->distribution_channel_id)->first();
+            $user                     = User::find($uid);
+            $qapp_user->user          = $user;
+            $qapp_user->send_order_id = UserService::getUserSendOrder($uid);
+
+            // 针对聚裕的包无法支付的问题(注册时传入了仙女阅读的包名,导致支付时取的支付信息不一致)
+            if ($package && $package === 'com.juyu.kuaiying.rmyq') {
+                $package_info = QappPackage::where('package', $package)->first();
+            } else {
+                $package_info = QappPackage::where('channel_id', $user->distribution_channel_id)->first();
+            }
+
+            // 支付id
             $qapp_user->app_pay_merchat_id = $package_info->app_pay_merchat_id;
             $qapp_user->h5_pay_merchat_id  = $package_info->h5_pay_merchat_id;
             $qapp_user->ali_pay_merchat_id = $package_info->ali_pay_merchat_id;