Files
Gnuboard7/plugins/_bundled/sirsoft-pay_kginicis
HeuJung bd215bc586 feat(identity): NHN KCP 휴대폰 본인확인 플러그인 추가
메일 인증 대신 휴대폰 본인확인을 쓸 수 있게 하는 플러그인을 추가한다.
가입·비밀번호 재설정·성인인증 등 코어 IDV 가 강제하는 모든 지점에서 동작하며,
테스트 모드로 계약 없이 전 흐름을 확인할 수 있다.

구현·검수 과정에서 드러난 저장소 전역 결함을 함께 처리했다.

- 외래키 컬럼의 한국어 comment 가 방출되지 않던 문제 (소스 38건 교정 +
 기설치본 백필 업그레이드 스텝 7종). ->comment 를 ->constrained 뒤에
 체인하면 예외 없이 통과하면서 comment 가 조용히 사라진다
- 로케일 전환 후 확장 액션 핸들러가 소실되던 문제 (플러그인 3종에
 재등록 진입점 노출)
- 본인인증 상태 폴링 응답이 누적 시도 횟수를 함께 내보내던 문제
- 인증 안내 문구와 실제 진행 방식의 폭 경계 불일치 (768~1023px).
 엔진과 같은 값을 같은 방법으로 읽도록 교정
- transition_overlay_target 이 replace 없이 무효이던 관리자 목록 40곳.
 로딩 표시가 나오지 않아도 경고가 남지 않아 화면을 봐야만 알 수 있었다

두 인증 플러그인의 코어 최소 요구 버전을 7.0.6 으로 올린다. 운영 모드
자격증명 필수 검사가 7.0.6 의 설정 저장 검증 표면에 의존하며, 그보다 낮은
코어에서는 그 검사가 조용히 통과해 빈 자격증명으로 저장할 수 있었다.

재발 차단으로 정적 검사 룰 4종을 신설하고, 검사 도구가 미커밋 신규 확장을
"검사 파일 0" 으로 통과시키던 사각을 함께 막았다.
2026-07-31 00:32:46 +09:00
..
2026-07-01 10:30:32 +09:00
2026-07-01 10:30:32 +09:00
2026-07-01 10:30:32 +09:00
2026-07-01 10:30:32 +09:00
2026-07-01 10:30:32 +09:00
2026-07-01 10:30:32 +09:00
2026-07-01 10:30:32 +09:00

KG Inicis Plugin for G7

KG 이니시스 표준결제를 G7 sirsoft-ecommerce 모듈에 연결하는 결제 플러그인입니다.

PC 결제는 KG 이니시스 INIStdPay.js 표준결제창을 사용하고, 모바일 결제는 KG 이니시스 모바일 표준결제창으로 이동한 뒤 서버 승인 API로 최종 승인합니다. 일본 엔(JPY) 결제는 KG 이니시스 CBT(JPPG) 흐름을 사용합니다.

주요 기능

  • 신용카드, 계좌이체, 가상계좌, 휴대폰결제 지원
  • PC 표준결제창 연동
  • 모바일 표준결제창 연동 및 P_CHKFAKE 위변조 방지 해시 생성
  • 삼성페이, L.pay, 카카오페이 간편결제 버튼 주입
  • 가상계좌 발급, PC/모바일 입금통보 처리
  • 에스크로 결제, 배송 등록, 구매결정, 구매거절확인 연동
  • 결제 취소 및 부분취소 연동
  • PG 측 결제 취소 확인 시점의 활동 로그 별도 기록 (PG 응답 시각·취소 TID 사후 추적)
  • 주문 완료/마이페이지 영수증 버튼 주입
  • 관리자 주문 상세의 거래 조회, 현금영수증 발행, 에스크로 처리 UI 확장
  • 일본 결제 CBT(JPPG) 인증/승인, 테스트 상품 생성, 연결 진단
  • 승인 URL 화이트리스트, 콜백 재처리 방지, 타임스탬프 신선도 검증

