Appearance
createOneTimePurchaseOrder
인앱 결제 결제창을 띄우고, 사용자가 결제를 진행해요. 만약 결제 중에 에러가 발생하면 에러 유형에 따라 에러 페이지로 이동해요.
시그니처
typescript
function createOneTimePurchaseOrder(params: IapCreateOneTimePurchaseOrderOptions): Promise<IapCreateOneTimePurchaseOrderResult>;
파라미터
- params필수 · IapCreateOneTimePurchaseOrderOptions
인앱 결제 결제창을 띄울 때 필요한 옵션이에요.
- params.productId필수 · string
주문할 상품의 Id예요.
- params.productId필수 · string
반환 값
- Promise<IapCreateOneTimePurchaseOrderResult>
결제 성공 여부를 포함한 결과를 반환해요.
에러코드
- INVALID_PRODUCT_ID
유효하지 않은 상품 ID이거나, 해당 상품이 존재하지 않을 때 발생해요.
PAYMENT_PENDING사용자가 요청한 결제가 아직 승인을 기다리고 있을 때 발생해요.
NETWORK_ERROR서버 내부 문제로 요청을 처리할 수 없을 때 발생해요.
INVALID_USER_ENVIRONMENT특정 기기, 계정 또는 설정 환경에서 구매할 수 없는 상품일 때 발생해요.
ITEM_ALREADY_OWNED사용자가 이미 구매한 상품을 다시 구매하려고 할 때 발생해요.
APP_MARKET_VERIFICATION_FAILED사용자가 결제를 완료했지만, 앱스토어에서 사용자 정보 검증에 실패했을 때 발생해요. 사용자가 앱스토어에 문의해서 환불을 요청해야해요.
TOSS_SERVER_VERIFICATION_FAILED사용자가 결제를 완료했지만, 서버 전송에 실패해서 결제 정보를 저장할 수 없을 때 발생해요.
INTERNAL_ERROR서버 내부 문제로 요청을 처리할 수 없을 때 발생해요.
KOREAN_ACCOUNT_ONLYiOS 환경에서 사용자의 계정이 한국 계정이 아닐 때 발생해요.
USER_CANCELED사용자가 결제를 완료하지 않고 주문서 페이지를 이탈했을 때 발생해요.
예제
특정 인앱결제 주문서 페이지로 이동하기
tsx
import { Button } from 'react-native';
import { IAP } from '@apps-in-toss/framework';
interface Props {
productId: string;
}
function IapCreateOneTimePurchaseOrderButton({ productId }: Props) {
const handleClick = async () => {
try {
await IAP.createOneTimePurchaseOrder({
productId,
});
} catch (error) {
console.error('인앱결제에 실패했어요:', error);
}
};
return <Button title="구매하기" onPress={handleClick} />;
}