# Changelog 이 프로젝트의 모든 주요 변경사항을 기록합니다. 형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 따르며, [Semantic Versioning](https://semver.org/lang/ko/)을 준수합니다. ## [Unreleased] ### Fixed - 플러그인이 활성화되어 있으면 홈, 게시판, 로그인 등 결제와 무관한 모든 페이지에서 주문서 조회 요청이 한 번씩 불필요하게 발생하던 문제를 수정했습니다. 장바구니가 없는 비회원에게는 이 요청이 매번 실패해 브라우저 오류로 기록됐습니다. 이제 결제 페이지에서만 요청합니다. ### Security - SignData 발급 요청에 주문번호+IP 단위 rate limit과 구매자 이메일/전화번호 대조를 추가해 공개 서명 엔드포인트의 주문번호/금액 프로빙 가능성을 줄였습니다. - 콜백 URL 생성 시 요청 헤더 대신 `config('app.url')`을 기준으로 절대 URL을 만들도록 고정해 프록시 환경 오동작과 헤더 기반 리다이렉트 변조 위험을 줄였습니다. - 카드 승인 콜백과 결제창 닫힘 통보 처리에 주문/결제 행잠금 후 재검증을 추가해 동시 콜백에서 마일리지, 재고, 결제 상태가 중복 반영되지 않도록 보강했습니다. - 에스크로 배송등록 시 결제된 에스크로 거래의 저장 TID와만 바인딩하고, 결제 당시 MID와 테스트/운영 모드로 API 컨텍스트를 복원하도록 수정했습니다. - 가상계좌 입금통보가 결제 당시 저장된 TID, MID, 계좌번호, 금액, 입금대기 상태와 일치할 때만 결제완료 처리되도록 교차검증을 강화했습니다. - 관리자 금융 API에 주문 조회/수정 권한을 세분화해 낮은 권한의 관리자 계정이 환불·에스크로 등 자금 이동 작업을 호출하지 못하도록 보강했습니다. - 가상계좌 입금자명과 전체 계좌번호가 애플리케이션 로그에 남지 않도록 민감정보 기록을 줄였습니다. ### Fixed - 나이스페이먼츠 가상계좌 발급 후 뒤늦게 PC 결제창 닫힘 보고가 들어와도 입금대기 주문이 결제실패/취소로 덮이지 않도록 보강했습니다. - 이미 부분취소된 나이스페이먼츠 거래의 남은 잔액을 다시 취소할 때 PG 취소 요청이 전액취소로 잘못 전달되어 실패하던 문제를 수정했습니다. - 비회원 나이스페이먼츠 주문완료/주문상세에서 매출전표 조회가 인증 사용자 전용 라우트에 막히지 않도록 게스트 주문 토큰과 결제 성공 후 임시 영수증 쿠키 접근을 지원했습니다. - 나이스페이먼츠 인증 단계 실패(`AuthResultCode != 0000`)는 실제 PG 승인 전이므로 주문/결제/주문옵션을 취소 상태로 바꾸지 않고 체크아웃 재시도가 가능하도록 수정했습니다. - 다통화 주문의 환율 스냅샷이 누락되거나 0인 경우 SignData, 결제 승인 콜백, 결제창 닫힘 보고에서 예외가 일반 승인 오류로 뭉개지지 않도록 결제 통화 설정 오류로 명시 처리했습니다. - 나이스페이먼츠 간편결제 주문이 주문완료, 마이페이지 주문상세, 관리자 주문목록/상세에서 실제 간편결제 수단 대신 `신용카드`로만 표시되던 문제를 수정했습니다. - 관리자 주문목록과 주문상세 레이아웃이 리뉴얼되거나 플러그인 업데이트 과정에서 나이스페이먼츠 테스트결제 배지, 테스트 모드 안내, 결제 조회/결제 정보 패널이 누락될 수 있던 문제를 수정했습니다. - 운영 모드에서 live MID가 비어 있으면 `SR` 같은 잘못된 MID로 결제창을 만들지 않고 서명 요청 단계에서 실패하도록 보강했습니다. - 환불 요청 시 현재 설정값이 아니라 결제 당시 MID와 테스트/운영 모드로 나이스페이먼츠 API 서명 컨텍스트를 복원하도록 수정했습니다. - 관리자 가상계좌 환불이 PG 취소만 호출하고 주문/결제/환불 장부를 갱신하지 않던 문제를 수정했습니다. - 결제완료 커밋 후 후속 처리 예외가 발생한 경우 이미 결제완료 상태인 거래에 망취소를 보내지 않도록 보상 처리 가드를 추가했습니다. - 이커머스 주문설정 화면에서 나이스페이먼츠 플러그인이 테스트 모드일 때 운영 전환 경고와 설정 이동 버튼을 표시하도록 보강했습니다. ## [1.0.0-beta.4] - 2026-06-03 ### Added - 레이아웃 편집기에서 이 플러그인의 설정 화면을 테스트 모드/운영 모드 상태로 전환해 미리볼 수 있도록 했습니다. - 레이아웃 편집기 데이터 소스 목록에서 이 확장이 제공하는 데이터 소스가 친화 명칭으로 표시되고, 어느 확장이 제공했는지 출처가 함께 표시됩니다. ### Fixed - 이커머스 관리자 주문설정 결제수단 목록에서 나이스페이먼츠 간편결제 항목이 브랜드 텍스트 배지로 표시되도록 보강했습니다. - 이커머스 관리자 주문설정 결제수단 목록에 나이스페이먼츠 간편결제 항목이 노출되지 않던 문제를 수정했습니다. - 체크아웃에서 나이스페이먼츠 간편결제 일부 항목이 다른 PG 간편결제 보정 로직에 잘못 잡혀 아이콘/문구가 뒤섞여 표시되던 문제를 수정했습니다. - 체크아웃의 나이스페이먼츠 간편결제 항목이 NHN KCP 간편결제처럼 브랜드 아이콘과 제목/설명 텍스트가 함께 보이도록 표시를 보강했습니다. - 활성 관리자 테마에 최신 시맨틱 CSS가 없어도 플러그인 설정 화면의 여백, 카드 경계, 하단 저장 영역이 깨지지 않도록 보강했습니다. - 나이스페이먼츠 PC 결제창을 사용자가 닫거나 인증 단계 취소 콜백이 들어온 경우 임시 주문이 `pending_order` / `ready` 상태로 남지 않고 결제실패/취소 상태로 기록되도록 보강했습니다. - 비회원 체크아웃에서 나이스페이먼츠 결제창 호출 직전 SignData 생성 요청이 인증 미들웨어에 막혀 401로 실패하던 문제를 수정했습니다. - 나이스페이먼츠 승인 실패, 금액 불일치, 결제창 닫기 흐름에서 결제 레코드가 `failed` 상태로 남도록 정합성을 보강했습니다. - 실제 PG 승인 이력이 없는 나이스페이먼츠 결제실패 주문은 동일 주문으로 재시도할 수 있도록 SignData 발급 단계에서 안전하게 결제대기 상태로 복구하도록 보강했습니다. - 간편결제 fallback 경로에서도 쿠폰/마일리지 반영 후 실결제 금액을 PG 요청 금액으로 사용하도록 수정했습니다. ### Changed - 환경설정 / 주문 화면 결제 / 마이페이지 영수증 영역 외형을 sirsoft-admin_basic 표준 시맨틱과 정합 — 다른 화면과 같은 결로 통일. - 관리자 화면 좌우 정렬 컨테이너(섹션 헤더 · 액션바 · 카드 상단부 등) 외형을 표준 시맨틱(.flex-between)으로 정리 — 시각 변경 없음, 향후 톤 조정이 한 곳에서 가능. - 플러그인 환경설정 화면의 폼 라벨 / 보조 설명 / 에러 메시지 시각 시맨틱을 sirsoft-admin_basic 표준 시맨틱과 정합 — 다른 관리자 화면과 같은 결로 통일. - 플러그인 환경설정 화면 곳곳의 텍스트 톤 (보조 설명 · 라벨 · 본문 · 강조 · 작은 보조) 시각 시맨틱을 관리자 표준 시맨틱과 정합 — 같은 결의 글자 톤이 한 곳에서 일괄 조정 가능. - 플러그인 환경설정 화면의 세로 정렬 컨테이너 / 입력 박스를 sirsoft-admin_basic 표준 시맨틱 (.row-stack / .input) 과 정합 — 입력 행 사이에 옅은 회색 구분선(1px) 이 자동 적용되어 행 묶음 가독성이 개선되고, 입력 박스 외형이 일관 표시되도록 정리. ## [1.0.0-beta.3] - 2026-05-20 ### Security - 결제 승인/가상계좌 통보 응답 저장을 blacklist 제거 방식에서 whitelist 저장 방식으로 변경 — PG 응답에 새 민감 필드가 추가되어도 메타에 자동 저장되지 않도록 강화했습니다. ## [1.0.0-beta.2] - 2026-05-20 ### Added - PG 측 결제 취소가 확인된 시점에 활동 로그가 별도로 기록되도록 보강 — 운영자가 PG 응답 시각 / 취소 TID 등 사후 추적에 활용 가능. - 마이페이지 주문 상세에 가상계좌 입금 안내 표시 — 결제수단이 가상계좌인 주문은 은행/계좌번호/예금주/입금 금액/입금 기한이 함께 노출되어 사용자가 입금 정보를 다시 확인할 수 있습니다. ### Changed - 플러그인 환경설정 화면의 하단 저장 버튼이 스크롤 중에도 화면에 고정되도록 개선. - 모바일 결제창에서 사용자가 취소하거나 인증이 실패한 경우 "결제 처리 중 오류가 발생했습니다" 같은 강한 에러 메시지 없이 체크아웃 화면으로 조용히 복귀하도록 변경 — 인증 단계는 실제 결제 승인 전이라 사용자가 다시 시도하면 되는 상황이므로 불필요한 경고 노출을 제거. ### Fixed - 체크아웃에서 신용카드 외 결제수단(가상계좌/계좌이체/휴대폰)을 선택해도 PG 결제창이 열리지 않고 곧바로 주문 완료로 이동하던 문제 수정. ### Security - 결제 콜백 중복 처리 방어 추가 — 동일 거래번호로 카드 결제 콜백이 두 번 도착해도 결제완료/마일리지 적립 등이 중복 실행되지 않도록 멱등 응답 처리 - 인증 콜백의 짧은 시간 내 중복 시도 방어 추가 — 동일 인증 토큰이 60초 안에 두 번 수신되면 재시도(replay) 의심으로 차단 - 결제 승인 실패 시 자동 취소 보강 — PG 측에 잔존할 수 있는 미완료 승인을 즉시 망취소로 해제하여 사용자 환불 누락 방지 ## [1.0.0-beta.1] - 2026-04-22 ### Changed - 플러그인 식별자를 `sirsoft-pay-nicepayments`에서 `sirsoft-pay_nicepayments`로 변경 — G7 코어가 권장하는 `vendor-name` 2-part 명명 규칙에 맞추기 위함 - 사용자 노출 에러/환불 메시지를 한국어/영어 다국어로 분리 — 운영 언어에 따라 자동 노출 - PG 프로바이더 표시명을 다국어 키로 분리 — 활성 언어팩으로 자동 보강되어 다른 PG 플러그인과 동일한 컨벤션으로 정렬 ### Added - 오픈 베타 릴리즈 - `sirsoft-pay_nicepayments.payment.before_cancel` / `after_cancel` 액션 훅 — 외부 소비자가 결제 취소 지점에 본인인증 등 확장 로직을 붙일 수 있도록 확장점 제공 - 가상계좌 입금통보 IP 화이트리스트 검증 강화 — 공식 발송 IP 외 요청은 라우트 진입 단계에서 차단 - PG 도메인 전용 예외 도입 — 외부 소비자가 나이스페이먼츠 도메인 오류만 선택적으로 처리할 수 있도록 개선 - 다크 모드 지원 보강 — 결제 설정 폼 입력 필드의 포커스 링이 다크 모드에서도 정상 표시