요구 사항

항목 내용
G7 >= 7.0.0-beta.2
의존 모듈 sirsoft-ecommerce >= 1.0.0-beta.4
PHP ^8.2
운영 환경 HTTPS 도메인, 올바른 APP_URL, KG 이니시스 가맹점 계약 정보
PC 결제 MID, signKey
모바일 결제 MID, 모바일 hash key
취소/거래조회/현금영수증 INIAPI key, INIAPI IV
일본 CBT 별도 일본 결제 MID, CBT hash key

서버에서 KG 이니시스 결제/INIAPI/CBT 호스트로 HTTPS outbound 요청이 가능해야 합니다. CBT 테스트 환경 devcbt.inicis.com은 KG 이니시스 측에 서버 egress IP 등록이 필요할 수 있습니다.

설치

플러그인을 G7 프로젝트의 플러그인 디렉토리에 배치합니다.

plugins/sirsoft-pay_kginicis

프론트엔드 에셋을 수정한 경우 플러그인 디렉토리에서 빌드합니다.

npm install
npm run build

그다음 G7 관리자에서 플러그인을 활성화하고, 이커머스 결제 설정에서 PG 제공자를 KG 이니시스로 선택합니다.

관리자 설정

관리자 플러그인 설정 화면에서 KG 이니시스 계약 정보를 입력합니다.

설정 설명
테스트 모드 활성화 시 KG 이니시스 테스트 환경을 사용합니다. 실제 카드 승인/출금 알림이 발생할 수 있으며, 테스트 거래는 매일 23:00~23:50 사이 자동 취소될 수 있습니다.
테스트 MID 기본값은 INIpayTest입니다. 에스크로 테스트 사용 시 내부적으로 iniescrow0을 사용합니다.
테스트 사인키 PC 결제창 서명 생성에 사용합니다.
테스트 INIAPI 키/IV 취소, 거래조회, 현금영수증, 에스크로 API 인증에 사용합니다.
테스트 모바일 해시키 모바일 P_CHKFAKE 생성에 사용합니다.
라이브 MID 운영 MID입니다. SIR prefix 없이 입력해도 플러그인이 자동 보정합니다.
라이브 사인키 운영 결제창 서명 생성에 사용합니다. 외부에 노출하지 마세요.
라이브 INIAPI 키/IV 운영 취소, 거래조회, 현금영수증, 에스크로 API 인증에 사용합니다.
라이브 모바일 해시키 운영 모바일 P_CHKFAKE 생성에 사용합니다.
에스크로 결제 활성화 PC는 acceptmethod에 useescrow, 모바일은 P_RESERVED에 useescrow=Y를 추가합니다.
일본 결제 활성화 JPY 주문에서 KG 이니시스 CBT(JPPG) 결제 흐름을 사용합니다.
테스트 일본 CBT 해시키 CBT 테스트 해시 생성에 사용합니다. 테스트 MID는 CBTTEST001 고정값을 사용합니다.
라이브 일본 MID/해시키 운영 CBT 결제에 사용합니다.
JPPG 결제창 표시 정보 일본 결제창 extraData에 포함되는 가맹점명, 가나명, 영문명, 문의처 정보를 설정합니다. 운영 전 실제 계약 정보로 교체하세요.
결제 성공 URL 기본값은 /shop/orders/{orderId}/complete입니다.
결제 실패 URL 기본값은 /shop/checkout입니다.
간편결제 KG 이니시스 계약이 완료된 간편결제만 활성화하세요.
타 PG와 사용가능함 다른 PG가 기본값이어도 KG 이니시스 간편결제 버튼을 체크아웃 화면에 표시합니다.
신용카드 포인트 사용 PC 카드 결제 acceptmethod에 신용카드 포인트 사용 옵션을 추가합니다.

