订单支付成功通知
parent
f45182c1f2
commit
b09fc5e01e
|
|
@ -6,6 +6,7 @@ use App\Endpoint\Api\Http\Controllers\Controller;
|
||||||
use App\Endpoint\Api\Http\Resources\OrderPackageResource;
|
use App\Endpoint\Api\Http\Resources\OrderPackageResource;
|
||||||
use App\Endpoint\Api\Http\Resources\OrderResource;
|
use App\Endpoint\Api\Http\Resources\OrderResource;
|
||||||
use App\Endpoint\Api\Http\Resources\OrderResourceCollection;
|
use App\Endpoint\Api\Http\Resources\OrderResourceCollection;
|
||||||
|
use App\Events\OrderPaid;
|
||||||
use App\Exceptions\BizException;
|
use App\Exceptions\BizException;
|
||||||
use App\Helpers\Paginator as PaginatorHelper;
|
use App\Helpers\Paginator as PaginatorHelper;
|
||||||
use App\Models\KuaidiLog;
|
use App\Models\KuaidiLog;
|
||||||
|
|
@ -102,6 +103,8 @@ class OrderController extends Controller
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OrderPaid::dispatchIf($order->isPaid(), $order);
|
||||||
|
|
||||||
return OrderResource::make($order);
|
return OrderResource::make($order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace App\Endpoint\Callback\Http\Controllers;
|
namespace App\Endpoint\Callback\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Events\OrderPaid;
|
||||||
use App\Exceptions\BizException;
|
use App\Exceptions\BizException;
|
||||||
use App\Models\Order;
|
use App\Models\Order;
|
||||||
use App\Models\OrderRefundTask;
|
use App\Models\OrderRefundTask;
|
||||||
|
|
@ -34,13 +35,15 @@ class WeChatPayController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DB::transaction(function () use ($message) {
|
$order = DB::transaction(function () use ($message) {
|
||||||
(new OrderService())->paySuccess($message['out_trade_no'], [
|
return (new OrderService())->paySuccess($message['out_trade_no'], [
|
||||||
'pay_sn' => $message['transaction_id'],
|
'pay_sn' => $message['transaction_id'],
|
||||||
'pay_way' => Order::PAY_WAY_WXPAY,
|
'pay_way' => Order::PAY_WAY_WXPAY,
|
||||||
'pay_at' => Carbon::parse($message['time_end']),
|
'pay_at' => Carbon::parse($message['time_end']),
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
OrderPaid::dispatchIf($order->isPaid(), $order);
|
||||||
} catch (ModelNotFoundException | BizException $e) {
|
} catch (ModelNotFoundException | BizException $e) {
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
throw $e;
|
throw $e;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
|
use App\Models\Order;
|
||||||
|
use Illuminate\Foundation\Events\Dispatchable;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class OrderPaid
|
||||||
|
{
|
||||||
|
use Dispatchable;
|
||||||
|
use SerializesModels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \App\Models\Order $order
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
public Order $order
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Listeners;
|
||||||
|
|
||||||
|
use App\Events\OrderPaid;
|
||||||
|
use App\Models\Message;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
class OrderPaidNotify implements ShouldQueue
|
||||||
|
{
|
||||||
|
use InteractsWithQueue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the event.
|
||||||
|
*
|
||||||
|
* @param \App\Events\OrderPaid $event
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function handle(OrderPaid $event)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Message::createOrderMessage($event->order);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
report($e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -16,6 +16,9 @@ class EventServiceProvider extends ServiceProvider
|
||||||
\App\Events\ProductSku\Viewed::class => [
|
\App\Events\ProductSku\Viewed::class => [
|
||||||
\App\Listeners\CreateProductViewLog::class,
|
\App\Listeners\CreateProductViewLog::class,
|
||||||
],
|
],
|
||||||
|
\App\Events\OrderPaid::class => [
|
||||||
|
\App\Listeners\OrderPaidNotify::class,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -725,9 +725,9 @@ class OrderService
|
||||||
*
|
*
|
||||||
* @param string $sn
|
* @param string $sn
|
||||||
* @param array $params
|
* @param array $params
|
||||||
* @return void
|
* @return \App\Models\Order
|
||||||
*/
|
*/
|
||||||
public function paySuccess(string $sn, array $params = []): void
|
public function paySuccess(string $sn, array $params = []): Order
|
||||||
{
|
{
|
||||||
$order = Order::where('sn', $sn)->firstOrFail();
|
$order = Order::where('sn', $sn)->firstOrFail();
|
||||||
|
|
||||||
|
|
@ -743,6 +743,8 @@ class OrderService
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// todo 处理预收益
|
// todo 处理预收益
|
||||||
|
|
||||||
|
return $order;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue