EssenceAura 프로젝트 - 주문 생성 및 결제 처리 기능

이유승·2024년 3월 12일
0

EssenceAura 프로젝트

목록 보기
12/12

1. 기능의 동작 원리와 순서

주문 생성:

  • 사용자는 주문을 생성하는 데 필요한 정보(사용자 이름, 이메일, 주문 상품, 총 금액 등)를 입력합니다.
  • 프론트엔드에서 createOrder API 요청을 발송합니다.
  • 백엔드에서 createOrderHandler가 이를 처리하고, 사용자의 주문 정보를 데이터베이스에 저장합니다.
  • 주문이 성공적으로 저장되면, 사용자에게 주문 세부 정보와 함께 주문 완료 이메일을 발송합니다. 이 이메일은 sendEmail 함수를 통해 처리됩니다.
  • 백엔드는 주문 생성 성공 응답과 함께 주문 ID를 프론트엔드로 반환합니다.

결제 처리:

  • 사용자가 결제를 진행하고, 필요한 결제 정보(주문 ID, 결제 금액, 결제 방법 등)를 제공합니다.
  • 프론트엔드에서 processPayment API 요청을 발송합니다.
  • 백엔드에서 processPaymentHandler가 요청을 처리하고, 결제 정보를 데이터베이스에 저장합니다.
  • 결제가 성공적으로 이루어지면, 백엔드는 결제 성공 응답과 함께 결제 ID를 프론트엔드로 반환합니다.



2. 코드 파일의 구성

프론트엔드

  • CheckoutPage.tsx:

    주문 생성 페이지의 레이아웃과 UI 구성을 담당하는 리액트 컴포넌트입니다.
    사용자의 주문 정보 입력과 관련 이벤트 처리를 관리합니다.

  • PaymentConfirmationPage.tsx:

    결제 확인 및 처리 페이지의 레이아웃과 UI를 담당하는 리액트 컴포넌트입니다.
    사용자의 결제 정보를 입력 받고, 결제 확인 이벤트 처리를 관리합니다.

  • orderThunk.ts:

    주문 생성 및 결제 처리와 관련된 비동기 로직을 담당하는 Redux thunk입니다.
    주문 생성과 결제 처리 요청을 백엔드로 전송하고, 그 결과를 처리합니다.

백엔드

  • orderRoutes.js:

    주문 생성 및 결제 처리 관련 엔드포인트를 정의하는 라우팅 파일입니다.
    'createOrder'와 'processPayment' 경로에 대응하는 컨트롤러 함수를 연결합니다.

  • orderController.js:

    주문 생성 및 결제 처리 요청을 처리하는 컨트롤러 함수들을 포함하고 있습니다.
    주문 생성 및 결제 처리 로직과 이메일 전송 로직을 처리합니다.

  • orderService.js:

    백엔드에서 주문 생성 및 결제 처리 관련 비즈니스 로직을 담당하는 서비스 레이어 파일입니다.
    데이터베이스 쿼리 및 주문, 결제 정보 저장 로직을 제공합니다.

  • emailUtils.js:

    주문 완료 시 이메일 전송 로직을 담고 있는 유틸리티 파일입니다.
    Nodemailer를 이용한 이메일 전송 기능을 제공합니다.



3-1. 주문 생성 및 결제 처리 기능의 특징 - 프론트엔드

Redux Thunk를 이용한 비동기 로직 관리 (orderThunk.ts):

주문 생성 및 결제 처리와 관련된 비동기 로직을 Redux Thunk를 사용하여 관리합니다. 이를 통해 API 요청의 결과를 비동기적으로 처리하고, 애플리케이션의 상태를 업데이트합니다.

폼 데이터 관리 (CheckoutPage.tsx, PaymentConfirmationPage.tsx):

이 두 컴포넌트에서 사용자의 주문 및 결제 관련 정보를 입력 받습니다. 폼 데이터의 상태 관리와 유효성 검증은 사용자 경험에 직접적으로 영향을 미칩니다.

결제 처리 인터페이스 (PaymentConfirmationPage.tsx):

결제 확인 및 처리를 위한 사용자 인터페이스를 제공합니다. 사용자가 입력한 결제 정보의 정확성 및 안전성이 중요합니다.



3-2. 주문 생성 및 결제 처리 기능의 특징 - 백엔드

이메일 전송 로직 (orderController.js, emailUtils.js):

주문 완료 후 사용자에게 주문 세부 정보를 포함한 이메일을 전송합니다. 이 과정은 사용자 경험과 직결되며, 이메일 전송의 안정성과 정확성이 중요합니다.



4. 취약점과 개선 사항

프론트엔드:

  • 폼 유효성 검사 강화 (CheckoutPage.tsx, PaymentConfirmationPage.tsx):

현재 폼의 유효성 검사는 기본 수준에 머무를 수 있습니다. 예를 들어, 주소 입력의 상세한 유효성 검사, 결제 정보의 포맷 확인 등을 강화할 필요가 있습니다.

  • 에러 핸들링 개선 (orderThunk.ts):

API 요청 실패 시나 서버로부터의 오류 응답에 대해 사용자에게 보다 명확한 피드백을 제공하는 것이 중요합니다. 예외 처리와 사용자 친화적인 에러 메시지를 통해 사용자 경험을 개선할 수 있습니다.

백엔드:

  • 보안 취약점 감소 (orderController.js, orderService.js):

SQL 인젝션 공격이나 기타 보안 취약점에 대한 보호 조치가 필요합니다. 입력 데이터의 적절한 처리(예: SQL 쿼리 파라미터화, 입력 데이터 검증)를 통해 보안을 강화할 수 있습니다.

  • 에러 처리 및 로깅 (orderController.js):

상세한 에러 처리 로직과 로깅 시스템을 도입하여 예상치 못한 오류를 추적하고 디버깅을 용이하게 하는 것이 중요합니다. 이는 시스템의 안정성과 유지보수성을 향상시키는 데 기여합니다.

  • 입력 데이터 검증 및 처리:

서버 측에서 입력 데이터의 유효성을 검증하고, 부적절한 데이터 처리를 방지하는 것이 중요합니다. 클라이언트 측 검증만으로는 충분하지 않으며, 서버 측에서도 데이터 검증을 강화해야 합니다.

profile
프론트엔드 개발자를 준비하고 있습니다.

0개의 댓글