Files
2026-06-11 18:47:38 +09:00

77 lines
3.7 KiB
PHP

<?php
include_once('./_common.php');
include_once(__DIR__ . '/classes/PaymentManager.class.php');
// PG사 연동 라이브러리 (예시: 실제 PG사에 맞게 구현 필요)
// include_once(G5_LIB_PATH . '/pg_lib.php');
$payment_id = isset($_POST['payment_id']) ? (int)$_POST['payment_id'] : 0;
$estimate_id = isset($_POST['estimate_id']) ? (int)$_POST['estimate_id'] : 0;
$total_amount = isset($_POST['total_amount']) ? (int)$_POST['total_amount'] : 0;
$payment_method = isset($_POST['payment_method']) ? trim($_POST['payment_method']) : '';
$depositor_name = isset($_POST['depositor_name']) ? trim($_POST['depositor_name']) : ''; // 무통장 입금자명
if (!$payment_id || !$estimate_id || !$total_amount || !$payment_method) {
alert('필수 정보가 누락되었습니다.');
}
$paymentManager = new PaymentManager();
$payment_info = $paymentManager->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());
}