https://github.com/gnuboard/g7/issues/125 — 상품 상세설명을 HTML 로 저장할 때 HTMLPurifier 가 모듈 vendor 폴더 안에 정의 캐시를 만들려다 실패해 저장이 매번 500 으로 끝나던 문제를 고친다. vendor 를 읽기 전용으로 두는 표준 배포에서 그 쓰기는 예외가 아니라 PHP 경고로 나오고 Laravel 이 이를 ErrorException 으로 승격시킨다. 캐시는 설정 해시당 1회만 기록되므로 캐시가 영영 생기지 않아 재시도해도 같은 결과였다. 캐시 경로를 storage 아래로 옮기고, 그 경로마저 확보하지 못하면 캐시만 끄고 정화는 그대로 수행한다 — 캐시는 성능 장치이고 정화는 보안 장치라, 전자의 실패가 후자를 건너뛰게 만들면 안 된다. 저장은 성공하므로 운영자에게 도달하는 흔적이 로그 하나뿐이라 error 수준으로 남긴다 (출하 기본 로그 수준이 error 라 warning 은 기본 설치 상태에서 파일에 남지 않는다). 그 과정에서 갈라져 있던 두 축을 코어 한 곳으로 모은다. - 쓰기 디렉토리 확보: 억제 생성·chmod·setgid·소유권 상속·쓰기 판정 절차가 정적 게시와 정의 캐시 두 곳에 서로 다른 하드닝으로 복제돼 있었다(억제 mkdir·setgid·clearstatcache 가 사본마다 한쪽씩 빠져 있었다). FilePermissionHelper 의 ensureWritableDirectory 와 hardenDirectory 로 통합하고, 실패 사유는 out 파라미터로 올려 정책(조용한 성능 저하 대 시끄러운 실패)은 호출부가 정하게 둔다. - 확장 저장 경로: storage_path('app/modules/…') 손조립이 30곳에 흩어져 있어 테스트 격리 분기를 넣으려면 사본마다 복제해야 했고, 한 곳만 빠뜨려도 그 확장의 테스트가 운영 설정 파일을 덮어쓴다. 디스크 root 를 단일 출처로 읽는 ExtensionStoragePath 로 전환하고 테스트 분기는 config/filesystems.php 한 줄에서 끝낸다. 함께 고친 것 - 테스트가 운영 라우트 캐시로 부팅해 확장 allowlist 가 라우트 축에서 통째로 무력화되던 문제. 삭제가 아니라 경로를 돌린다 — 라우트 캐시는 확장 작업 전까지 재생성되지 않아, 삭제하면 운영 사이트가 그때까지 라우트 파일 스캔 경로로 떨어진다. - PHPUnit 프로세스가 확장 vendor 의 제3자 composer 패키지를 오토로드하지 않아 그 패키지를 쓰는 코드 경로가 통째로 테스트 불가였던 문제. 확장 자신의 오토로더를 그대로 쓰면 활성 디렉토리가 _bundled 를 이기고 base path 유추까지 깨지므로, 생성된 맵에서 제3자 항목만 골라 별도 로더로 등록한다. - 게시 폴더가 setgid 를 갖지 않아, 명령줄과 웹이 번갈아 만든 하위 폴더를 다른 쪽이 쓰지 못하던 문제. - 관리자 템플릿이 HTML 정화 라이브러리를 직접 지정하지 않아 전이 의존으로 딸려온 구버전이 쓰이던 문제. 동반 산출물 - 규정 표(·AGENTS.md) 6행 + storage-driver/service-repository/testing-guide 문서 - audit 룰 2종 + coverage 6항목. 저장소가 이미 전량 전환돼 전수 실행이 공허 통과하므로 판정식은 픽스처 36건이 잠근다 - INSTALL.md 에 설치 후 파일 권한 절 추가 (vendor 쓰기 권한 불요를 명시)
34 KiB
Changelog
이 프로젝트의 모든 주요 변경사항을 기록합니다. 형식은 Keep a Changelog를 따르며, Semantic Versioning을 준수합니다.
[1.1.2] - 2026-08-22
Changed
-
코어 최소 요구 버전을 7.0.10 으로 상향
-
코어 최소 요구 버전을 7.0.8 로 상향했습니다.
Fixed
- CBT 연결 점검이 서버 출발지 IP 와 호스트 연결 가능 여부를 사이트 환경설정의 아웃바운드 프록시 설정을 따라 확인하도록 했습니다. 이전에는 프록시를 사용하는 환경에서도 프록시를 거치지 않고 확인해, 결제사에 등록해야 할 IP 와 다른 값을 알려주고 실제로는 결제가 되는 상황에서도 "연결 불가" 로 보고했습니다.
[1.1.1] - 2026-08-19
Security
- 에스크로 배송등록·구매거절확인·해외결제(CBT) 토큰/해시 요청에 입력 형식·길이 검증을 추가했습니다.
Changed
- 에스크로 배송등록 오류 안내가 다국어로 제공됩니다.
- 결제창 닫힘 보고 사유의 길이 제한을 다른 결제 플러그인과 동일하게 160자로 통일했습니다.
- 해외결제(CBT) 해시 요청에서 체크아웃 토큰 누락 응답이 표준 검증 응답(422)으로 통일되었습니다.
- 주문·결제 정보 조회가 데이터베이스 표 이름을 직접 쓰지 않고 쇼핑몰 모듈의 정의를 따르도록 내부 정리했습니다. 표시되는 내용과 동작은 종전과 동일합니다.
Fixed
- 플러그인 설정 화면의 안내·상태 아이콘이 의도한 크기와 다르게 보이던 문제와, 해외결제(CBT) 연결 상태 표시에 일부 스타일이 적용되지 않던 문제를 수정했습니다.
- 결제 실패 시 이동하는 페이지 주소에 서버 내부 오류 원문이 그대로 실려 나가던 문제를 수정했습니다. 이제 안내 문구만 전달되며, 원인 파악에 필요한 원문은 서버 로그에만 기록됩니다.
- 플러그인 설정 저장과 관리자 주문 결제 조회의 해외결제 대사 재시도·편의점 결제 처리가 실패했을 때 실패 사유 대신 일반 안내 문구만 표시되던 문제를 수정했습니다. 이제 서버가 알려준 사유가 그대로 안내됩니다.
[1.1.0] - 2026-08-10
Added
- 현금영수증을 발급사로 등록할 수 있습니다. 결제는 다른 PG로 받으면서 현금영수증만 KG이니시스로 발급하는 구성이 가능합니다.
- 현금영수증 발행취소를 지원합니다. 부분환불 등으로 주문 금액이 바뀌면 기존 영수증을 취소하고 새 금액으로 다시 발급합니다.
Changed
- 현금영수증 발행이 관리자 주문상세의 공용 현금영수증 카드로 통합되었습니다. 발급 이력, 재발급, 발급 실패 안내를 한 곳에서 확인할 수 있습니다.
- 이커머스 모듈 최소 버전을 1.1.0으로 상향했습니다.
Removed
- KG이니시스 전용 현금영수증 발행 화면과 API를 제거했습니다. 공용 현금영수증 기능으로 대체됩니다.
Fixed
-
빌드 산출물이 존재하지 않는 소스맵 파일을 참조해 브라우저 개발자 도구 사용 시 불필요한 404 요청이 발생하던 문제를 수정했습니다.
-
이커머스 관리자 주문설정에서 다른 탭에 갔다 돌아오면 간편결제 항목의 브랜드 로고가 사라지고 회색 기본 아이콘으로 남던 문제를 수정했습니다. 화면을 새로고침해야만 다시 표시됐습니다.
-
결제 취소 기록의 환불 금액에 원화 단위가 고정 표기되던 문제를 수정했습니다. 해외 결제(엔화 등) 취소도 실제 결제 통화로 표시됩니다.
-
쇼핑몰 주소를 기본값이 아닌 값으로 바꾸거나 주소 없이 운영하는 상점에서, 결제를 마치거나 결제에 실패한 구매자가 존재하지 않는 페이지로 이동하던 문제를 수정했습니다. 이동 주소가 기본 주소로 고정돼 있었기 때문이며, 이제 상점 주소 설정을 따라갑니다. 이미 운영 중인 사이트도 업데이트 시 자동으로 반영되며, 이동 주소를 직접 입력해 두었다면 그 값은 그대로 유지됩니다. (#85 @hwaryeon1234 님께서 제보해주셨습니다.)
-
안내 메시지가 번역되지 않고 내부 코드 그대로 표시되던 문제를 수정했습니다. 일본 편의점결제(CVS) 입금 통보 테스트·입금기한 만료 처리뿐 아니라 에스크로 배송 등록·구매확인 거부, 거래 조회, 정산 마감 등 이 플러그인의 모든 처리 결과에서 사용 중인 언어에 맞는 안내가 표시됩니다.
-
일본(CBT) 설정을 운영 모드로 전환할 때 상점 정보나 서명키가 비어 있어도 저장되던 문제를 수정했습니다. 필수값이 비었거나 샘플값이 그대로면 저장이 중단되고 안내 메시지가 표시됩니다.
-
이 플러그인이 설치된 사이트에서 관리자 주문 목록의 '일부취소' 표시와 적립예정 포인트·마일리지 사용 금액, 주문상품의 추가옵션 요약이 보이지 않던 문제를 수정했습니다. 결제 정보 칸에 테스트결제 표시를 덧붙이는 과정에서 목록 표 구성 전체를 옛 버전으로 되돌려 놓고 있었습니다.
-
관리자 결제수단 설정에서 가상계좌·계좌이체·휴대폰결제에 PG사를 지정할 수 없던 문제를 수정했습니다. 해당 결제수단의 PG사 목록이 항상 비어 있어 기본 PG사만 사용할 수 있었고, 결제수단별로 다른 PG사를 지정하는 설정이 화면에서 불가능했습니다.
-
카드결제를 거치지 않은 주문(무통장입금 등)의 완료 화면에서도 영수증 조회를 시도해 불필요한 요청이 나가던 문제를 수정했습니다. 화면에는 영향이 없었으나 이제 카드결제 주문에서만 조회합니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
-
PC 결제창 요청의 최소 결제금액이 100원으로 제한되어, 모바일에서는 성립하는 소액 결제가 PC 에서만 거부되던 문제를 수정했습니다. 이제 PC·모바일이 동일한 기준을 사용합니다. (#81 @jiwonpapa 님께서 제보해주셨습니다.)
-
관리자 주문 목록에서 주문번호를 눌러 상세로 들어갈 때 걸어 둔 필터와 페이지가 사라지던 문제를 수정했습니다. (#75 @jiwonpapa 님께서 제보해주셨습니다.)
-
관리자 주문 목록에서 '이 주문자의 주문 검색'을 실행하면 검색창은 비어 보이는데 직전 검색어가 계속 적용돼 결과가 어긋나던 문제를 수정했습니다. (#75 @jiwonpapa 님께서 제보해주셨습니다.)
-
해외결제(CBT) 연결 진단을 실행했을 때 결과 안내가 실제 문장 대신 내부 식별자로 표시되던 문제를 수정했습니다.
-
관리자 목록에서 검색·필터·정렬을 바꿀 때 표가 다시 그려지는 동안 로딩 표시가 나오지 않던 문제를 수정했습니다. 응답이 늦으면 아무 반응이 없는 것처럼 보여 같은 조작을 반복하게 되던 상황이 사라집니다.
[1.0.1] - 2026-07-16
Fixed
- 삼성페이·네이버페이·카카오페이·L.pay 등 KG 이니시스 간편결제로 주문할 때, 결제가 실패했는데도 관리자에게 "신규 주문 접수" 알림이 발송되던 문제를 수정했습니다.
- 간편결제로 결제하다 실패한 뒤 다시 결제하려 하면 "임시주문을 찾을 수 없습니다" 오류가 뜨며 재결제가 불가능하던 문제를 수정했습니다. 이제 결제 실패 후에도 주문서가 유지됩니다.
- 간편결제 주문을 취소할 때 카드 취소가 함께 이뤄지지 않을 수 있던 문제를 수정했습니다.
Changed
- 간편결제가 정식 결제수단으로 취급되어 주문 내역에 실제로 선택한 결제수단(예: 네이버페이)이 그대로 기록됩니다.
- 쇼핑몰 환경설정 > 주문설정의 결제수단 목록에서 간편결제가 "PG 고정 · KG이니시스"로 표시됩니다. 간편결제는 KG 이니시스 전용이므로 다른 결제대행사로 바꿀 수 없습니다.
- 결제창을 띄우기 위해 브라우저 요청을 가로채 결제수단을 바꿔치기하던 내부 처리를 제거했습니다. 결제 진행 방식이 표준화되어 주문서 입력값이 초기화되는 등의 부작용이 사라집니다.
- 주문서의 간편결제 버튼에 표시되는 브랜드 로고(네이버페이·삼성페이·카카오페이·L.pay 등)를 화면이 그려진 뒤 덧입히던 방식에서 결제수단 정보로 처음부터 표시하는 방식으로 바꿨습니다. 여러 결제사가 함께 켜져 있을 때 표시가 안정적입니다.
- 가상계좌 입금통보 등 결제대행사 서버가 직접 보내는 요청의 발신 주소를 확인하는 처리를 코어의 새로운 표준 연결 방식으로 옮겼습니다. 발신 서버 확인 범위(입금통보 계열 경로에만 적용, 브라우저 결제 콜백은 제외)는 이전과 동일합니다.
- 위 변경을 위해 코어 최소 요구 버전을 7.0.5로 상향했습니다. 이 플러그인을 업데이트하기 전에 코어를 7.0.5 이상으로 먼저 업데이트해 주세요.
[1.0.0] - 2026-07-01
Added
- 레이아웃 편집기에서 이 플러그인의 설정 화면을 테스트 모드/운영 모드 상태로 전환해 미리볼 수 있도록 했습니다.
- 레이아웃 편집기 데이터 소스 목록에서 이 확장이 제공하는 데이터 소스가 친화 명칭으로 표시되고, 어느 확장이 제공했는지 출처가 함께 표시됩니다.
- 이커머스 주문설정 결제수단 목록에 일본 PayPay와 일본 편의점결제(CVS)를 추가했습니다.
- 일본 편의점결제(CVS) 입금 NOTI를 수신해 입금대기 주문을 결제완료로 전환하는 콜백을 추가했습니다.
- KG 이니시스 간편결제 결제수단에 네이버페이를 추가했습니다.
- KG 이니시스 간편결제 결제수단을 주문서에서 브랜드 아이콘과 짧은 설명으로 표시할 수 있는
easy_pay_show_brand_button설정을 추가했습니다. 결제수단 텍스트가 데이터 로딩 후 늦게 채워지는 경우에도 브랜드 버튼 표시가 적용되며, 좁은 카드 폭(1020px 전후)에서는 제목과 설명이 총 2줄로 유지되도록 정렬됩니다.
Security
- 한국 표준/모바일 결제 서명과 프론트 결제 분기에서 KRW만 허용하고, 일본 CBT는 JPY만 허용하도록 통화 가드를 보강했습니다. USD 등 제3통화가 한국 표준결제로 전달되어 금액과 통화코드가 어긋나는 상황을 차단합니다.
- 일본 CBT 인증 실패 콜백은 무인증 브라우저 반환값이므로 주문/결제 상태를 실패로 변경하지 않고 체크아웃 복귀 안내만 하도록 변경했습니다.
- PC/모바일 가상계좌 입금통보 처리 전에 결제 발급 시점의 TID, MID, 계좌번호, 주문금액, 입금대기 상태를 대조하도록 보강했습니다. 이니시스 입금통보가 별도 서명 필드를 제공하지 않는 구간에서 IP 화이트리스트에 더해 주문 저장값 검증을 추가했습니다.
- 일본 편의점결제(CBT CVS) 입금 NOTI도 결제 발급 시점에 저장된 TID와 수신 TID를 대조하도록 보강했습니다.
- PC/모바일 가상계좌 입금통보 수신 로그에서 입금자명을 제거해 애플리케이션 로그에 개인정보가 평문으로 남지 않도록 수정했습니다.
- CBT 자동환불 재시도 요청을 DB 트랜잭션 안에서 먼저 선점하도록 변경해 관리자 더블클릭이나 동시 요청으로 같은 환불이 중복 호출될 가능성을 줄였습니다.
- CBT 승인 응답에 승인금액이 없으면 주문금액으로 자기충족 검증하지 않고 승인 TID를 자동환불 대상으로 처리하도록 보강했습니다.
- 관리자 현금영수증 발행 응답의 PG 원문을 허용 필드만 남기도록 정제해 구매자 개인정보가 관리자 API 응답에 그대로 포함되지 않도록 수정했습니다.
- 관리자 자금이동/거래조회 라우트에 이커머스 주문·상품·설정 권한을 세분화해 낮은 권한의 관리자 계정이 CBT 환불 재시도, 현금영수증 발행, 에스크로 처리 같은 금융 작업을 호출하지 못하도록 보강했습니다.
- 현금영수증 발행 식별번호를 DB에 저장할 때 전체 번호 대신 끝 4자리만 남긴 마스킹 값으로 저장하도록 변경했습니다.
- 표준/모바일 결제 서명 API에서 현재 모드의 MID와 서명키가 준비되지 않은 경우 서명을 생성하지 않고 중단하도록 보강했습니다.
- PC/모바일/CBT 결제 콜백에서 로컬 결제완료 저장 후 예외가 발생한 경우 PG 취소·환불 보상 호출을 건너뛰도록 보강했습니다. 로컬 주문은 결제완료인데 PG 거래만 취소되는 상태 불일치를 방지합니다.
- 일본 편의점결제(CBT CVS) 만료 처리와 통보 이력 저장 시 결제 row를 잠근 뒤 최신 상태를 다시 확인하도록 보강해 입금통보와 관리자 만료 처리의 동시성 충돌 가능성을 줄였습니다.
- 통화 스냅샷의 환율 설정이 비정상인 주문은 표준/모바일/CBT/가상계좌 결제 흐름에서 서버 오류 대신 검증 실패 또는 재통보 가능한 응답으로 처리하도록 보강했습니다.
- PC/모바일/CBT/가상계좌 결제 완료 콜백을 주문 단위로 직렬화해 완전 동시 콜백에서 결제완료 후속 처리 훅이 중복 실행될 가능성을 줄였습니다.
Fixed
- 이커머스 주문설정 화면에서 KG 이니시스 플러그인이 테스트 모드일 때 운영 전환 경고와 설정 이동 버튼을 표시하도록 보강했습니다.
- KG 이니시스 설정 저장 실패 시 검증 오류가 화면 상단에만 남아 사용자가 원인을 놓치지 않도록 오류 영역으로 자동 이동하고, 일본 결제(CBT) 샘플값 안내를 한 번만 표시하도록 개선했습니다.
- 상품의 기본 통화와 다른 통화로 결제한 주문(예: 엔화 상품을 원화로 결제)을 취소·환불할 때 환불 금액이 고객이 실제 결제한 통화로 정확히 요청됩니다 — 이전에는 기본 통화 기준 금액이 그대로 전달되어 결제 통화와 단위가 어긋날 수 있었습니다. 부분취소를 여러 번 나눠 진행해도 누적 환불액이 결제 통화 기준으로 정확히 계산됩니다.
- 상품의 기본 통화와 다른 통화로 결제할 때(예: 엔화 상품을 원화로 결제) 결제창에 청구된 금액과 승인·입금통보 확인 금액의 통화 기준이 어긋나 "결제 금액이 일치하지 않습니다"로 막히던 문제를 수정했습니다. 표준결제·가상계좌 입금통보·일본 편의점결제(CVS) 확인이 모두 고객이 선택한 결제 통화 기준으로 일관되게 검증됩니다.
- 관리자 주문목록과 주문상세 레이아웃이 리뉴얼되거나 플러그인 업데이트 과정에서 KG 이니시스 테스트결제 배지, 테스트 모드 안내, 결제 조회/결제 정보 패널이 누락될 수 있던 문제를 수정했습니다.
- 표준 결제 환불 시 결제 당시 저장된 MID와 테스트/운영 모드를 복원한 뒤 KG 이니시스 취소 API를 호출하도록 수정했습니다. 결제 후 플러그인 설정이 변경되어도 기존 거래 환불이 현재 설정 MID로 잘못 호출되지 않습니다.
- iPadOS Safari처럼 데스크탑 UA를 보내는 터치 기기도 모바일 결제창 경로로 분기하도록 모바일 기기 판별을 보강했습니다.
- 에스크로 배송등록/구매거절확인 PG 응답을 저장하기 전에 허용 필드만 남기고 정제 여부 플래그를 기록하도록 보강해, 수신자 연락처·주소 같은 PG 원문 개인정보가
payment_meta에 중복 저장되지 않도록 수정했습니다. - 네이버페이 브랜드 버튼 설명 테스트의 fallback 기대값을 현재 결제수단 설명 정책에 맞게 갱신했습니다.
- 이커머스 관리자 주문설정 결제수단 목록에서 KG 이니시스 간편결제 항목이 브랜드 텍스트 배지로 표시되도록 보강했습니다.
- KG 이니시스 PC 표준결제에서 결제를 정상 완료했거나 결제 도중 화면을 벗어났을 때 결제가 실패(주문 취소)로 잘못 기록될 수 있던 문제를 수정했습니다. 결제창 닫힘은 사용자가 결제창을 직접 닫은 경우에만 감지하도록 변경했습니다.
- 활성 관리자 테마에 최신 시맨틱 CSS가 없어도 플러그인 설정 화면의 여백, 카드 경계, 하단 저장 영역이 깨지지 않도록 보강했습니다.
- 회원 마이페이지 주문 상세에서 KG 이니시스로 결제한 주문의 영수증 조회 버튼이 표시되지 않던 문제를 수정했습니다. 주문 상세 주소의 주문 ID를 주문번호로 잘못 사용해 영수증 조회가 항상 실패하던 원인을 바로잡았습니다.
- 주문 상세 화면에서 다른 결제수단으로 결제한 주문까지 영수증 조회를 짧은 간격으로 수십 회 반복 요청하던 문제를 수정했습니다. 이제 KG 이니시스 결제가 아닌 주문은 영수증 조회를 호출하지 않으며, 영수증이 없다는 확정 응답을 받으면 재시도를 멈춥니다.
- 카드 결제가 정상 완료된 직후 또는 승인 콜백 처리 중 결제창 닫힘 보고가 도착하면서 결제완료 주문의 상품이 취소 상태로 바뀌던 문제를 수정했습니다. 결제가 이미 완료됐거나 완료 처리 중인 주문은 결제창 닫힘 보고로 취소 처리되지 않습니다.
- 기본 통화가 원(KRW)이 아닌 통화일 때 결제창에 전달되는 청구 금액이 결제 통화로 환산된 금액과 일치하도록 검증 기준을 맞췄습니다 — 그동안 결제 금액 불일치로 결제가 막히던 문제가 해소됩니다.
- CBT 설정 저장 검증 실패 메시지가 번역 키 그대로 노출되지 않도록 백엔드 언어팩과 플러그인 번역 로딩 경로를 보강했습니다.
- 운영 모드의 국내 표준/모바일 결제 설정이 미완료된 경우 결제창 호출 전에 명확히 중단하도록 클라이언트 설정 상태를 노출했습니다.
- 플러그인 설정의 국내 간편결제 개별 토글이 실제 주문서 결제수단 등록과 결제 요청 가능 여부에 반영되도록 수정했습니다.
- 신규 설치 사이트의 이커머스 주문설정 결제수단 목록에 KG 이니시스 네이버페이·삼성페이·L.pay·카카오페이 선택지가 표시되지 않던 문제를 수정했습니다.
Changed
- 주문 영수증의 과세금액 표시가 통화 설정을 따르도록 정리했습니다 — 기본 통화가 달러·엔 등일 때 과세금액이 원화 기호로 고정 표시되던 부분을 주문 통화 기준 표기로 바꿨습니다.
[1.0.0-beta.5] - 2026-06-09
Fixed
- 비회원 주문의 결제완료/주문상세 페이지에서 KG 이니시스 영수증이 표시되지 않던 문제 수정 — 영수증 API에
optional.sanctum을 적용하고, 결제 직후 단기 receipt cookie fallback 및 영어Payment Information주문상세 DOM에서도 프론트가 조회를 시도하도록 보강했습니다.
Changed
- 관리자 거래/주문정보 조회에서 일본 결제(CBT) 거래는 한국 INIAPI 거래조회 대신 저장된 CBT 승인/입금 확인 정보로 표시하도록 변경했습니다.
- KG 이니시스 외부 HTTP 호출에 공통 연결/응답 timeout 을 적용하고, 조회성 API에는 짧은 retry 를 적용했습니다.
- 사용자/관리자 주문 화면의 영수증·결제수단 표시 보정 요소에 플러그인 전용
data-*식별자를 부여해 중복 패치와 DOM 탐색 의존도를 낮췄습니다. - 일본 결제(CBT) 주문의 영수증 조회가 한국 KG 이니시스 매출전표 URL 대신 내부 CBT 결제확인서로 열리도록 변경했습니다.
- 일본 결제(CBT) 결제창이 선택한 결제수단에 따라 카드(
CARD), 편의점(CVS), PayPay(PAYpay)를 각각 제한 노출하도록 변경했습니다. - KG 이니시스 간편결제 4종이 이커머스 주문설정에서
PG 불필요항목으로 표시되고, 기본 PG사 설정 없이도 활성화할 수 있도록 보정했습니다. - KG 이니시스 삼성페이 PC 다이렉트 호출 값을 결제창이 인식하는 표준 옵션으로 변경했습니다.
- KG 이니시스 간편결제 승인 콜백에서 선택한 간편결제 수단을 결제 메타와 진단 로그에 남기도록 보강했습니다.
- 환경설정 화면의 폼 라벨 / 보조 설명 / 작은 보조 텍스트 시각 시맨틱을 sirsoft-admin_basic 표준 시맨틱과 정합 — 다른 관리자 화면과 같은 결로 통일.
- 환경설정 / 주문 화면 결제 영역 외형을 sirsoft-admin_basic 표준 시맨틱과 정합 — 다른 화면과 같은 결로 통일.
- 관리자 화면 좌우 정렬 컨테이너(섹션 헤더 · 액션바 · 카드 상단부 등) 외형을 표준 시맨틱(.flex-between)으로 정리 — 시각 변경 없음, 향후 톤 조정이 한 곳에서 가능.
- 환경설정 화면의 세로 정렬 컨테이너 / 입력 박스를 sirsoft-admin_basic 표준 시맨틱 (.row-stack / .input) 과 정합 — 입력 행 사이에 옅은 회색 구분선(1px) 이 자동 적용되어 행 묶음 가독성이 개선되고, 입력 박스 외형이 일관 표시되도록 정리.
Fixed
- 일본 결제(CBT) 승인 응답의 주문번호/MID/통화/결제수단이 현재 주문과 불일치해도 금액만 맞으면 결제 완료로 진행될 수 있던 검증 공백을 보강했습니다.
- 일본 편의점결제(CBT CVS) 입금 NOTI의 sid, 통화, 기존 결제상태, 기존 결제수단 검증을 강화했습니다.
- 일본 엔(JPY) 주문에서 한국 KG 이니시스 간편결제 수단이 선택되면 CBT 결제창 전체 지불수단으로 fallback 될 수 있던 문제를 수정했습니다.
- 일본 편의점결제(CBT CVS) 입금 NOTI 금액이 주문 금액과 다를 때 입금완료로 처리될 수 있던 문제를 수정했습니다.
- 일본 결제(CBT) 설정 저장 시 라이브 MID/해시키와 가맹점 표시 정보 검증 리스너가 실제 플러그인 훅에 등록되도록 수정했습니다.
- 일본 PayPay(CBT) 결제 실패 시 체크아웃 화면에
processing_failure::Processing failed upstream.같은 PG 내부 메시지가 그대로 노출되던 문제를 수정했습니다. - 일본 편의점결제(CBT CVS) 입금대기 주문이 사용자 주문 화면에서
신용카드로 표시되고, 결제확인서 금액이0 JPY로 보일 수 있던 문제를 수정했습니다. - 일본 결제(CBT) 신용카드 선택 시 결제창
paymethod가 전체 지불수단 대신CARD만 전송되도록 수정했습니다. - 일본 결제(CBT) 인증창에서 사용자가 취소한 경우 체크아웃 화면에 결제 오류 메시지를 띄우지 않도록 수정했습니다.
- 체크아웃 화면에서 숨겨진 플러그인 설정값을 기준으로 간편결제 버튼이 별도로 주입될 수 있던 문제를 수정했습니다.
- KG 이니시스 PC 결제창을 X 버튼으로 닫을 때 체크아웃 화면의 배송지 입력값이 사라지거나 화면이 흐린 상태로 남아 클릭할 수 없던 문제를 수정했습니다.
- KG 이니시스 PC 결제창 취소 후 다시 결제를 시도하면 표준결제 SDK 상태가 남아 표시 방식 오류가 발생할 수 있던 문제를 수정했습니다.
- 모바일 KG 이니시스 결제 페이지에서 브라우저 뒤로가기 또는 X 버튼으로 체크아웃에 돌아왔을 때 화면 blur/비활성 상태가 남을 수 있던 문제를 재시도 가능한 복귀 표시로 보강했습니다.
- 마이페이지와 관리자 주문 상세에서 네이버페이 등 간편결제 카드 거래가
신용카드로만 표시되던 문제를 플러그인 API/화면 보강으로 수정했습니다.
Security
- PC/모바일 표준결제 서명 API에 주문번호, 주문상태, 주문금액, 구매자 컨텍스트, JPY 차단, 요청 횟수 제한 검증을 추가해 임의 서명 발급과 PG 호출 남용 가능성을 줄였습니다.
[1.0.0-beta.4] - 2026-05-20
Added
- 이커머스 주문설정의 결제수단 목록에 KG 이니시스 간편결제 3종 (삼성페이 / L.pay / 카카오페이) 을 휴대폰결제 뒤에 자동 등록 — 플러그인 업데이트 시 기존 저장된 결제수단 순서를 유지한 채 정확한 위치에 삽입됩니다.
Changed
- KG 이니시스 플러그인 설정 화면의 간편결제 토글은 이커머스 주문설정으로 통합 — 일반 결제수단과 동일한 인터페이스에서 활성화/정렬/최소 주문금액을 관리할 수 있습니다.
Added
- 일본 결제(CBT) 설정에 JPPG 결제창 표시용 가맹점명/문의처 입력 항목을 추가했습니다.
- 일본 결제(CBT) 거래의 전체취소/부분취소가 CBT 전용 취소 API로 처리되도록 지원했습니다.
- 일본 결제(CBT) 승인 후 로컬 처리 실패와 자동환불 실패 건을 관리자 주문 상세에서 확인하고 환불을 재시도할 수 있도록 추가했습니다.
- 일본 결제(CBT) 설정 화면의 연결 진단에 APP_URL / callback URL 점검 결과를 함께 표시하도록 추가했습니다.
Changed
- 일본 결제(CBT) 요청 시 KG 이니시스 JPPG 매뉴얼의
extraData형식에 맞춰 결제창 언어, 카드 결제수단, 가맹점 표시 정보를 함께 전달합니다. - 일본 결제(CBT) hashData 생성과 콜백 처리에서 클라이언트 전달 금액 대신 서버 주문 금액과 주문 상태를 검증하도록 강화했습니다.
- 일본 엔(JPY) 주문에서 일본 결제 설정이 부족하면 한국 결제 흐름으로 대체하지 않고 명확히 중단하도록 변경했습니다.
- 일본 결제(CBT) 해시 생성 요청에 주문자 이메일/연락처 대조와 요청 횟수 제한을 추가했습니다.
- 일본 결제(CBT) 해시 생성 요청에 서버 서명 checkout token 검증을 추가해 주문 생성 직후의 결제 요청만 통과하도록 강화했습니다.
- 일본 결제(CBT) 승인/인증 원문 응답은 필요한 필드만 저장하도록 축소했습니다.
- PC/모바일 일반결제와 가상계좌 통보의 PG 응답도 필요한 필드만 저장하도록 축소했습니다.
- 일본 결제(CBT) 승인/취소 API 호출에 연결/응답 timeout 을 명시했습니다.
Fixed
- 일본 결제(CBT) 승인 응답의 정상 코드
OK가 실패로 처리될 수 있던 문제를 수정했습니다. - 일본 결제(CBT) 승인 후 로컬 주문 처리에 실패하면 CBT 전용 취소 API를 자동 호출하도록 보강했습니다.
- 일본 결제(CBT) 환불 시 현재 설정이 아닌 결제 당시 테스트/운영 모드와 일본 MID 기준으로 처리하도록 수정했습니다.
- 일본 결제(CBT)를 운영 모드로 저장할 때 라이브 MID/해시키와 실제 JPPG 표시 정보가 없으면 저장을 차단하도록 보강했습니다.
[1.0.0-beta.3] - 2026-05-20
Added
- 관리자 주문 상세에 KG 이니시스 결제 검증 패널 풀스펙 추가 — 카드/가상계좌/계좌이체/휴대폰 결제수단별 상세, 구매자 정보, 취소 요약 및 부분취소 이력, 전체 응답(JSON) 토글을 한 곳에서 확인.
- 관리자 주문 목록의 결제수단 컬럼에 테스트 결제건 강력 경고 표시 — 실제 배송 사고 방지를 위해 "주의) 실제 결제가 이루어지지 않았으므로 절대 배송하시면 안됩니다" 안내가 출력됩니다.
- 라이브 인증 정보 설정에 "라이브 모바일 위변조 해시키" 입력란 추가 — 모바일 결제창의 P_CHKFAKE 위변조 방어용 비밀키 입력 경로 제공.
- 라이브 인증 정보 입력란에 마스킹 해제 토글(눈 아이콘) 추가 — 키 발급/검증 시 평문 확인 가능.
- PG 측 결제 취소가 확인된 시점에 활동 로그가 별도로 기록되도록 보강 — 운영자가 PG 응답 시각 / 취소 TID 등 사후 추적에 활용 가능.
Changed
- 플러그인 환경설정 화면의 하단 저장 버튼이 스크롤 중에도 화면에 고정되도록 개선.
- 결제 콜백 시 가맹점 ID(MID) 와 테스트 모드 여부를 결제 정보에 함께 저장. 운영자가 테스트↔운영 모드 토글이나 MID 변경 후 과거 거래를 조회해도 정상 작동합니다.
- 가상계좌 입금기한이 결제 검증 패널과 주문 상세 화면 모두 동일한 시각으로 표시되도록 정렬.
- 라이브 인증 정보 섹션에 공통 안내문구 추가 — "KG 이니시스 상점관리자 > 상점정보 > 계약정보 > KEY 정보" 에서 모든 라이브 키 값을 확인 가능함을 안내. 개별 키별 중복 안내 문구는 용도 설명으로 간결화.
- 관리자 주문 목록의 테스트 결제 표기를 "(테스트 결제)" 로 정리하고, 상세 화면 상단의 강력 경고("(테스트 결제 주의))") 와 분리 — 목록 가독성을 해치지 않으면서 상세에서는 배송 사고 방지 문구가 명확히 강조됩니다.
Fixed
- KG 이니시스 결제 조회 시 "TID 가맹점ID 불일치" / "해시 데이터가 일치하지 않습니다" 오류로 거래 정보를 가져오지 못하던 문제 수정.
- 부분취소 시 PG 가 전액취소로 잘못 처리되어 거부될 수 있던 문제 수정 — 부분취소 금액과 원래 결제금액이 올바르게 전달되도록 정정.
- 결제창을 띄운 직후 체크아웃 화면이 한 번 재초기화되어 배송지/주문자 등 입력값이 사라질 수 있던 문제 수정.
[1.0.0-beta.2] - 2026-05-14
Removed
- 일본 결제(CBT) 설정에서 "테스트 일본 MID" 입력 필드를 제거 — KG 이니시스 공식 테스트 MID는 고정값(
CBTTEST001)이라 직접 입력할 필요가 없도록 정리
Changed
- 일본 결제(CBT) 테스트 환경의 MID를 공식 고정값으로 자동 적용하도록 변경 — 설정 누락으로 인한 결제 실패 가능성 제거
Fixed
- 결제 콜백 후 주문 완료 페이지로 이동 시
localhost등 잘못된 도메인으로 리다이렉트되던 문제 수정 — APP_URL 을 명시 base 로 사용하여 운영 도메인 보존 - 모바일 결제 콜백 라우트가 POST 요청을 거부하던 문제 수정 — KG 이니시스 모바일 표준결제의 P_NEXT_URL POST 콜백을 정상 수신
- 모바일 가상계좌 결제 시 결제완료로 잘못 처리되던 문제 수정 — 발급 시점에 계좌 정보만 저장하고 실제 결제 완료는 입금통보 시점에 처리
- 모바일 결제 콜백이 주문번호를 찾지 못해 홈으로 리다이렉트되던 문제 수정 — 표준 응답에 주문번호가 누락되는 경우를 대비해 콜백 URL 에 주문번호를 포함하여 회수
- 모바일 휴대폰 결제가 "잘못된 P_INI_PAYMENT 입니다" 오류로 실패하던 문제 수정 — 매뉴얼 표준 코드(MOBILE) 로 정정
- 모바일 휴대폰 결제가 일시 오류(MX1006) 로 실패하던 문제 수정 — 매뉴얼 필수 파라미터(상품 종류 구분) 누락 보강
- 모바일 결제창에서 사용자가 직접 결제를 취소했을 때 오류 모달이 노출되던 문제 수정 — 결제수단 선택 화면으로 조용히 복귀
Added
- 일본 결제(CBT) 설정 화면에 테스트 상품 자동 생성 도우미 추가 — 일본 결제 활성화 시 버튼 한 번으로 JPY 가격(100엔) 샘플 상품을 즉시 등록 가능 (생성된 상품을 장바구니에 담을 수 있도록 기본 옵션도 함께 등록)
- 모바일 가상계좌 결제 시 KG 이니시스로부터 입금 통보를 수신할 수 있도록 입금통보 URL 을 자동 부착 — PC 가상계좌(가맹점 어드민 등록 URL) 와 동일하게 입금 후 자동으로 결제 완료 처리됨
Security
- 결제 서명 요청의 timestamp 신선도(±5분) 검증 추가 — PC/모바일/일본결제(CBT) 모든 서명 발급 경로에서 과거에 캡처된 timestamp 로 동일 서명을 재사용하는 replay 공격을 차단
- 결제 콜백 중복 처리 방어 추가 — 동일 거래번호로 콜백이 두 번 도착해도 결제완료/마일리지 적립 등이 중복 실행되지 않도록 멱등 응답 처리 (PC 카드/가상계좌/모바일 카드/모바일 가상계좌/일본결제 5개 경로)
- 모바일 카드 결제 처리 중 오류 발생 시 결제 자동 취소 추가 — 승인 후 후속 처리(금액 검증 등) 실패 시 PG 측 결제도 자동 취소하여 사용자 환불 누락 방지
- 일본결제(CBT) 처리 중 오류 발생 시 운영자 수동 정산 신호 강화 — 승인 후 후속 처리 실패가 운영 로그에 즉시 드러나도록 표시
Added
- 가상계좌 결제 시 PG 응답의 은행코드를 저장하도록 개선 — 운영자가 입금 확인/대사 작업 시 은행 식별이 가능하도록 함
- 마이페이지 가상계좌 입금 안내에 관리자에게만 은행코드 행 노출 — 동일 페이지를 일반 사용자에게는 종전과 동일하게 표시
[1.0.0-beta.1] - 2026-04-22
Changed
- 플러그인 식별자를
sirsoft-pay-kginicis에서sirsoft-pay_kginicis로 변경 — G7 코어가 권장하는vendor-name2-part 명명 규칙에 맞추기 위함 - 사용자 노출 에러/환불/현금영수증 메시지를 한국어/영어 다국어로 분리 — 운영 언어에 따라 자동 노출
- PG 프로바이더 표시명을 다국어 키로 분리 — 활성 언어팩으로 자동 보강되어 다른 PG 플러그인과 동일한 컨벤션으로 정렬
Added
- 오픈 베타 릴리즈
sirsoft-pay_kginicis.payment.before_cancel/after_cancel액션 훅 — 외부 소비자가 결제 취소 지점에 본인인증 등 확장 로직을 붙일 수 있도록 확장점 제공- 입금통보/에스크로/모바일 가상계좌 통보 IP 화이트리스트 검증 강화 — 공식 발송 IP 외 요청은 라우트 진입 단계에서 차단
- PG 도메인 전용 예외 도입 — 외부 소비자가 KG 이니시스 도메인 오류만 선택적으로 처리할 수 있도록 개선
- 다크 모드 지원 보강 — 결제 설정 폼 입력 필드의 포커스 링이 다크 모드에서도 정상 표시