订单支付成功通知
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\OrderResource;
|
||||
use App\Endpoint\Api\Http\Resources\OrderResourceCollection;
|
||||
use App\Events\OrderPaid;
|
||||
use App\Exceptions\BizException;
|
||||
use App\Helpers\Paginator as PaginatorHelper;
|
||||
use App\Models\KuaidiLog;
|
||||
|
|
@ -102,6 +103,8 @@ class OrderController extends Controller
|
|||
throw $e;
|
||||
}
|
||||
|
||||
OrderPaid::dispatchIf($order->isPaid(), $order);
|
||||
|
||||
return OrderResource::make($order);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Endpoint\Callback\Http\Controllers;
|
||||
|
||||
use App\Events\OrderPaid;
|
||||
use App\Exceptions\BizException;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderRefundTask;
|
||||
|
|
@ -34,13 +35,15 @@ class WeChatPayController extends Controller
|
|||
}
|
||||
|
||||
try {
|
||||
DB::transaction(function () use ($message) {
|
||||
(new OrderService())->paySuccess($message['out_trade_no'], [
|
||||
$order = DB::transaction(function () use ($message) {
|
||||
return (new OrderService())->paySuccess($message['out_trade_no'], [
|
||||
'pay_sn' => $message['transaction_id'],
|
||||
'pay_way' => Order::PAY_WAY_WXPAY,
|
||||
'pay_at' => Carbon::parse($message['time_end']),
|
||||
]);
|
||||
});
|
||||
|
||||
OrderPaid::dispatchIf($order->isPaid(), $order);
|
||||
} catch (ModelNotFoundException | BizException $e) {
|
||||
} catch (Throwable $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\Listeners\CreateProductViewLog::class,
|
||||
],
|
||||
\App\Events\OrderPaid::class => [
|
||||
\App\Listeners\OrderPaidNotify::class,
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -725,9 +725,9 @@ class OrderService
|
|||
*
|
||||
* @param string $sn
|
||||
* @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();
|
||||
|
||||
|
|
@ -743,6 +743,8 @@ class OrderService
|
|||
]);
|
||||
|
||||
// todo 处理预收益
|
||||
|
||||
return $order;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue