getPaymentById($payment_id); if (!$payment_info || $payment_info['estimate_id'] != $estimate_id || $payment_info['total_amount'] != $total_amount) { alert('유효하지 않은 결제 정보입니다.'); } try { // 결제 수단에 따른 처리 if ($payment_method === 'pg') { // PG사 결제 요청 로직 // 실제 PG사 연동 코드가 들어갈 부분입니다. // 예: 이니시스, KG이니시스, 나이스페이 등 PG사 SDK 호출 // 가상의 PG 요청 데이터 $pg_request_data = [ 'order_id' => $payment_id, 'amount' => $total_amount, 'item_name' => '견적서 결제', 'buyer_name' => $member['mb_name'] ?? '비회원', 'buyer_email' => $member['mb_email'] ?? '', // ... 기타 PG사 요구 파라미터 ... ]; // PG사 요청 전문 저장 $paymentManager->logPaymentPayload($payment_id, 'request', json_encode($pg_request_data, JSON_UNESCAPED_UNICODE)); // [중요] 실제 PG사 결제창 호출 또는 리다이렉션 // 여기서는 예시로 성공 페이지로 바로 리다이렉트합니다. // 실제 구현에서는 PG사 결제창을 띄우거나, PG사 API를 호출하여 결제 프로세스를 시작합니다. // 결제 완료 후 pg_return.php로 결과가 돌아오도록 설정해야 합니다. goto_url(G5_ADMIN_URL . '/payment_manage/pg_return.php?payment_id=' . $payment_id . '&status=success&tid=TEST_TID_'.time()); } else if ($payment_method === 'bank') { // 무통장 입금 처리 $set_clauses = [ "payment_method = 'bank'", "depositor_name = '" . sql_real_escape_string($depositor_name) . "'", // 계좌 정보는 고정된 값으로 가정하거나, 관리자 설정에서 가져올 수 있습니다. "bank_account = '우리은행 1002-XXX-XXXXXX'" ]; $paymentManager->update($paymentManager->payment_table, $payment_id, $set_clauses); $paymentManager->updatePaymentStatus($payment_id, 'pending', '무통장 입금 신청'); alert('무통장 입금 신청이 완료되었습니다. 입금 확인 후 처리됩니다.', G5_URL); } else if ($payment_method === 'cash') { // 현장 결제 처리 (관리자가 수동으로 확인해야 함) $set_clauses = [ "payment_method = 'cash'" ]; $paymentManager->update($paymentManager->payment_table, $payment_id, $set_clauses); $paymentManager->updatePaymentStatus($payment_id, 'pending', '현장 결제 신청'); alert('현장 결제 신청이 완료되었습니다. 관리자 확인 후 처리됩니다.', G5_URL); } } catch (Exception $e) { error_log("PG 요청 중 오류 발생: " . $e->getMessage()); alert('결제 처리 중 오류가 발생했습니다: ' . $e->getMessage()); }