테스트 모드 주문은 실제 배송하지 마세요. 실제 카드 승인/출금 알림이 발생할 수 있으며, 테스트 거래는 매일 23:00~23:50 사이 자동 취소될 수 있습니다.

운영 키와 해시키는 외부에 노출하지 말고, 배포 전 테스트 모드가 의도한 값인지 확인하세요.

콜백 및 통보 URL

KG 이니시스 가맹점 관리자에 아래 URL을 등록합니다. 도메인은 실제 운영 도메인으로 바꿔 입력하세요.

용도 URL
PC 결제 결과 Return URL https://your-domain.com/plugins/sirsoft-pay_kginicis/payment/callback
PC 가상계좌 입금통보 URL https://your-domain.com/plugins/sirsoft-pay_kginicis/payment/vbank-notify
모바일 결제 결과 P_NEXT_URL https://your-domain.com/plugins/sirsoft-pay_kginicis/payment/mobile/callback
모바일 가상계좌 입금통보 URL https://your-domain.com/plugins/sirsoft-pay_kginicis/payment/mobile/vbank-notify
CBT 콜백 URL https://your-domain.com/plugins/sirsoft-pay_kginicis/payment/cbt/callback
CBT 편의점 입금 NOTI URL https://your-domain.com/plugins/sirsoft-pay_kginicis/payment/cbt/cvs-notify
에스크로 구매결정 화면 https://your-domain.com/plugins/sirsoft-pay_kginicis/payment/escrow-confirm/{orderNumber}

PC 결제 결과 Return URL과 모바일 P_NEXT_URL은 사용자 브라우저를 통해 호출됩니다. 가상계좌 입금통보 URL은 KG 이니시스 서버가 직접 호출하므로 운영 환경에서 IP 화이트리스트가 적용됩니다.

KG 이니시스 PC 에스크로 매뉴얼 기준 별도 webhook 통보 채널은 사용하지 않습니다. 에스크로 배송등록, 구매결정, 구매거절확인은 플러그인이 제공하는 화면과 API를 통해 처리합니다.

IP 화이트리스트

운영 환경에서는 아래 IP에서 들어온 KG 이니시스 가상계좌 입금통보만 허용합니다. local, testing 환경에서는 개발과 테스트를 위해 제한을 우회합니다.

IP
203.238.37.15
39.115.212.9
118.129.210.25
183.109.71.153

운영 전 KG 이니시스 가맹점 관리자와 최신 연동 가이드의 통보 서버 IP를 다시 확인하세요.

결제 흐름

PC 결제

체크아웃 주문 생성
→ 프론트엔드 핸들러가 /payment/signature 호출
→ INIStdPay.js 결제창 실행
→ KG 이니시스가 /payment/callback 으로 authToken, authUrl POST
→ 서버가 authUrl 화이트리스트 검증 후 승인 API 호출
→ 주문 결제 완료 처리
→ 성공 URL로 리다이렉트

승인 후 주문 처리에 실패하면 KG 이니시스 netCancel URL로 망취소를 시도합니다.

모바일 결제

체크아웃 주문 생성
→ /payment/mobile/signature 호출
→ 모바일 표준결제창으로 form POST
→ KG 이니시스가 /payment/mobile/callback 으로 P_TID, P_REQ_URL 전달
→ 서버가 P_REQ_URL 화이트리스트 검증 후 모바일 승인 API 호출
→ 주문 결제 완료 처리
→ 성공 URL로 리다이렉트

모바일 승인 후 주문 처리에 실패하면 취소 API로 자동 취소를 시도합니다.

가상계좌

결제창에서 가상계좌 발급
→ 주문 결제 정보에 은행, 계좌번호, 예금주, 만료일 저장
→ 주문은 입금대기 상태 유지
→ KG 이니시스가 입금통보 URL로 입금 결과 POST
→ 거래번호 재처리와 금액 검증 후 주문 결제 완료 처리

