lip 2 órája
szülő
commit
e1dc5485f3

+ 75 - 2
app/Http/Controllers/api/Wallet.php

@@ -8,6 +8,9 @@ use App\Models\Config;
 use App\Models\Recharge;
 use App\Services\Payment\SanJinService;
 use App\Services\PaymentOrderService;
+use App\Services\QianBaoWithdrawService;
+use App\Services\Payment\QianBaoService;
+
 use Illuminate\Validation\ValidationException;
 
 use Exception;
@@ -53,7 +56,12 @@ class Wallet extends BaseController
             ]);
             $member_id = request()->user->member_id;
             $res = PaymentOrderService::createPay($member_id, $params['amount'], $params['payment_type']);
-            return $this->success($res);
+            if ($res['code'] == 0) { 
+                return $this->success($res);
+            }
+            return $this->error($res['text']);
+        } catch (ValidationException $e) {
+            return $this->error($e->validator->errors()->first());
         } catch (\Exception $e) {
             return $this->error($e->getMessage());
         }
@@ -67,7 +75,6 @@ class Wallet extends BaseController
         try {
             $member_id = request()->user->member_id;
             $params = request()->validate([
-                'amount' => ['required', 'numeric', 'min:0.01'],
                 'type' => ['required', 'string'],
             ]);
             $receivingType = ConfigService::getVal("receiving_type");
@@ -94,6 +101,8 @@ class Wallet extends BaseController
                 'qrcode' => $qrCode,
                 // 'photo' => InputFile::create($qrCode),
             ]);
+        } catch (ValidationException $e) {
+            return $this->error($e->validator->errors()->first());
         } catch (\Exception $e) {
             return $this->error($e->getMessage());
         }
@@ -130,4 +139,68 @@ class Wallet extends BaseController
         }
     }
 
+    /**
+     * 获取提现通道
+     */
+    public function withdrawChannel()
+    {
+        $list = QianBaoService::withdrawChannel();
+        $data[] = ['label' => 'USDT', 'value' => 'USDT'];
+        foreach ($list as $key => $item) {
+            $data[] = ['label' => $item, 'value' => $key];
+        }
+        return $this->success($data);
+    }
+
+    /**
+     * 提现(自动到账): DF001 支付宝转卡/DF002 支付宝转支付宝
+     */
+    public function autoPayout()
+    {
+        try {
+            $params = request()->validate([
+                'amount' => ['required', 'numeric', 'min:0.01'],
+                'channel' => ['required', 'string'],
+                'bank_name' => ['required', 'string'],
+                'account' => ['required', 'string'],
+                'card_no' => ['required', 'string'],
+            ]);
+            $member_id = request()->user->member_id;
+            $res = PaymentOrderService::autoCreatePayout($member_id, $params['amount'], $params['channel'], $params['bank_name'], $params['account'], $params['card_no']);
+            if (empty($res['text'])) { 
+                return $this->success($res);
+            }
+            return $this->error($res['text']);
+        } catch (ValidationException $e) {
+            return $this->error($e->validator->errors()->first());
+        } catch (Exception $e) {
+            return $this->error($e->getMessage());
+        }
+    }
+
+    /**
+     * 提现(手动到账): DF001 支付宝转卡; DF002 支付宝转支付宝; DF005数字人民币
+     */
+    public function payout() {
+        try {
+            $params = request()->validate([
+                'amount' => ['required', 'numeric', 'min:0.01'],
+                'channel' => ['required', 'string'],
+                'bank_name' => ['required', 'string'],
+                'account' => ['required', 'string'],
+                'card_no' => ['required', 'string'],
+            ]);
+            $member_id = request()->user->member_id;
+            $res = QianBaoWithdrawService::createOrder($member_id, $params['amount'], $params['channel'], $params['bank_name'], $params['account'], $params['card_no']);
+            if (empty($res['text'])) { 
+                return $this->success($res);
+            }
+            return $this->error($res['text']);
+        } catch (ValidationException $e) {
+            return $this->error($e->validator->errors()->first());
+        } catch (\Exception $e) {
+            return $this->error($e->getMessage());
+        }
+    }
+
 }

+ 9 - 0
app/Services/Payment/QianBaoService.php

@@ -26,6 +26,15 @@ class QianBaoService extends BaseService
         'ZFB001' => [10,100]
     ];
 
+    public static function withdrawChannel()
+    {
+        return [
+            self::ALIPAY_TO_CARD => lang('银行卡'),
+            self::ALIPAY_TO_ALIPAY => lang('支付宝'),
+            self::NUMBER_RMB => lang('数字人民币'),
+        ];
+    }
+
     // 获取异步的通知地址
     public static function getNotifyUrl()
     {

+ 1 - 1
app/Services/QianBaoWithdrawService.php

@@ -438,7 +438,7 @@ class QianBaoWithdrawService
     }
 
     //创建提现订单
-    private static function createOrder($memberId, $amount, $channel, $bank_name, $account, $card_no)
+    public static function createOrder($memberId, $amount, $channel, $bank_name, $account, $card_no)
     {
         DB::beginTransaction();
         $result['chat_id'] = $memberId;

+ 3 - 0
routes/api.php

@@ -85,6 +85,9 @@ Route::middleware('check.token')->group(function () {
         Route::post("/recharge", [Wallet::class, 'recharge']);
         Route::get("/channel", [Wallet::class, 'getChannel']);
         Route::post("/createPay", [Wallet::class, 'createPay']);
+        Route::get("/withdrawChannel", [Wallet::class, 'withdrawChannel']);
+        Route::post("/autoPayout", [Wallet::class, 'autoPayout']);
+        Route::post("/payout", [Wallet::class, 'payout']);
     });
 });