Loading...

바이브코딩

쇼핑몰의 구매 이력 확인 후 구매 가능하도록 하는 기초 코딩

페이지 정보

작성자 nedge
작성일 2025.10.10 13:51
276 조회
0 추천
0 비추천

본문

AI 도구 Gemini
프롬프트 구매이력이 있는 사람만 구매가 가능하도록 프로그래밍 하는 법을 알려줘

 

쇼핑몰에서 구매 기록이 있는 사람만 특정 상품을 구매할 수 있도록 프로그래밍하려면, 사용자가 상품을 장바구니에 담거나 결제를 시도하는 시점에 **'구매 자격'**을 확인하는 로직을 추가해야 합니다.

가장 좋은 프로그래밍 방식은 다음과 같이 크게 세 단계로 구성할 수 있습니다.

1. 데이터베이스 설계 및 확인 (Data Modeling & Check)

 

구매 제한 기능을 구현하기 위해서는 사용자의 구매 기록을 저장하고 효율적으로 검색할 수 있는 데이터베이스 구조가 필수입니다.

 

???? 핵심 데이터 확인

 

사용자 데이터 (Users Table):

user_id (고유 식별자)

username 또는 email 등

주문 데이터 (Orders Table):

order_id (고유 식별자)

user_id (어떤 사용자가 구매했는지)

order_status (주문 상태: '결제 완료', '배송 완료' 등)

order_date

주문 상세/아이템 데이터 (Order_Items Table):

order_item_id (고유 식별자)

order_id (어떤 주문에 속하는지)

product_id (구매한 상품)

quantity

 

???? 자격 확인 로직

 

특정 상품(P)을 구매하려는 사용자(U)의 구매 자격은 데이터베이스에서 다음과 같은 쿼리로 확인합니다.

**사용자 U**의 user_id를 찾습니다.

Order_Items 테이블에서 해당 user_id와 연관된 Orders 테이블을 참조하여, 유효한 주문(order_status가 '결제 완료' 등인) 기록이 최소 1개 이상 있는지 확인합니다.

$$\text{SELECT COUNT(O.order\_id) FROM Orders O JOIN Users U ON O.user\_id = U.user\_id} \text{ WHERE U.user\_id = [현재 사용자 ID] AND O.order\_status \in ('Completed', 'Shipped')}$$

만약 특정 상품을 구매한 기록이 필요한 경우, Order_Items 테이블까지 조인해서 확인합니다.

 

2. 핵심 로직 구현: '자격 검증' 기능

 

구매 제한은 사용자가 상품을 구매하는 결정적인 단계에서 이루어져야 합니다. 이 기능을 수행하는 별도의 함수나 모듈을 만드는 것이 효율적입니다.

 

???? 자격 검증 함수

 

다음과 같은 함수를 구현합니다.

Python

 

# 가상 함수 (Python 예시) def check_purchase_eligibility(user_id):   

 """    사용자의 전체 구매 이력을 확인하여 구매 자격 여부를 반환합니다.   

          (예: 1회 이상 유효한 구매 기록이 있으면 True)    

"""    # 1. 데이터베이스 연결 및 쿼리 실행    

# 2. user_id를 기반으로 Orders 테이블에서 '결제 완료' 등의 유효한 주문 건수를 확인        

          purchase_count = db_query("SELECT COUNT(*) FROM Orders WHERE user_id = ? AND status = 'Completed'", user_id)        

           if purchase_count > 0:        return True  # 구매 기록 있음    

            else:        return False # 구매 기록 없음

 

3. 적용 단계: 사용자 여정별 제어

 

자격 검증 함수(check_purchase_eligibility)를 사용자 경험의 여러 단계에 적용하여 구매를 제어합니다.

 

A. 상품 상세 페이지 (Product Page)

 

적용: 사용자(U)가 제한 상품의 상세 페이지를 방문했을 때, check_purchase_eligibility(user_id)를 실행합니다.

결과:

자격 O: 평소처럼 '장바구니 담기' 또는 '바로 구매' 버튼을 보여줍니다.

자격 X: 버튼을 숨기거나 비활성화하고, "구매 이력이 있는 고객만 구매 가능합니다"와 같은 안내 메시지를 표시합니다.

 

B. 장바구니/카트 (Shopping Cart)

 

적용: 상품을 장바구니에 담는 API 엔드포인트 또는 장바구니 확인 페이지에서 검증 로직을 실행합니다.

결과:

자격 X인 사용자가 제한 상품을 담으려고 할 경우, **"자격이 부족하여 담을 수 없습니다"**라는 에러 메시지를 반환합니다.

 

C. 결제 직전 (Checkout Process) ???? (가장 중요)

 

적용: 사용자가 모든 정보를 입력하고 최종 '결제하기' 버튼을 눌렀을 때, 서버 측에서 check_purchase_eligibility(user_id)를 반드시 다시 한 번 실행해야 합니다.

이유: 클라이언트 측(브라우저)의 제어는 우회될 수 있으므로, 서버 측의 최종 검증보안상 필수입니다.

결과:

자격 X: 결제를 **취소(Abort)**하고 사용자에게 **"구매 자격이 확인되지 않아 결제를 진행할 수 없습니다"**라는 에러를 반환합니다.

---

로직은 그럴듯하네요..

댓글 0
전체 36 / 1 페이지
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색
회원가입