request->get('order_no', ''); if (empty($orderNo)) { return json([ 'code' => 400, 'msg' => '订单号不能为空', 'data' => null ]); } // 2. 查询订单信息 $order = Db::name('order') ->where('order_no', $orderNo) ->field('id, order_no, user_id, pay_amount, pay_method, pay_status, order_status, pay_time, create_time') ->find(); if (!$order) { return json([ 'code' => 404, 'msg' => '订单不存在', 'data' => null ]); } // 3. 查询支付记录(如果有) $paymentRecord = Db::name('payment_record') ->where('order_no', $orderNo) ->field('id, trade_no, status, pay_time as payment_pay_time') ->find(); // 4. 查询订单商品信息 $orderItem = Db::name('order_item') ->where('order_id', $order['id']) ->field('item_name, spec_name, quantity, unit_price') ->find(); // 5. 格式化返回数据 $result = [ 'order_no' => $order['order_no'], 'pay_status' => $order['pay_status'], // 0=待支付, 1=已支付, 2=支付失败 'order_status' => $order['order_status'], // 0=待处理, 1=已确认, 2=已发货, 3=已完成, 4=已取消 'pay_method' => $order['pay_method'], 'pay_amount' => $order['pay_amount'], 'pay_time' => $order['pay_time'], 'trade_no' => $paymentRecord['trade_no'] ?? '', 'product_name' => $orderItem['item_name'] ?? '商品', 'product_spec' => $orderItem['spec_name'] ?? '', 'quantity' => $orderItem['quantity'] ?? 1, 'status_text' => $this->getStatusText($order['pay_status'], $order['order_status']) ]; return json([ 'code' => 1, 'msg' => 'success', 'data' => $result ]); } /** * 获取状态文本 */ private function getStatusText($payStatus, $orderStatus) { // 支付状态文本 $payStatusMap = [ 0 => '待支付', 1 => '已支付', 2 => '支付失败' ]; // 订单状态文本 $orderStatusMap = [ 0 => '待处理', 1 => '已确认', 2 => '已发货', 3 => '已完成', 4 => '已取消' ]; $text = $payStatusMap[$payStatus] ?? '未知支付状态'; // 如果已支付,显示订单状态 if ($payStatus == 1) { $text .= '/' . ($orderStatusMap[$orderStatus] ?? '未知订单状态'); } return $text; } /** * 手动查询微信订单状态(用于调试) */ public function queryWechat() { if (!$this->auth->isLogin() || !$this->auth->isAdmin()) { $this->error('权限不足'); } $orderNo = $this->request->get('order_no', ''); if (empty($orderNo)) { $this->error('订单号不能为空'); } try { // 查询支付记录 $paymentRecord = Db::name('ba_payment_record') ->where('order_no', $orderNo) ->find(); if (!$paymentRecord) { $this->error('支付记录不存在'); } // 查询支付配置 $payConfig = Db::name('ba_pay_config') ->where('id', $paymentRecord['pay_config_id']) ->find(); if (!$payConfig) { $this->error('支付配置不存在'); } // 调用微信查询接口 $paymentService = \app\common\service\PaymentFactory::create( $paymentRecord['pay_method'], $payConfig['id'] ); $result = $paymentService->queryOrder($orderNo); $this->success('查询成功', $result); } catch (\Exception $e) { $this->error('查询失败: ' . $e->getMessage()); } } }