프로젝트 개요
본 요구사항인 기존 화면과 기능의 동일 동작(회원가입·로그인, 상품 주문, PG 결제와 부분취소, 택배 배송 조회)을 PHP 8.5 환경에서 유지하는 수의사 전용 B2B 쇼핑몰 화면으로 설계한 맞춤 구현한 프로젝트입니다. 첫 화면에서 오늘 주문과 재입고 알림, 자주 쓰는 품목 재주문을 바로 보여 주며, 업그레이드 뒤에도 같은 흐름이 이어지는지 확인하는 기준 화면으로 삼을 예정입니다.
작업 범위
- 홈·가입: 수의사 회원이 첫 화면에서 오늘 접수된 주문 진행 상황과 재입고 알림, 자주 쓰는 품목 재주문 목록을 보고 한 번에 장바구니에 담습니다. 같은 화면에서 사업자와 면허 확인 단계가 있는 가입·로그인 대화상자를 엽니다
- 상품 탐색: 수의사 회원이 분류와 제조사, 재고 여부로 상품을 걸러 찾고 검색어로 품목을 조회합니다. 상품을 열어 규격과 가격, 재고를 확인하고 수량을 정해 장바구니에 담습니다
- 주문·결제: 수의사 회원이 장바구니를 확인하고 배송지와 결제 수단을 정해 주문서를 작성한 뒤 PG 결제를 시연합니다. 결제가 끝나면 주문 번호와 결제 결과가 표시됩니다
- 주문 내역·배송: 수의사 회원이 지난 주문을 최신순으로 보고 주문 상세에서 택배 운송장 기준 배송 진행 단계를 확인하며, 품목 일부를 골라 부분취소를 요청합니다
주요 업무
- 홈·가입 화면: 상단 소개 영역의 오늘 주문 요약과 동물병원 사진, 재입고 알림 목록, 자주 쓰는 품목 재주문 카드, 3단계 가입 대화상자(계정·사업자 확인·면허 확인) 구조를 설계합니다
- 상품 탐색 화면: 분류 칩과 검색 입력, 상품 목록과 재고 알약, 상품 상세 대화상자, 수량 입력과 장바구니 담기 구조를 설계합니다
- 주문·결제 화면: 장바구니 표, 배송지 선택, 결제 수단 선택, 주문 요약 패널, PG 결제 진행 대화상자와 결과 화면 구조를 설계합니다
- 주문 내역·배송 화면: 주문 내역 표와 상태 필터, 주문 상세 대화상자, 택배 배송 단계 표시, 부분취소 품목 선택과 환불 금액 확인 구조를 설계합니다



프로젝트 핵심 과제
소스 규모와 코드 품질을 확인하기 전이라 제거된 함수와 타입 변경 지점을 먼저 찾아내는 정적 분석 기준 설계
PG 모듈과 택배 모듈이 PHP 8 호환 버전으로 바뀌어도 기존 주문 상태 전이가 유지되
연동 경계 설계 필요
결제와 부분취소는 외부 계정이 필요해 테스트 환경과 실거래 확인 범위를 나누는 검증 절차 설계
기존 회원·주문 데이터를 그대로 읽어야 하므로 DB 연동 전환 시 문자 인코딩과 쿼리 호환성 점검
핵심 기능 상세
홈·가입
수의사 회원이 첫 화면에서 오늘 접수된 주문 진행 상황과 재입고 알림, 자주 쓰는 품목 재주문 목록을 보고 한 번에 장바구니에 담습니다. 같은 화면에서 사업자와 면허 확인 단계가 있는 가입·로그인 대화상자를 엽니다.
- 회원의 최근 주문 이력을 집계해 자주 쓰는 품목을 뽑는 조회 쿼리를 prepared statement 로 구현
- 품절 상품의 재입고 알림 신청을 회원·상품 단위로 저장하고 입고 시 알림 대상으로 묶는 구조 설계
- 사업자등록번호 형식과 면허 번호 입력을 서버에서 검증하고 승인 대기 상태로 저장하는 가입 흐름 구현
가입·로그인·세션 처리를 PHP 8.5 에서 제거된 함수 없이 구성해, 기존 회원 데이터를 그대로 읽어 같은 로그인 동작을 유지하도록 구현합니다.