PC와 모바일 입금통보는 서로 다른 URL을 사용하지만, 모두 같은 IP 화이트리스트 미들웨어를 통과해야 합니다.

일본 CBT

JPY 주문 생성
→ /payment/cbt/hash-data 호출
→ CBT 인증 URL로 form POST
→ KG 이니시스가 /payment/cbt/callback 으로 sid 전달
→ 서버가 cbtapprove API 호출
→ 카드/PayPay는 주문 결제 완료 처리
→ 편의점(CVS)은 입금대기 저장 후 /payment/cbt/cvs-notify 입금 NOTI 수신 시 결제 완료 처리

CBT 승인 이후 로컬 후속 처리에 실패하면 CBT 전용 취소 API로 자동 취소를 시도합니다. 자동 취소까지 실패한 경우에는 운영자 수동 취소가 필요하다는 오류 로그를 남깁니다.

일본 엔(JPY) 주문은 일본 결제 설정이 완료된 경우에만 CBT 결제창으로 진입합니다. 설정이 부족하면 한국 표준결제 흐름으로 대체하지 않고 결제를 중단합니다.

현재 CBT 결제창은 선택한 결제수단에 맞춰 지불수단을 제한합니다. 신용카드는 CARD만, PayPay는 PAYpay만, 일본 편의점결제는 CVS만 열립니다.

운영 모드에서 일본 결제를 활성화하려면 라이브 일본 MID/CBT 해시키와 실제 JPPG 가맹점 표시 정보가 필요합니다. 기본 샘플값이 남아 있으면 설정 저장 단계에서 차단됩니다.

에스크로

에스크로를 활성화하면 결제 요청에 에스크로 옵션을 전달합니다. 에스크로 결제 완료 후 관리자 주문 상세에서 배송 등록을 호출할 수 있고, 사용자는 에스크로 구매결정 화면에서 구매확인을 진행할 수 있습니다.

구매거절이 발생한 주문은 관리자 주문 상세에서 구매거절확인을 호출할 수 있습니다.

결제 취소 / 부분취소

관리자 주문 취소 요청 (cancel_pg=true)
→ 코어가 sirsoft-ecommerce.payment.refund 필터 훅 발화
→ PaymentRefundListener 가 KG 이니시스 취소/부분취소 API 호출
   · 전액취소: cancelPrice=null, totalAmount=null
   · 부분취소: cancelPrice=취소 금액, totalAmount=원래 결제금액
→ 코어가 환불 레코드 생성 + 쿠폰 / 마일리지 / 재고 복원
→ CancelActivityLogListener 가 PG 응답 시각·취소 TID를 활동 로그에 기록

배송비가 포함된 주문은 전체취소 시 배송비도 함께 환불 레코드에 반영되고, 쿠폰이 적용된 주문은 실결제금액(쿠폰 차감 후) 이 PG 취소 금액으로 전달됩니다. 부분취소 시 쿠폰 최소 주문금액 조건을 더 이상 충족하지 못하면 코어가 취소 자체를 거부 (422) 하여 PG 호출이 발생하지 않습니다. KG 이니시스 API 호출이 실패하면 주문 상태 변경이 롤백됩니다.

API

사용자 API

Method Path 설명
POST /api/plugins/sirsoft-pay_kginicis/payment/signature PC 결제창 서명 생성
POST /api/plugins/sirsoft-pay_kginicis/payment/mobile/signature 모바일 P_CHKFAKE 생성
POST /api/plugins/sirsoft-pay_kginicis/payment/cbt/hash-data CBT hashData 생성
GET /api/plugins/sirsoft-pay_kginicis/user/orders/{orderNumber}/receipt KG 이니시스 영수증 URL 조회

관리자 API

