본문으로 건너뛰기

IAP.getProductItemList

인앱결제로 구매할 수 있는 상품 목록을 가져옵니다. 상품 목록 화면에 진입할 때 호출하며, 소모품·비소모품·구독 세 가지 타입을 포함한 IapProductListItem 배열을 반환합니다.

시그니처

getProductItemListIAP 네임스페이스 객체의 멤버로 노출됩니다.

import { IAP } from '@apps-in-toss/web-framework';

declare const IAP: {
getProductItemList(): Promise<{
products: IapProductListItem[];
}>;
// ...overview 참고
};

파라미터

없음.

반환값

Promise<{ products: IapProductListItem[] }> — 상품 목록 객체.

IapProductListItemConsumableProductListItem | NonConsumableProductListItem | SubscriptionProductListItem 유니언 타입입니다.

공통 필드 (BasicProductListItem)

필드타입설명
skustring상품 고유 ID.
displayNamestring화면에 표시할 상품 이름.
displayAmountstring통화 단위 포함 가격 문자열 (예: 1,000원).
iconUrlstring상품 아이콘 URL.
descriptionstring상품 설명.

타입별 추가 필드

타입추가 필드
CONSUMABLEtype: 'CONSUMABLE'
NON_CONSUMABLEtype: 'NON_CONSUMABLE'
SUBSCRIPTIONtype: 'SUBSCRIPTION', renewalCycle: 'WEEKLY' | 'MONTHLY' | 'YEARLY', offers?: Offer[]

앱 버전이 최소 지원 버전(Android 5.219.0 / iOS 5.219.0)보다 낮으면 undefined를 반환할 수 있습니다.

권한

권한이 필요하지 않습니다 — IAP 네임스페이스는 별도의 PermissionName에 바인딩되지 않습니다.

예제

최소 예제

import { IAP } from '@apps-in-toss/web-framework';

const result = await IAP.getProductItemList();
const products = result?.products ?? [];
console.log(products);

실전 예제 — 타입별 렌더링

import type { IapProductListItem } from '@apps-in-toss/web-framework';
import { IAP } from '@apps-in-toss/web-framework';
import { useEffect, useState } from 'react';

function ProductList() {
const [products, setProducts] = useState<IapProductListItem[]>([]);

useEffect(() => {
IAP.getProductItemList().then((result) => {
setProducts(result?.products ?? []);
});
}, []);

return (
<ul>
{products.map((product) => (
<li key={product.sku}>
<span>{product.displayName}</span>
<span>{product.displayAmount}</span>
{product.type === 'SUBSCRIPTION' && (
<span>갱신 주기: {product.renewalCycle}</span>
)}
</li>
))}
</ul>
);
}

직접 실행해 보기

sdk-example의 IAP 페이지에서 getProductItemList를 실행해 상품 목록을 확인할 수 있습니다.

sdk-example에서 실행해 보기

관련 API

관련 가이드

외부 참조