trade_no = Str::random(8); $payment->user_id = $uid; $payment->order_id = $oid; $payment->amount = $amount; $payment->save(); return $payment; } /** * @param string $trade_no 本地订单号 * @param string $out_trade_no 外部订单号 * @param float|int $amount 交易金额 */ public static function createPaymentCallback(string $trade_no, string $out_trade_no, float|int $amount): bool { $log = new PaymentCallback; $log->trade_no = $trade_no; $log->out_trade_no = $out_trade_no; $log->amount = $amount; return $log->save(); } /** * @param string $tradeNo 本地订单号 */ public static function paymentReceived(string $tradeNo): bool { $payment = Payment::whereTradeNo($tradeNo)->with('order')->first(); if ($payment) { $ret = $payment->order->complete(); if ($ret) { $payment->user->notify(new PaymentReceived($payment->order->sn, $payment->amount_tag)); broadcast(new PaymentStatusUpdated($tradeNo, 'success', trans('common.success_item', ['attribute' => trans('user.pay')]))); // 触发支付状态更新事件 } return $ret; } return false; } }