getFile(), $e->getLine(), $e->getMessage() ])); self::setError($e->getMessage()); return $e->getMessage(); } } /** * @notes 充值回调 * @param $orderSn * @param array $extra * @author 段誉 * @date 2023/2/27 15:28 */ public static function recharge($orderSn, array $extra = []) { $order = RechargeOrder::where('sn', $orderSn)->findOrEmpty(); // 增加用户累计充值金额及用户余额 $user = User::findOrEmpty($order->user_id); $user->total_recharge_amount += $order->order_amount; $user->user_money += $order->order_amount; $user->save(); // 记录账户流水 AccountLogLogic::add( $order->user_id, AccountLogEnum::UM_INC_RECHARGE, AccountLogEnum::INC, $order->order_amount, $order->sn, '用户充值' ); // 更新充值订单状态 $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->pay_time = time(); $order->save(); } public static function points_order($orderSn, array $extra = []) { $order = PointsOrder::where('sn', $orderSn)->findOrEmpty(); $user = User::findOrEmpty($order->user_id); $user->user_points = ($user->user_points ?? 0) + $order->points; $user->save(); $logExtra = [ 'product_id' => $order->product_id ?? 0, 'product_name' => $order->product_name ?? '', 'points' => $order->points ?? 0, 'order_amount' => $order->order_amount ?? 0, ]; AccountLogLogic::add( $order->user_id, AccountLogEnum::UP_INC_BUY_POINTS, AccountLogEnum::INC, $order->points, $order->sn, '购买积分到账', $logExtra ); $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->pay_time = time(); $order->save(); } public static function vip_order($orderSn, array $extra = []) { $order = VipOrder::where('sn', $orderSn)->findOrEmpty(); if ($order->isEmpty() || $order->pay_status == PayEnum::ISPAID) { return; } $user = User::findOrEmpty($order->user_id); $vipLevel = VipLevel::where('id', $order->level_id)->findOrEmpty(); $level = $vipLevel->isEmpty() ? 0 : (int) $vipLevel->level; $now = time(); $currentExpire = ($user->is_vip == 1 && $user->vip_expire_time > $now) ? $user->vip_expire_time : $now; $user->is_vip = 1; $user->vip_level = $level; $user->vip_expire_time = $currentExpire + ($order->duration * 86400); $user->save(); $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->pay_time = time(); $order->save(); } }