hrjy 3 lat temu
rodzic
commit
11f7fd37ed

+ 8 - 2
app/admin/controller/finance/UserExtract.php

@@ -169,7 +169,10 @@ class UserExtract extends AuthController
                 'notifyUrl' => '',// 回调地址
                 'pan'  => $extract['alipay_code'], // 银行卡号
                 'orderTitle' => '提现', // 提款标题
-                'tranDateTime' => date('YmdHis')
+                'tranDateTime' => date('YmdHis'),
+                'remark' => '提现',
+                'agreement_no' => '20225408824009447117',
+                'payer_identity' => '2088610345275722',
             ];
         }elseif ($extract['extract_type'] == 'bank'){
             $data = [
@@ -181,7 +184,10 @@ class UserExtract extends AuthController
                 'notifyUrl' => '',// 回调地址
                 'pan'  => $extract['bank_code'], // 银行卡号
                 'orderTitle' => '提现', // 提款标题
-                'tranDateTime' => date('YmdHis')
+                'tranDateTime' => date('YmdHis'),
+                'remark' => '提现',
+                'agreement_no' => '20225408824009447117',
+                'payer_identity' => '2088610345275722',
             ];
         }
         $data['sign'] = sing($data, 'gcn08Swhn3W5ZrTLAJANtOoZd7AXWGlV');

+ 1 - 0
app/admin/model/finance/FinanceModel.php

@@ -104,6 +104,7 @@ class FinanceModel extends BaseModel
         $model = self::getModelTime($time, self::alias('A')
             ->join('user B', 'B.uid=A.uid')
             ->where('A.category', 'not in', 'integral')
+            ->where('A.status', 1)
             ->order('A.add_time desc'), 'A.add_time');
         if (trim($where['type']) != '') {
             $model = $model->where('A.type', $where['type']);

+ 19 - 0
app/api/controller/order/StoreOrderController.php

@@ -241,6 +241,17 @@ class StoreOrderController
                             return app('json')->status('pay_error', $errorinfo);
                     }
                     break;
+                case 'purple':
+                    // 阳光积分付款
+                    if (StoreOrder::purplePay($orderId, $request->uid(), $formId))
+                        return app('json')->status('success', '阳光积分支付成功', $info);
+                    else {
+                        $errorinfo = StoreOrder::getErrorInfo();
+                        if (is_array($errorinfo))
+                            return app('json')->status($errorinfo['status'], $errorinfo['msg'], $info);
+                        else
+                            return app('json')->status('pay_error', $errorinfo);
+                    }
                 case 'offline':
                     return app('json')->status('success', '订单创建成功', $info);
                     break;
@@ -365,6 +376,14 @@ class StoreOrderController
                     return app('json')->fail(is_array($error) && isset($error['msg']) ? $error['msg'] : $error);
                 }
                 break;
+            case 'purple':
+                if (StoreOrder::purplePay($order['order_id'], $request->uid()))
+                    return app('json')->status('success', '阳光积分支付成功');
+                else {
+                    $error = StoreOrder::getErrorInfo();
+                    return app('json')->fail(is_array($error) && isset($error['msg']) ? $error['msg'] : $error);
+                }
+                break;
             case 'app':
                 $res =  StoreOrder::appPay($order, $request->uid());
                 break;

+ 45 - 1
app/models/store/StoreOrder.php

@@ -429,6 +429,7 @@ class StoreOrder extends BaseModel
                     'deduction_price' => $deductionPrice,
                     'totalIntegral' => $payIntegral,
                     'SurplusIntegral' => $SurplusIntegral,
+                    'Purple_integral' => $payPrice * 1.01
                 ];
             }
             $orderDate = StoreOrder::where('uid', $uid)->where('paid', 1)->where('pay_type', '<>', 'integral')->where('add_time', '>=', strtotime('2022-8-5 12:24:00'))->where('cumulative', '<', 2000)->where('use_integral', '=', 0)->find();
@@ -710,6 +711,42 @@ class StoreOrder extends BaseModel
         return $res;
     }
 
+    /**
+     * 余额支付
+     * @param $order_id
+     * @param $uid
+     * @param string $formId
+     * @return bool
+     * @throws \think\Exception
+     * @throws DataNotFoundException
+     * @throws ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public static function purplePay($order_id, $uid, $formId = '')
+    {
+        $orderInfo = self::where('uid', $uid)->where('order_id', $order_id)->where('is_del', 0)->find();
+        if (!$orderInfo) return self::setErrorInfo('订单不存在!');
+//        if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
+//        if($orderInfo['pay_type'] != 'yue') return self::setErrorInfo('该订单不能使用余额支付!');
+        $userInfo = User::getUserInfo($uid);
+        $orderInfo['pay_price'] = $orderInfo['pay_price'] * 1.01;
+        if ($userInfo['purple_integral'] < $orderInfo['pay_price'])
+            return self::setErrorInfo(['status' => 'pay_deficiency', 'msg' => '阳光积分不足' . floatval($orderInfo['pay_price'])]);
+        self::beginTrans();
+
+        $res1 = false !== User::bcDec($uid, 'purple_integral', $orderInfo['pay_price'], 'uid');
+        $res3 = self::paySuccess($order_id, 'purple', $formId);//余额支付成功
+        try {
+            PaymentRepositories::yuePayProduct($userInfo, $orderInfo);
+        } catch (\Exception $e) {
+            self::rollbackTrans();
+            return self::setErrorInfo($e->getMessage());
+        }
+        $res = $res1 && $res3;
+        self::checkTrans($res);
+        return $res;
+    }
+
     /**
      * 微信支付 为 0元时
      * @param $order_id
@@ -866,7 +903,14 @@ class StoreOrder extends BaseModel
             StoreOrderStatus::status($oid, 'pay_success', '用户付款成功');
         }
         $now_money = User::where('uid', $order['uid'])->value('now_money');
-        UserBill::expend('购买商品', $order['uid'], 'now_money', 'pay_money', $order['pay_price'], $order['id'], $now_money, '支付' . floatval($order['pay_price']) . '元购买商品');
+        if ($paytype == 'purple'){
+            $order['pay_price'] = $order['pay_price'] * 1.01;
+            $order->save();
+            $purple_integral = User::where('uid', $order['uid'])->value('purple_integral');
+            UserBill::expend('购买商品', $order['uid'], 'purple_integral', 'pay_product', $order['pay_price'], $order['id'], $purple_integral, '阳光积分支付' . floatval($order['pay_price']) . '元购买商品');
+        }else{
+            UserBill::expend('购买商品', $order['uid'], 'now_money', 'pay_money', $order['pay_price'], $order['id'], $now_money, '支付' . floatval($order['pay_price']) . '元购买商品');
+        }
         //支付成功后
         event('OrderPaySuccess', [$order, $formId]);
         $res3 = StoreOrder::gainWhiteIntegral($order);