计划 自动检查账单
This commit is contained in:
parent
86316342f2
commit
d48a665dc4
@ -6,6 +6,7 @@
|
|||||||
use App\Console\Commands\CalcModule;
|
use App\Console\Commands\CalcModule;
|
||||||
use App\Console\Commands\SuspendUserAllHosts;
|
use App\Console\Commands\SuspendUserAllHosts;
|
||||||
use App\Console\Commands\UnbanUser;
|
use App\Console\Commands\UnbanUser;
|
||||||
|
use App\Jobs\CheckAndChargeBalance;
|
||||||
use App\Jobs\HostCost;
|
use App\Jobs\HostCost;
|
||||||
use App\Jobs\ClearTasks;
|
use App\Jobs\ClearTasks;
|
||||||
use App\Jobs\DeleteHost;
|
use App\Jobs\DeleteHost;
|
||||||
@ -48,5 +49,7 @@ protected function schedule(Schedule $schedule)
|
|||||||
$schedule->job(new ClearTasks())->weekly();
|
$schedule->job(new ClearTasks())->weekly();
|
||||||
|
|
||||||
$schedule->job(new DeleteHost())->hourly();
|
$schedule->job(new DeleteHost())->hourly();
|
||||||
|
|
||||||
|
$schedule->job(new CheckAndChargeBalance())->hourly();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,6 +78,11 @@ public function show(Request $request, Balance $balance)
|
|||||||
return $this->error('订单已支付');
|
return $this->error('订单已支付');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (now()->diffInDays($balance->created_at) > 1) {
|
||||||
|
return $this->error('订单已失效');
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$result = AlipayFactory::payment()->page()->pay("支付", $balance->order_id, $balance->amount, route('balances.return'));
|
$result = AlipayFactory::payment()->page()->pay("支付", $balance->order_id, $balance->amount, route('balances.return'));
|
||||||
|
|
||||||
@ -115,7 +120,7 @@ public function return(Request $request)
|
|||||||
return $this->success('订单已支付');
|
return $this->success('订单已支付');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->checkAndCharge($request->out_trade_no, $balance)) {
|
if ($this->checkAndCharge($balance)) {
|
||||||
return view('pay_success');
|
return view('pay_success');
|
||||||
} else {
|
} else {
|
||||||
return view('pay_error');
|
return view('pay_error');
|
||||||
@ -139,16 +144,16 @@ public function notify(Request $request)
|
|||||||
return $this->success('订单已支付');
|
return $this->success('订单已支付');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->checkAndCharge($request->out_trade_no, $balance)) {
|
if ($this->checkAndCharge($balance)) {
|
||||||
return $this->success();
|
return $this->success();
|
||||||
} else {
|
} else {
|
||||||
return $this->error();
|
return $this->error();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkAndCharge($out_trade_no, Balance $balance)
|
public function checkAndCharge(Balance $balance)
|
||||||
{
|
{
|
||||||
$trade = AlipayFactory::payment()->common()->query($out_trade_no);
|
$trade = AlipayFactory::payment()->common()->query($balance->order_id);
|
||||||
|
|
||||||
if ($trade->code == "10000" && $trade->tradeStatus == "TRADE_SUCCESS") {
|
if ($trade->code == "10000" && $trade->tradeStatus == "TRADE_SUCCESS") {
|
||||||
$balance->paid_at = now();
|
$balance->paid_at = now();
|
||||||
@ -160,13 +165,13 @@ public function checkAndCharge($out_trade_no, Balance $balance)
|
|||||||
try {
|
try {
|
||||||
$balance->user->increment('balance', $trade->totalAmount);
|
$balance->user->increment('balance', $trade->totalAmount);
|
||||||
|
|
||||||
$description = '充值 ' . $trade->totalAmount . ' 元,对端订单号: ' . $out_trade_no;
|
$description = '充值 ' . $trade->totalAmount . ' 元';
|
||||||
$transaction->addIncomeBalance($balance->user_id, 'alipay', $trade->totalAmount, $description);
|
$transaction->addIncomeBalance($balance->user_id, 'alipay', $trade->totalAmount, $description);
|
||||||
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
DB::rollBack();
|
DB::rollBack();
|
||||||
AlipayFactory::payment()->common()->refund($out_trade_no, $trade->totalAmount);
|
AlipayFactory::payment()->common()->refund($balance->order_id, $trade->totalAmount);
|
||||||
return $this->error($e->getMessage());
|
return $this->error($e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +190,8 @@ public function checkAndCharge($out_trade_no, Balance $balance)
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
public function transactions() {
|
public function transactions()
|
||||||
|
{
|
||||||
$transactions = Transaction::thisUser()->latest()->simplePaginate(30);
|
$transactions = Transaction::thisUser()->latest()->simplePaginate(30);
|
||||||
|
|
||||||
return $this->success($transactions);
|
return $this->success($transactions);
|
||||||
|
50
app/Jobs/CheckAndChargeBalance.php
Normal file
50
app/Jobs/CheckAndChargeBalance.php
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Jobs;
|
||||||
|
|
||||||
|
use App\Http\Controllers\User\BalanceController;
|
||||||
|
use App\Models\User\Balance;
|
||||||
|
|
||||||
|
class CheckAndChargeBalance extends Job
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a new job instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the job.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
|
||||||
|
$bc = new BalanceController();
|
||||||
|
|
||||||
|
|
||||||
|
// 查找今天未支付的订单
|
||||||
|
Balance::where('paid_at', null)->chunk(100, function ($balances) use ($bc) {
|
||||||
|
foreach ($balances as $balance) {
|
||||||
|
if (!$bc->checkAndCharge($balance)) {
|
||||||
|
if (now()->diffInDays($balance->created_at) > 1) {
|
||||||
|
$balance->delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Balance::chunk(100, function ($balances) use ($bc) {
|
||||||
|
// foreach ($balances as $balance) {
|
||||||
|
|
||||||
|
// $bc->checkAndCharge($balance);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user