이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
안녕하세요.
partner WebView 미니앱에서 iOS 샌드박스 앱으로 IAP 테스트 중인데, 상품 지급 단계에서 실패가 발생해 문의드립니다.
환경
partner WebView 미니앱
@apps-in-toss/web-framework 최신 버전 사용
iOS 실기기 샌드박스 앱
Toss 로그인 연동 완료
상품 목록 조회 가능
createOneTimePurchaseOrder 연동 완료
현재 구현
getProductItemList()로 상품 목록 조회
createOneTimePurchaseOrder() 호출
processProductGrant({ orderId }) 안에서 서버 /api/coins/purchase 호출
서버에서 주문 상태 검증 후 코인 지급
성공 시 true 반환
복구는 getPendingOrders → /api/coins/grant → completeProductGrant
문제 증상
샌드박스 결제 테스트 시 PRODUCT_NOT_GRANTED_BY_PARTNER가 발생합니다.
경우에 따라 “processProductGrant 브릿지를 호출해 주세요” 화면이 보이기도 합니다.
확인된 점
appLogin() 단독 호출은 정상 동작합니다.
getProductItemList() 단독 호출도 정상 동작합니다.
실제 결제 플로우에서는 processProductGrant 구간까지는 진입하는 것으로 보입니다.
그런데 해당 시도에 대해 서버에는 /api/coins/purchase 요청 로그가 남지 않습니다.
즉, 결제 콜백은 시작된 것처럼 보이지만, 상품 지급 요청이 실제 서버까지 도달하지 않는 것으로 보입니다.
추가로 확인한 사항
IAP 실패 원인을 파악하기 위해 서버 로그를 확인했으나, 아래 항목 모두 기록이 없었습니다.
coin_purchase
coin_purchase_verification_failed
coin_grant
coin_grant_verification_failed
현재는 서버 검증 실패보다, processProductGrant 내부 요청 자체가 전송되지 않는 쪽으로 의심하고 있습니다.
질문
iOS 샌드박스 앱에서 processProductGrant 안의 서버 요청이 실제로 전송되지 않는 알려진 이슈가 있을까요?
PRODUCT_NOT_GRANTED_BY_PARTNER가 발생하지만 서버 로그가 전혀 남지 않는 경우, 어떤 지점을 우선 확인해야 할까요?
partner WebView 환경에서 processProductGrant 내부 요청을 처리할 때 권장되는 구현 패턴이 있을까요?
비슷한 사례를 보면 processProductGrant / onEvent 자체보다 콜백 내부 서버 통신 문제인 경우가 있는 것 같아서, iOS 샌드박스 기준 권장 점검 포인트를 알고 싶습니다.
appName (선택)
saju-dabang