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

**URL:** <https://techchat-apps-in-toss.toss.im/t/processproductgrant-orderid-undefined/2847>\
**Category:** 개발\
**Tags:** webview, sdk\
**Created:** [3월 9, 2026, 5:54오전 UTC](https://techchat-apps-in-toss.toss.im/t/processproductgrant-orderid-undefined/2847 "2026-03-09T05:54:39Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![kimhojun8490](https://avatars.discourse-cdn.com/v4/letter/k/9fc29f/32.png) [@kimhojun8490](https://techchat-apps-in-toss.toss.im/u/kimhojun8490)\
**Post date:** [3월 9, 2026, 5:54오전 UTC](https://techchat-apps-in-toss.toss.im/t/processproductgrant-orderid-undefined/2847/1 "2026-03-09T05:54:39Z")

</div>

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

질문 / 문제 해결

### 내용을 설명해주세요

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

감사합니다.

---

<div class="post-metadata">

**Author:** ![seonjeong](https://yyz1.discourse-cdn.com/flex007/user_avatar/techchat-apps-in-toss.toss.im/seonjeong/32/594_2.png) [@seonjeong](https://techchat-apps-in-toss.toss.im/u/seonjeong)\
**Post date:** [3월 9, 2026, 6:04오전 UTC](https://techchat-apps-in-toss.toss.im/t/processproductgrant-orderid-undefined/2847/2 "2026-03-09T06:04:51Z")

</div>

@kimhojun8490 님 안녕하세요

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

---

<div class="post-metadata">

**Author:** ![kimhojun8490](https://avatars.discourse-cdn.com/v4/letter/k/9fc29f/32.png) [@kimhojun8490](https://techchat-apps-in-toss.toss.im/u/kimhojun8490)\
**Post date:** [3월 9, 2026, 6:17오전 UTC](https://techchat-apps-in-toss.toss.im/t/processproductgrant-orderid-undefined/2847/3 "2026-03-09T06:17:12Z")

</div>

네 안녕하세요

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

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

---

<div class="post-metadata">

**Author:** ![seonjeong](https://yyz1.discourse-cdn.com/flex007/user_avatar/techchat-apps-in-toss.toss.im/seonjeong/32/594_2.png) [@seonjeong](https://techchat-apps-in-toss.toss.im/u/seonjeong)\
**Post date:** [3월 9, 2026, 8:22오전 UTC](https://techchat-apps-in-toss.toss.im/t/processproductgrant-orderid-undefined/2847/4 "2026-03-09T08:22:06Z")

</div>

조금만 기다려주세요

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

불편을 드려 죄송해요

---

<div class="post-metadata">

**Author:** ![kimhojun8490](https://avatars.discourse-cdn.com/v4/letter/k/9fc29f/32.png) [@kimhojun8490](https://techchat-apps-in-toss.toss.im/u/kimhojun8490)\
**Post date:** [3월 9, 2026, 8:30오전 UTC](https://techchat-apps-in-toss.toss.im/t/processproductgrant-orderid-undefined/2847/5 "2026-03-09T08:30:32Z")

</div>

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