본문 바로가기
그누보드,영카트

영카트 무통장 미결제 24시간후 자동취소 처리

by 씨엔아이소프트 2024. 1. 28.
반응형

// 무통장 24시간 이후 미입금 주문 자동취소처리
$sql = "SELECT * FROM g5_shop_order WHERE od_status = '주문' AND od_settle_case = '무통장' AND od_time < NOW() - INTERVAL 24 HOUR";
$result = sql_query($sql); // 쿼리 실행

// 트랜잭션 시작
sql_query("START TRANSACTION");

try {
    while ($row = sql_fetch_array($result)) {
        // 포인트 반환 조건 확인
        if ($row['od_receipt_point'] > 0) {
            // 포인트 반환 처리
            insert_point($row['mb_id'], $row['od_receipt_point'], "주문번호 {$row['od_id']} 자동 취소");

            // 포인트 반환 후 주문 테이블 업데이트
            $update_order = "UPDATE g5_shop_order SET od_status = '취소', od_receipt_point = 0 WHERE od_id = '{$row['od_id']}'";
            if (!sql_query($update_order)) {
                throw new Exception('주문 테이블 업데이트 실패');
            }
        } else {
            // 주문 테이블 업데이트 (포인트 반환 없음)
            $update_order = "UPDATE g5_shop_order SET od_status = '취소' WHERE od_id = '{$row['od_id']}'";
            if (!sql_query($update_order)) {
                throw new Exception('주문 테이블 업데이트 실패');
            }
        }

        // g5_shop_cart 테이블 업데이트
        $update_cart = "UPDATE g5_shop_cart SET ct_status = '취소' WHERE od_id = '{$row['od_id']}'";
        if (!sql_query($update_cart)) {
            throw new Exception('카트 테이블 업데이트 실패');
        }
    }

    // 트랜잭션 커밋
    sql_query("COMMIT");
} catch (Exception $e) {
    // 오류 발생 시 롤백
    sql_query("ROLLBACK");
    echo $e->getMessage();
}

반응형

댓글