이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
안녕하세요, WebView 파트너 미니앱에서 인앱결제를 구현하고 있습니다.
@apps-in-toss/web-framework 2.0.1로 마이그레이션 완료하고 3월 6일자 최신 샌드박스 앱에서 테스트 중인데, processProductGrant 콜백에서 orderId가 undefined로 전달되는 문제가 발생합니다.
createOneTimePurchaseOrder 호출 후 processProductGrant 콜백 자체는 정상 호출되는데, 파라미터를 로그로 찍어보면 이런 상태입니다:
JSON.stringify(params) → {}
Object.keys(params) → [“orderId”]
키는 존재하지만 값이 undefined여서 JSON.stringify에서 생략되는 상황입니다.
콜백 내에서 서버 통신(fetch)은 정상적으로 동작하고 상품 지급도 성공하는데, processProductGrant가 return true를 한 뒤 SDK 내부에서 네이티브로 processProductGrant({ orderId: undefined, isProductGranted: true })를 전달하면서 INVALID_DATA 에러가 발생하고, 이후 PRODUCT_NOT_GRANTED_BY_PARTNER 에러로 결제가 최종 실패합니다.
SDK 소스(@apps-in-toss/web-bridge 2.0.1)를 확인해보니, createEventBridge(“requestOneTimePurchase”)의 “purchased” 이벤트에서 event.data.orderId를 읽어서 processProductGrant에 전달하는 구조인데, event.data에 orderId가 포함되지 않는 것 같습니다.
혹시 3월 6일자 샌드박스(RN 0.84)에서 purchased 이벤트에 orderId가 누락되는 이슈가 있는지 확인 부탁드립니다.
환경:
- @apps-in-toss/web-framework: 2.0.1
- @apps-in-toss/web-bridge: 2.0.1
- WebView 파트너 (React 19 + Vite)
- 샌드박스 앱: 3월 6일 최신 (iOS)
감사합니다.