gorden 8 luni în urmă
părinte
comite
043191ca6d

+ 4 - 2
app/admin/controller/order/WholeController.php

@@ -1222,8 +1222,9 @@ class WholeController extends Curd
                 ];
                 $res = Pay::wechat(config('payment.wxpay'))->refund($wxRefundData);
                 $resArray = json_decode($res, true);
-                dump($res);
-                dump($resArray);
+                if (!$resArray['result_code'] == 'SUCCESS' || !$resArray['return_code'] == 'SUCCESS'){
+                    throw new PayException("退款失败");
+                }
             } else if ($payDetail->pay_prepayid == 'ALIPAY') {
                 // 退款
                 $alipayRefundData = [
@@ -1234,6 +1235,7 @@ class WholeController extends Curd
                 dump($res);
                 file_put_contents(runtime_path('logs/alipay.log'), $res);
                 $resArray = json_decode($res, true);
+                dump($resArray);
 
             } else if (isset($payType[1]) && $payType[1] == 'CASH') {  // 余额支付
                 $account = MemberAccount::where('join_account_member_id', $order->join_order_member_id)

+ 13 - 2
app/api/controller/pay/AlipayController.php

@@ -5,6 +5,7 @@ namespace app\api\controller\pay;
 use app\api\controller\Log;
 use app\model\Order;
 use app\model\PayDetail;
+use support\Db;
 use support\Request;
 use Yansongda\Pay\Exceptions\BusinessException;
 use Yansongda\Pay\Pay;
@@ -22,18 +23,28 @@ class AlipayController
         if (!$payDetail){
             return json_fail('订单异常');
         }
-
         $payData = [
             'out_trade_no' => $orderId,
             'subject' => '万悦康养订单',
             'total_amount' => $payDetail->pay_amount,
         ];
 
+        Db::beginTransaction();
         try {
-            return json_success('',Pay::alipay(config('payment.alipay'))->app($payData)->getContent());
+
+            $payDetail->pay_prepayid = 'ALIPAY';
+            $payDetail->save();
+
+            $result = Pay::alipay(config('payment.alipay'))->app($payData)->getContent();
+
+            Db::commit();
+
+            return json_success('',$result);
         } catch (BusinessException $e) {
+            Db::rollBack();
             return json_fail($e->getMessage());
         } catch (\Exception $e) {
+            Db::rollBack();
             return json_fail('下单失败');
         }
 

+ 8 - 0
app/api/controller/pay/WxpayController.php

@@ -4,6 +4,7 @@ namespace app\api\controller\pay;
 
 use app\model\Order;
 use app\model\PayDetail;
+use support\Db;
 use support\Request;
 use Yansongda\Pay\Exceptions\BusinessException;
 use Yansongda\Pay\Pay;
@@ -28,13 +29,20 @@ class WxpayController
             'total_fee' => $payDetail->pay_amount * 100,
         ];
 
+        Db::beginTransaction();
         try {
+            $payDetail->pay_prepayid = 'ALIPAY';
+            $payDetail->save();
+
             $alipay = Pay::wechat(config('payment.wxpay'))->app($payData)->getContent();
 
+            Db::commit();
             return json_success('', json_decode($alipay, true));
         } catch (BusinessException $e) {
+            Db::rollBack();
             return json_fail($e->getMessage());
         } catch (\Exception $e) {
+            Db::rollBack();
             return json_fail('下单失败');
         }