상품 탐색
수의사 회원이 분류와 제조사, 재고 여부로 상품을 걸러 찾고 검색어로 품목을 조회합니다. 상품을 열어 규격과 가격, 재고를 확인하고 수량을 정해 장바구니에 담습니다.
- 분류·제조사·재고 조건을 쿼리 파라미터로 받아 서버에서 조회하는 목록 API 와 페이지네이션 구현
- 상품명 검색을 인덱스 기반 LIKE 조회로 구성하고 결과 건수를 함께 응답
- 장바구니를 회원 단위 테이블에 저장해 기기를 바꿔도 같은 담기 상태를 복원
목록 조회를 mysqli prepared statement 로 통일해 업그레이드 뒤에도 같은 검색 결과가 나오도록 구현합니다.


주문·결제
수의사 회원이 장바구니를 확인하고 배송지와 결제 수단을 정해 주문서를 작성한 뒤 PG 결제를 시연합니다. 결제가 끝나면 주문 번호와 결제 결과가 표시됩니다.
- PG사 결제 요청과 승인 결과 수신을 서버 간 호출로 구성하고 주문 상태를 승인 시점에만 확정
- 결제 금액을 서버에서 다시 계산해 요청 금액과 대조하는 검증 구현
- 결제 승인 번호와 응답 원문을 결제 기록 테이블에 저장해 부분취소 때 같은 기록을 참조
결제 모듈을 PHP 8 호환 버전으로 교체한 뒤에도 승인·취소가 같은 주문 상태 전이를 따르도록 구현합니다.


주문 내역·배송
수의사 회원이 지난 주문을 최신순으로 보고 주문 상세에서 택배 운송장 기준 배송 진행 단계를 확인하며, 품목 일부를 골라 부분취소를 요청합니다.
- 택배사 조회 응답을 접수·집하·배송 중·배송 완료 단계로 정규화해 주문 상세에 연결
- 부분취소 시 취소 품목 금액과 남은 결제 금액을 서버에서 계산해 PG 취소 요청에 전달
- 주문 상태 변경마다 이력 테이블에 기록해 취소 전후 상태를 추적
부분취소 금액을 서버에서 계산하고 PG 취소 응답과 대조해, 화면 값과 실제 취소 금액이 어긋나지 않게 구현합니다.


프로젝트 진행 단계
기존 화면·기능 분석과 기준 동작 정리 · 2026.11
회원·주문·결제·배송 화면의 입력과 출력, 상태 전이를 정리해 업그레이드 뒤 비교할 기준 동작표 작성
상품·주문 화면 구현 · 2026.11
상품 조회, 장바구니, 주문서 작성 화면과 서버 검증 구현
결제·부분취소 연동 구현 · 2026.11
PG 결제 요청·승인 수신, 부분취소 금액 계산과 취소 요청 구현
배송 조회·회원 흐름 구현 · 2026.11
택배 배송 단계 조회, 사업자·면허 확인 가입 흐름, 주문 내역 구현
개발 결과
기술적 주안점
- 가입·로그인·세션 처리를 PHP 8.5 에서 제거된 함수 없이 구성해, 기존 회원 데이터를 그대로 읽어 같은 로그인 동작을 유지하도록 구현합니다
- 목록 조회를 mysqli prepared statement 로 통일해 업그레이드 뒤에도 같은 검색 결과가 나오도록 구현합니다
- 결제 모듈을 PHP 8 호환 버전으로 교체한 뒤에도 승인·취소가 같은 주문 상태 전이를 따르도록 구현합니다