이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
안녕하세요. 탱글 파이어(tanglefire) 출시를 준비하고 있습니다. 콘솔 채널톡에서 개발자 커뮤니티 문의를 안내받아 질문드립니다.
환경: WebView, @apps-in-toss/web-framework 3.8.0 (2026-10-15 npm 최신 버전 확인). 광고 제거 비소모품과 해당 월 프리미엄 패스 소모품을 준비 중입니다. 고객 정보·실제 주문·키는 포함하지 않았습니다.
1. 서버에서 로그인 사용자와 주문 구매자의 동일성을 검증하는 공식 계약
현재 주문 조회 API 문서는 POST /api-partner/v1/apps-in-toss/order/get-order-status에 orderId만 보내고 사용자 헤더(x-toss-user-key, x-anon-key)는 받지 않는다고 안내합니다. 응답 스키마에도 orderId / sku / status / statusDeterminedAt만 있고 구매자 식별자는 없습니다.
한편 과거 커뮤니티 답변과 공식 Unity SDK APIUsagePatterns에는 토스 로그인 userKey를 이용한 주문 확인에 대한 설명이 있어 현재 계약을 확인하려고 합니다.
- mTLS로 앱 범위의 주문을 확인한 뒤, 서버가 검증한 토스 로그인 사용자와 그 주문의 실제 구매자가 같음을 확인할 수 있는 공식 API·서명·헤더가 있나요?
- 주문 ID를 처음 제출한 사용자에게 원장을 고정하는 방식은 ‘최초 제출자’를 신뢰하게 되는데, 이 방식이 공식 지원하는 보안 모델인지, 별도 권장 방식이 있는지 궁금합니다.
statusDeterminedAt은 마지막 상태 확정 시각으로 정의되어 있습니다.PAYMENT_COMPLETED에서 관찰한 값을 원 결제일로 고정해 월 패스 시즌을 정해도 되나요? 처음 조회한 상태가PURCHASED일 때 원 결제일을 서버에서 확인하는 방법도 부탁드립니다. 복원한 날짜가 새 시즌 지급일이 되지 않게 하려는 목적입니다.
문서: 인앱 결제 | API | 앱인토스 개발자센터
인앱 결제 | SDK | 앱인토스 개발자센터
과거 관련 답변: 지금 JS를 HASH 방식으로 바꿨는데, 그러면 userKey는 어떻게 가져오나요 - Roy 님의 게시물 #8
공식 Unity SDK 설명: https://github.com/toss/apps-in-toss-unity-sdk/blob/main/Documentation~/APIUsagePatterns.md
2. SDK 3.8.0에서 50건 초과 완료·환불 주문의 전체 페이지 복원
공식 WebView 문서는 다음 호출을 안내합니다.
IAP.getCompletedOrRefundedOrders({ key: nextKey })
하지만 설치한 3.8.0 dist/index.js의 실제 구현은 인자를 받지 않고 빈 객체만 전달합니다.
const getCompletedOrRefundedOrders = Object.assign(
() => callAsyncMethod("getCompletedOrRefundedOrders", {}),
// ...isSupported
);
타입도 무인자이며, 반환값에는 hasNext와 nextKey가 있습니다. 첫 페이지에서 hasNext=true이면 나머지 주문을 조회할 공식 방법을 찾지 못했습니다. 인자를 강제 캐스팅해도 위 구현에서는 key가 전송되지 않습니다.
- WebView 3.8.0에서 전체 페이지를 복원하는 정확한 호출 방법 또는 수정 버전/일정을 알려주세요.
- 완료·환불 목록의 주문 날짜(date)가 타임존 없는 ISO 문자열일 때 적용할 시간대도 확인 부탁드립니다.
현재는 일부 목록만으로 복원 완료를 표시하거나 소유권 검증을 생략하지 않고, 관련 지급/출시 게이트를 닫아둔 상태입니다. 공식 계약에 맞춰 안전하게 연동하고 싶습니다. 감사합니다.
appName (선택)
tanglefire