Skip to content

createOneTimePurchaseOrder

인앱 결제 결제창을 띄우고, 사용자가 결제를 진행해요. 만약 결제 중에 에러가 발생하면 에러 유형에 따라 에러 페이지로 이동해요.

시그니처

typescript
function createOneTimePurchaseOrder(params: IapCreateOneTimePurchaseOrderOptions): Promise<IapCreateOneTimePurchaseOrderResult>;

파라미터

  • params필수 · IapCreateOneTimePurchaseOrderOptions

    인앱 결제 결제창을 띄울 때 필요한 옵션이에요.

      • params.productId필수 · string

        주문할 상품의 Id예요.

반환 값

  • 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_ONLY

    iOS 환경에서 사용자의 계정이 한국 계정이 아닐 때 발생해요.


    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} />;
 }