👩‍💻
Megaptera Frontend
  • 주차별 학습
    • megaptera-front
    • 1. 개발 환경
      • 1. 개발 환경
      • 2. TypeScript
      • 3. React
      • 4. Testing Library
      • 5. Parcel & ESLint
      • 한 주를 마치며
    • 2. JSX
      • 1. JSX
      • 한 주를 마치며
    • 3. React로 사고하기
      • 1. React Component
      • 2. React State
      • 한 주를 마치며
    • 4. React Hooks
      • 1. Express
      • 2. Fetch API & CORS
      • 3. React의 Hook
      • 4. useRef & Custom Hook
      • 5. usehooks-ts
      • 한 주를 마치며
    • 5. 테스트
      • 1. TDD
      • 2. React Testing Library
      • 3. MSW
      • 4. Playwright
      • 한 주를 마치며
    • 6. External Store
      • 1. External Store
      • 2. TSyringe
      • 3. Redux 따라하기
      • 4. usestore-ts
      • 한 주를 마치며
    • 7. React Router
      • 1. Routing
      • 2. Routes
      • 3. Router
      • 4. Navigation
      • 한 주를 마치며
    • 8. CSS in JS
      • 1. Design System
      • 2. Style Basics
      • 3. CSS in JS
      • 4. styled-components
      • 5. props와 attrs
      • 6. Global Style & Theme
      • 한 주를 마치며
    • 9. 쇼핑몰 목록, 상품 페이지
      • 1. 개발하기 전 준비
      • 2. 목록 보기
      • 3. 상품 상세 보기
      • 4. 장바구니 보기
      • 5. 장바구니에 상품 담기
      • 한 주를 마치며
    • 10. 사용자 인증, 인가
      • 1. 로그인
      • 2. 로그아웃
      • 3. 회원가입
      • 4. 주문 목록 & 주문 상세
      • 한 주를 마치며
    • 11. 주문, 결제
      • 1. 배송 정보 입력
      • 2. 포트원 결제 요청
      • 3. 배송 및 결제 정보 전달
      • 한 주를 마치며
    • 12. 어드민
      • 1. 관리자 웹 사이트 개발 시작
      • 2. 로그인, 사용자 목록
      • 3. 카테고리 관리
      • 4. 주문 관리
      • 5. 상품 관리
      • 한 주를 마치며
Powered by GitBook
On this page
  • 1. 배송 및 결제 정보 전달
  • ApiService에 createOder 메소드 추가
  • OrderFormStore에 order 메소드 추가
  • PaymentButton 컴포넌트에서 추가 작업
  • 2. 다양한 기능
  1. 주차별 학습
  2. 11. 주문, 결제

3. 배송 및 결제 정보 전달

1. 배송 및 결제 정보 전달

🎯 백엔드로 정보 전달하기

정보를 전달한 후에 일어나는 일은 백엔드에서 처리하기 때문에 여기서는 다루지 않음

ApiService에 createOder 메소드 추가

async createOrder({ receiver, payment }: {
  receiver: {
    name: string;
    address1: string;
    address2: string;
    postalCode: string;
    phoneNumber: string;
  };
  payment: {
    merchantId: string;
    transactionId: string;
  };
}): Promise<void> {
  await this.instance.post('/orders', { receiver, payment });
}
  • 순서는 상관 없음

  • 흐름상 카트 처리하는 로직 뒤에 붙이면 괜찮음

OrderFormStore에 order 메소드 추가

  • 로그인, 회원가입 로직과 유사

async order({ merchantId, transactionId }: {
  merchantId: string;
  transactionId: string;
}) {
  apiService.createOrder({
    receiver: {
      name: this.name,
      address1: this.address1,
      address2: this.address2,
      postalCode: this.postalCode,
      phoneNumber: this.phoneNumber,
    },
    payment: { merchantId, transactionId },
  });
}

PaymentButton 컴포넌트에서 추가 작업

useOrderFormStore 에서 store 얻어오기

실패하는 경우

  1. 사용자가 중단(창 끄기)

  2. 잔액 부족, 한도 초과

2. 다양한 기능

백엔드와 협업이 자유롭고 사고를 넓히면 서비스를 고도화시킬 수 있음 전체적인 내용을 알아야 백엔드와도 소통할 수 있음 💡 포트원이 아니더라도 비슷한 형태로 처리되기 때문에 프로세스를 잘 익혀두면 좋음

  • 백엔드와 주소록 관리 기능 만들어서 처리하기

  • 장바구니 관리를 프론트에서 처리하기 (Ex. 배민 장바구니)

  • 쿠폰 적용 기능, 쿠폰 적용가 계산하기

Previous2. 포트원 결제 요청Next한 주를 마치며

Last updated 2 years ago