payMethod = $payMethod; // 获取支付配置 $this->payConfig = $this->getPayConfig($payMethod, $payConfigId); if (!$this->payConfig) { throw new \Exception('支付配置不存在或已禁用'); } // 初始化支付平台配置 $this->initConfig(); } /** * 获取支付配置 */ public function getPayConfig($payMethod, $payConfigId = 0) { $query = Db::table('ba_pay_config') ->where('type', $payMethod == 'wechat' ? 1 : 2) ->where('status', 1); if ($payConfigId > 0) { $query->where('id', $payConfigId); } return $query->order('id', 'desc')->find(); } /** * 初始化配置(子类实现) */ abstract protected function initConfig(); /** * 生成支付二维码 */ abstract public function createQrCode($orderNo, $amount, $subject, $body = ''); /** * 处理支付回调 */ abstract public function handleNotify($input); /** * 查询支付订单 */ abstract public function queryOrder($orderNo); /** * 验证签名 */ abstract protected function verifySign($data, $sign); /** * 生成签名 */ abstract protected function generateSign($data); /** * 记录支付日志 */ protected function log($message, $data = [], $level = 'info') { $logData = [ 'message' => $message, 'data' => $data, 'pay_method' => $this->payMethod, 'time' => date('Y-m-d H:i:s') ]; Log::write("支付服务: " . json_encode($logData), $level); } }