[인앱결제] 구독 할인 offer의 displayAmount만 VAT 미포함(공급가)으로 내려오는 현상

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

질문 / 문제 해결

내용을 설명해주세요

환경
@apps-in-toss/web-framework ^2.4.6 (WebView 미니앱)
상품: 자동 갱신 구독 멤버십, NEW_SUBSCRIPTION 할인 offer 적용
가격 표시는 IAP.getProductItemList()가 내려주는 displayAmount를 가공 없이 그대로 사용 (부가세 연산 없음)
현상
getProductItemList()의 displayAmount를 화면에 그대로 출력하는데, 다른 상품/정가는 결제창 금액과 정확히 일치하지만 구독 할인가(offer)만 어긋납니다.

항목 화면 표시 (displayAmount) 결제창 청구 일치
소모성(열람권) VAT 포함 동일 :white_check_mark:
비소모성(평생) VAT 포함 동일 :white_check_mark:
구독 정가 (product.displayAmount) VAT 포함 동일 :white_check_mark:
구독 할인가 (offer.displayAmount) 4,450원 4,895원 :cross_mark:
→ 할인가만 공급가(VAT 미포함)로 보이고, 결제창은 판매가(= 4,450 × 1.1 = 4,895원)로 청구됩니다.

코드
정가·할인가를 동일한 방식으로 추출/출력합니다.

// getProductItemList() 응답에서 추출
const p = catalog[MEMBERSHIP_SKU];
const offer =
p.offers?.find(o => o.type === “NEW_SUBSCRIPTION” && o.displayAmount) ??
p.offers?.find(o => o.type === “RETURNING” && o.displayAmount);

const listAmount = p.displayAmount; // 정가 → VAT 포함으로 정상
const amount = offer?.displayAmount; // 할인가 → 공급가로 보임 (문제)
// 화면 출력 — 문자열 그대로 렌더 (가공 없음)
<span style={{ textDecoration: “line-through” }}>{listAmount} {/* 정가 /}
{amount} {/
할인가 */}
// 결제 — 금액 미전달, offerId만 전달 (청구액은 SDK가 계산)
IAP.createSubscriptionPurchaseOrder({
options: { sku: MEMBERSHIP_SKU, offerId, processProductGrant: () => true },
onEvent, onError,
});

질문

getProductItemList() 응답에서 할인 offer의 displayAmount도 상품 정가(product.displayAmount)와 동일하게 VAT 포함 판매가로 내려오는 것이 맞나요? 동일 코드 경로인데 정가는 정상이고 offer만 공급가로 보입니다.
만약 offer의 displayAmount가 공급가로 내려오는 것이 의도된 동작이라면, 클라이언트에서 할인가에만 부가세 10%를 더해 표기해야 하나요? 권장 방식이 궁금합니다.
(결제 금액은 클라이언트에서 전달하지 않고 offerId만 넘기므로, 화면 표기만 맞추면 되는지 확인하고 싶습니다.)

이미지 첨부

안녕하세요 :slight_smile:
요거 한번 확인해보겠습니다!

@Dylan 구독결제에서 processProductGrant 호출하는 문제는 해결됐습니다. 혹시 공급가액으로 나오는 부분은 혹시 확인되셨나요?

@jh0518 내부적으로 확인중이며, 조치되는대로 공유드리겠습니다! 불편을 드려 죄송해요 :man_bowing: