Skip to main content

KG 이니시스 연동 시 주의 사항

· 4 min read
Ryukato
BackEnd Software Developer

웹 표준 결제를 위해 **이니시스(INIpay)**를 연동하던 중 다음과 같은 에러에 부딪혔습니다.

V901 : 잘못된 접근 방식입니다. 잠시 후 다시 시도해주세요

처음에는 signature나 timestamp 같은 보안 파라미터 문제인가 싶었지만, 실제 원인은 Referer 헤더 누락이었습니다.


🔍 에러 메시지 분석

공식 가이드에 따르면, V901 에러는 다음과 같은 경우 발생합니다:

"웹표준 결제창 요청시 Request header에 Referer값이 전달되지 않아 당사서버에서 Referer값 검증시 발생되는 오류입니다."

즉, 브라우저가 이니시스 서버로 결제 요청을 보낼 때 Referer 헤더가 없으면 오류가 발생합니다.


❓ 그런데 왜 Referer가 누락되었을까?

저는 로컬 개발 환경에서 Spring Boot + Kotlin + Spring Security + Freemarker를 사용하고 있었고,
다음과 같은 조건으로 테스트를 진행했습니다:

  • localhost가 아닌 dev.mysite.local로 도메인 매핑 후 테스트
  • INIStdPay.js를 이용한 웹 표준 결제 호출
  • Referer가 포함되어야 정상 작동함

그런데도 계속 V901 에러가 발생했죠.


✅ 원인: Spring Security의 ReferrerPolicy 설정

결국 원인은 Spring Security의 기본 ReferrerPolicy가 너무 보수적이었기 때문이었습니다.
별도로 설정하지 않으면 브라우저가 아예 Referer를 안 보내게 되어 있었던 것이죠.

아래와 같이 설정을 추가하자 문제는 바로 해결되었습니다 🎉

fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
return http {
headers {
// ✅ Referrer 정책을 ORIGIN으로 설정 (도메인 정보만 전달)
referrerPolicy {
policy = ReferrerPolicyServerHttpHeadersWriter.ReferrerPolicy.ORIGIN
}

// (선택) frameOptions 비활성화
frameOptions { disable() }
}

// ... 나머지 보안 설정
}
}

💡 추가 팁

  • form에는 반드시 name 속성을 지정해야 INIStdPay가 정상 동작합니다.

    <form name="SendPayForm_id" id="SendPayForm_id" method="post"> ... </form>
  • timestamp, signature, mKey, verification 등의 파라미터도 반드시 이니시스 가이드에 맞게 생성되어야 합니다.

  • 브라우저 F12 → Network 탭에서 Referer 헤더가 실제 포함되었는지 꼭 확인하세요.


📝 마무리

이니시스 연동에서 V901은 참 해석하기 어려운 에러지만, 대부분은 Referer 관련 정책 문제에서 비롯됩니다.
Spring Security와 함께 사용하는 경우 ReferrerPolicy 설정을 꼭 확인해보세요!


🏷️ 태그

#이니시스 #INIpay #SpringSecurity #RefererPolicy #PG연동 #웹표준결제 #V901