Method Path 설명
GET /api/plugins/sirsoft-pay_kginicis/admin/vbank-notify-url PC/모바일 가상계좌 입금통보 URL 조회
GET /api/plugins/sirsoft-pay_kginicis/admin/orders/test-mode-map 주문목록 테스트 모드 배지용 맵 조회
POST /api/plugins/sirsoft-pay_kginicis/admin/transaction/query TID로 KG 이니시스 거래 조회
GET /api/plugins/sirsoft-pay_kginicis/admin/orders/{orderNumber}/transaction-status 주문번호로 거래 상태 조회
POST /api/plugins/sirsoft-pay_kginicis/admin/orders/{orderNumber}/cash-receipt 현금영수증 별도 발행
GET /api/plugins/sirsoft-pay_kginicis/admin/orders/{orderNumber}/escrow-delivery 에스크로 배송 등록 폼 데이터 조회
POST /api/plugins/sirsoft-pay_kginicis/admin/orders/{orderNumber}/escrow-delivery KG 이니시스 에스크로 배송 등록
POST /api/plugins/sirsoft-pay_kginicis/admin/orders/{orderNumber}/escrow-deny-confirm 에스크로 구매거절확인
POST /api/plugins/sirsoft-pay_kginicis/admin/cbt-test-product CBT 테스트용 JPY 상품 생성
GET /api/plugins/sirsoft-pay_kginicis/admin/cbt-connectivity-check CBT 테스트 호스트 연결 진단

훅

다른 모듈이나 플러그인에서 아래 훅에 연결해 결제 흐름을 확장할 수 있습니다.

훅 타입 시점
sirsoft-pay_kginicis.payment.before_authorize action KG 이니시스 서버 승인 API 호출 전
sirsoft-pay_kginicis.payment.after_authorize action KG 이니시스 서버 승인 완료 후
sirsoft-pay_kginicis.payment.before_cancel action KG 이니시스 결제 취소 API 호출 전
sirsoft-pay_kginicis.payment.after_cancel action KG 이니시스 결제 취소 완료 후

sirsoft-ecommerce.payment.refund 필터를 통해 이커머스 환불 요청을 KG 이니시스 취소/부분취소 API로 연결합니다.

보안 및 운영 참고

  • 운영 도메인의 APP_URL을 HTTPS 절대 URL로 정확히 설정하세요.
  • 운영 signKey, INIAPI key, INIAPI IV, 모바일 hash key, CBT hash key는 외부에 노출하지 마세요.
  • 결제창 서명, 모바일 해시, CBT 해시 생성 요청은 타임스탬프 신선도를 검증합니다.
  • CBT 해시 생성 요청은 주문자 이메일/연락처와 서버 주문 정보를 대조하고, IP/주문번호 단위 요청 횟수를 제한합니다.
  • CBT 환불은 결제 당시 저장된 테스트/운영 모드와 일본 MID 기준으로 처리합니다.
  • PC authUrl, 모바일 P_REQ_URL, PC netCancelUrl은 KG 이니시스 허용 URL만 사용합니다.
  • 동일 거래번호 콜백은 중복 처리하지 않도록 방어합니다.
  • 운영 환경에서는 가상계좌 입금통보 IP 화이트리스트가 적용됩니다.
  • 가상계좌 입금통보 URL은 KG 이니시스 가맹점 관리자에 반드시 등록해야 합니다.
  • KG 이니시스 계약이 없는 결제수단이나 간편결제를 활성화하면 결제창 오류가 발생할 수 있습니다.
  • CBT 테스트가 실패하면 관리자 CBT 연결 진단에서 서버 egress IP와 devcbt.inicis.com 443 연결 상태를 먼저 확인하세요.

테스트

플러그인을 G7 프로젝트에 배치한 뒤 G7 루트에서 PHP 테스트를 실행합니다.

php artisan test plugins/sirsoft-pay_kginicis/tests

프론트엔드 테스트와 빌드는 플러그인 디렉토리에서 실행합니다.

npm install
npm run test:run
npm run build

라이선스

MIT