IAP 정기결제 callback 인증 방식과 timestamp 기준을 확인하고 싶습니다

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

안녕하세요. Apps-in-Toss IAP 정기결제 callback 연동 중 문의드립니다.

개발 환경:

  • Apps-in-Toss SDK3 Web
  • React + Vite
  • Node.js + Hono 서버
  • Apps-in-Toss IAP 정기결제

테스트 환경:

  • Apps-in-Toss Sandbox
  • Android Toss 앱
  • callback 등록 및 검증 테스트

callback 인증 방식에 대해 확인이 필요합니다.

  1. callback 요청은 Authorization: Basic 방식인가요, Authorization: Bearer 방식인가요?
  2. Basic Auth를 사용하는 경우 콘솔에 입력하는 값은 원문 값인가요, Base64 인코딩 값인가요?
  3. callback.registration_verification과 subscription.status_changed 요청의 인증 방식은 동일한가요?
  4. callback 성공 응답은 반드시 HTTP 204이어야 하나요?

또한 정기결제 callback의 다음 시간 필드가 timezone 없는 ISO 문자열로 전달됩니다.

  • occurredAt
  • subscription.previous.expiresAt
  • subscription.current.expiresAt

정확한 시간 기준을 확인하고 싶습니다.

  1. 위 시간 필드는 UTC 기준인가요?
  2. Asia/Seoul 또는 KST 기준인가요?
  3. callback.registration_verification의 occurredAt도 동일한 기준인가요?
  4. previous.expiresAt과 current.expiresAt도 동일한 기준인가요?
  5. expiresAt이 null인 경우 status, accessGranted, autoRenew 중 어떤 값을 최종 구독 권한 판단 기준으로 사용해야 하나요?
  6. 같은 occurredAt에 서로 다른 상태 이벤트가 도착하면 어떤 이벤트를 최종 상태로 처리해야 하나요?
  7. Environment.getServerTime()을 callback timestamp 검증에 사용할 수 있나요? 아니면 클라이언트의 현재 서버 시각 확인 용도인가요?

공식적인 인증 헤더 형식, timestamp 기준, 구독 권한 판단 우선순위를 확인해 주시면 서버 연동에 반영하겠습니다.

안녕하세요 :slight_smile:
관련 가이드를 먼저 전달드립니다.
1.Basic 방식입니다.
2.원문 값을 입력해주시면 되며, 웹훅 전달시 base64 인코딩되어 전달됩니다.
3. 동일합니다.
4.웹훅에 대한 응답은 204로 보내주시면 될 것 같아요.
6,7,8,9. 현재 timezone 없는 ISO-8601 문자열로 전달되는데, 정확한 시간 값이 필요하신걸까요 ?
10.status를 기준으로 확인 부탁드립니다.
11.동일한 occurredAt 에 서로 다른 상태 이벤트가 도착한다는게 어떤 의미 이실까요 ?
12.Environment.getServerTime() 해당 함수는 클라이언트 현재 서버 시각 확인 용도입니다.