77 lines
3.7 KiB
PHP
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());
|
|
}
|