인앱결제 processProductGrant에 orderId가 undefined로 전달되는 문제

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

질문 / 문제 해결

내용을 설명해주세요

안녕하세요, 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)

감사합니다.

@kimhojun8490 님 안녕하세요

기존 샌드박스 앱에서는 정상적으로 orderId가 내려왔나요?

네 안녕하세요

기존에는 @apps-in-toss/web-framework 1.2.2를 사용하고 있었고, processProductGrant 콜백도 구현해서 사용하고 있었습니다. 기존 샌드박스 앱에서는 정상적으로 결제가 완료되었는데, 당시에는 SDK 내부적으로 v1 경로(iapCreateOneTimePurchaseOrder)로 동작해서 processProductGrant에서 orderId를 네이티브로 다시 전달하는 과정이 없었습니다.

3월 6일자 샌드박스 앱 업데이트 이후 v2 경로(createEventBridge("requestOneTimePurchase"))를 타게 되면서, purchased 이벤트의 event.data.orderId가 undefined로 내려오는 것을 확인한 상황입니다.

조금만 기다려주세요

내부 이슈 있는 것으로 확인되어 수정 중에 있습니다

불편을 드려 죄송해요

네 수정되면 말씀해주세요
감사합니다

1개의 좋아요