Bläddra i källkod

支付与加菜

gorden 5 månader sedan
förälder
incheckning
7b0f5c4b6c
2 ändrade filer med 46 tillägg och 15 borttagningar
  1. 24 4
      app/api/controller/pay/AlipayController.php
  2. 22 11
      app/api/controller/pay/WxpayController.php

+ 24 - 4
app/api/controller/pay/AlipayController.php

@@ -17,6 +17,8 @@ class AlipayController
     public function index(Request $request)
     {
         $params = $request->all();
+        \support\Log::info("开始获取支付宝支付参数",$params);
+
         if (!isset($params['order_id'])) {
             return json_fail('参数异常');
         }
@@ -28,6 +30,20 @@ class AlipayController
         if (!$payDetail) {
             return json_fail('订单异常');
         }
+
+        if ($payDetail->pay_category == 'MEALS') {
+            if (!empty($params['pay_amount']) && $params['pay_amount'] != $payDetail->pay_amount) {
+                return json_fail("支付金额与订单金额不符");
+            }
+            $payObjectJson = [];
+            if (!empty($payDetail->join_pay_object_json)) {
+                $payObjectJson = json_decode($payDetail->join_pay_object_json, true);
+            }
+            // 标记发生过支付请求
+            $payObjectJson['pay_marking'] = 'Y';
+            $payDetail->join_pay_object_json = json_encode($payObjectJson);
+        }
+
         $payData = [
             'out_trade_no' => $orderId,
             'subject' => '万悦康养订单',
@@ -36,7 +52,6 @@ class AlipayController
 
         Db::beginTransaction();
         try {
-
             $payDetail->pay_prepayid = 'ALIPAY';
             $payDetail->save();
             if ($params['platform'] == 'android') { // APP支付
@@ -44,18 +59,23 @@ class AlipayController
             } elseif ($params['platform'] == 'WeChat') {    // 网页支付
                 $result = Pay::alipay(config('payment.alipay'))->wap($payData)->getContent();
             } else {
-                Db::rollBack();
-                return json_fail("平台参数无效");
+                throw new \support\exception\BusinessException("平台参数无效");
             }
 
             Db::commit();
-
+            \support\Log::info("支付宝支付参数获取成功");
             return json_success('', $result);
+        }catch (\support\exception\BusinessException $e){
+            Db::rollBack();
+            \support\Log::error("支付宝支付参数获取失败",['msg'=>$e->getMessage()]);
+            return json_fail($e->getMessage());
         } catch (PayException $e) {
             Db::rollBack();
+            \support\Log::error("支付宝支付参数获取失败",['msg'=>$e->getMessage()]);
             return json_fail($e->getMessage());
         } catch (\Exception $e) {
             Db::rollBack();
+            \support\Log::error("支付宝支付参数获取失败",['msg'=>$e->getMessage()]);
             return json_fail('下单失败:' . $e->getMessage());
         }
 

+ 22 - 11
app/api/controller/pay/WxpayController.php

@@ -2,12 +2,9 @@
 
 namespace app\api\controller\pay;
 
-use app\model\Order;
 use app\model\PayDetail;
-use Payment\Common\PayException;
 use support\Db;
 use support\Request;
-use Yansongda\Pay\Exceptions\BusinessException;
 use Yansongda\Pay\Pay;
 
 class WxpayController
@@ -16,6 +13,8 @@ class WxpayController
     public function index(Request $request)
     {
         $params = $request->all();
+        \support\Log::info("开始获取微信支付参数",$params);
+
         if (!isset($params['order_id'])) {
             return json_fail('参数异常');
         }
@@ -27,6 +26,20 @@ class WxpayController
         if (!$payDetail) {
             return json_fail('订单异常');
         }
+        if (!empty($params['pay_amount']) && $params['pay_amount'] != $payDetail->pay_amount) {
+            return json_fail("支付金额与订单金额不符");
+        }
+
+        if ($payDetail->pay_category == 'MEALS'){
+            $payObjectJson = [];
+            if (!empty($payDetail->join_pay_object_json)) {
+                $payObjectJson = json_decode($payDetail->join_pay_object_json, true);
+            }
+            // 标记发生过支付请求
+            $payObjectJson['pay_marking'] = 'Y';
+            $payDetail->join_pay_object_json = json_encode($payObjectJson);
+        }
+
         $payData = [
             'out_trade_no' => $orderId,
             'body' => '万悦康养订单',
@@ -42,35 +55,33 @@ class WxpayController
                 $wxpay = Pay::wechat(config('payment.wxpay'))->app($payData)->getContent();
             }elseif ($params['platform'] == 'WeChat'){  // 公众号
                 if (empty($params['openid'])){
-                    Db::rollBack();
-                    return json_fail("缺少OpenID 参数");
+                    throw new \support\exception\BusinessException("缺少OpenID 参数");
                 }
                 $payData['openid'] = $params['openid'];
                 $config = config('payment.wxpay');
                 $wxpay = Pay::wechat($config)->mp($payData);
             }elseif ($params['platform'] == 'mp-weixin'){   // 小程序
                 if (empty($params['openid'])){
-                    Db::rollBack();
-                    return json_fail("缺少OpenID 参数");
+                    throw new \support\exception\BusinessException("缺少OpenID 参数");
                 }
                 $payData['openid'] = $params['openid'];
                 $wxpay = Pay::wechat(config('payment.wxpay'))->miniapp($payData);
             }else{
-                throw new PayException("平台参数无效");
+                throw new \support\exception\BusinessException("平台参数无效");
             }
 
             Db::commit();
+            \support\Log::info("微信支付参数获取成功");
             return json_success('', json_decode($wxpay, true));
         } catch (\support\exception\BusinessException $e) {
             Db::rollBack();
+            \support\Log::error("微信支付参数获取失败",['msg'=>$e->getMessage()]);
             return json_fail($e->getMessage());
         } catch (\Exception $e) {
             Db::rollBack();
-            dump($e->getMessage());
+            \support\Log::error("微信支付参数获取失败",['msg'=>$e->getMessage()]);
             return json_fail('下单失败:'.$e->getMessage());
         }
-
-
     }
 
     private function getConfig()