<?php
/**
 * auction_install_fee_pay.php
 * 낙찰자가 포인트 잔액 충전 후 개통비를 직접 결제하는 핸들러
 * POST: wr_id (경매 게시물 ID)
 */
include_once('./_common.php');

header('Content-Type: application/json; charset=utf-8');

function pay_exit($success, $msg, $extra = []) {
    echo json_encode(array_merge(['success' => $success, 'message' => $msg], $extra), JSON_UNESCAPED_UNICODE);
    exit;
}

// 로그인 확인
if (!$is_member) pay_exit(false, '로그인이 필요합니다.');

$wr_id = (int)(isset($_POST['wr_id']) ? $_POST['wr_id'] : 0);
if (!$wr_id) pay_exit(false, '잘못된 요청입니다.');

$mb_id_esc = sql_escape_string($member['mb_id']);

// 경매 낙찰 확인 — 요청자가 실제 낙찰자인지 검증
$auction_row = sql_fetch("SELECT wr_id, wr_10, pcnum FROM {$g5['write_auction_table']} WHERE wr_id={$wr_id} LIMIT 1");
if (!$auction_row || $auction_row['wr_10'] !== $member['mb_id']) {
    pay_exit(false, '낙찰 정보를 찾을 수 없거나 권한이 없습니다.');
}

$pcnum     = trim($auction_row['pcnum']);
$pcnum_esc = sql_escape_string($pcnum);

// auction_off 레코드 및 install_fee 상태 확인
$ao = sql_fetch("SELECT wr_id_off, install_fee, install_fee_status FROM {$g5['write_auction_off_table']} WHERE wr_id={$wr_id} LIMIT 1");
if (!$ao) pay_exit(false, '경매 관리 정보를 찾을 수 없습니다.');

$install_fee = (int)$ao['install_fee'];
$ao_status   = (int)$ao['install_fee_status'];
$wr_id_off   = (int)$ao['wr_id_off'];

if ($install_fee <= 0)    pay_exit(false, '개통비가 없는 항목입니다.');
if ($ao_status === 2)     pay_exit(false, '이미 납부 완료된 항목입니다.');
if ($ao_status === 9)     pay_exit(false, '면제 처리된 항목입니다.');
if ($ao_status === 3)     pay_exit(false, '낙찰이 취소된 항목입니다.');
if ($ao_status !== 1)     pay_exit(false, '현재 납부할 수 없는 상태입니다.');

// 포인트 잔액 재확인
$cur_point = (int)$member['mb_point'];
if ($cur_point < $install_fee) {
    $short = number_format($install_fee - $cur_point);
    pay_exit(false, "포인트가 {$short}P 부족합니다. 충전 후 다시 시도해 주세요.", ['shortage' => $install_fee - $cur_point]);
}

// 포인트 차감
insert_point($member['mb_id'], $install_fee * -1,
    "경매품번(RPC-{$pcnum}) 개통비/설치비 납부",
    '@auction', $member['mb_id'], G5_TIME_YMDHISu, 0, 1
);

// 상태 업데이트
$now_esc = sql_escape_string(G5_TIME_YMDHIS);
sql_query("UPDATE {$g5['write_auction_off_table']}
           SET install_fee_status=2, install_fee_paid_at='{$now_esc}'
           WHERE wr_id_off={$wr_id_off}");

// 판매자에게 납부 완료 쪽지
$ao_seller = sql_fetch("SELECT mb_id FROM {$g5['write_auction_off_table']} WHERE wr_id_off={$wr_id_off}");
if ($ao_seller && $ao_seller['mb_id']) {
    $seller_esc = sql_escape_string($ao_seller['mb_id']);
    $fee_fmt    = number_format($install_fee);
    $msg_esc    = sql_escape_string(
        "[개통비 납부 완료 알림]\n\n" .
        "RPC-{$pcnum} 낙찰자({$member['mb_id']})가\n" .
        "개통비 {$fee_fmt}P를 납부하였습니다.\n\n" .
        "서비스 준비를 진행해 주세요."
    );
    $me_id_esc = sql_escape_string('au_fee_' . uniqid());
    sql_query("INSERT INTO {$g5['memo_table']}
               (me_id,me_recv_mb_id,me_send_mb_id,me_send_datetime,me_memo,me_read_datetime)
               VALUES('{$me_id_esc}','{$seller_esc}','{$mb_id_esc}','{$now_esc}','{$msg_esc}','0000-00-00 00:00:00')");
    sql_query("UPDATE {$g5['member_table']} SET memo=memo+1 WHERE mb_id='{$seller_esc}'", false);
}

$fee_fmt = number_format($install_fee);
pay_exit(true, "개통비 {$fee_fmt}P 납부가 완료되었습니다.");
