인앱결재 OrderId 체크 및 에러관련

안녕하세요

이번에 sdk 업데이트로 인해서 결제가 “특정”실패하는 경우에도 orderId를 내린다고 했는데, 코드상에서 상황을 여쭤보게 됩니다.

일단 프론트 sdk쪽은 다음과 같은데,

try {
        const result = await IAP.createOneTimePurchaseOrder({
         productId,
       });

        alert("[결제] 호출 결과:" + result);

    }catch (err) {
        alert("결제 실패. 다시 시도해주세요." + err);
        sendMessageRef.current("MessageManager", "ReceiveMessage", JSON.stringify({ name: "AckPurchase", data: { error: err } }));
    }

일단 createOneTimePurchaseOrder가 리턴하는 다음에서는 에러코드 부분이 없는것 같고,

interface IapCreateOneTimePurchaseOrderResult {
  orderId: string;
  displayName: string;
  displayAmount: string;
  amount: number;
  currency: string;
  fraction: number;
  miniAppIconUrl: string | null;
}

메뉴얼에 명시된 err 코드 및 실패시 orderId 내리는 부분은 catch부분에서 얻어와야하는것인가요,

아니면 IapCreateOneTimePurchaseOrderResult 여기에 별도로 추가되는게 있는것인가요?

제가 일부러 테스트를 실패해보려해도, 실패케이스를 만들기가 어려운 상황이고,

catch쪽의 err는 alert으로 찍어보면 단순히 “사용자가 결제를 취소했습니다” ←- 그냥 Cancel한 케이스

이런 string일 뿐이라서

조금 더 상세한 대응 가이드가 필요합니다.

  1. 두번째로 orderId를 가지고 서버에서 체크하는 부분을 만들려고 할 때는 저 createOneTimePurchaseOrder 이후 무조건 진행하면 되는것 같긴한데, 사실상 저기로 들어오면 pending 아니면 성공케이스라서 어차피 지급해야하는 케이스만 남아있을 것 같긴한데.. result에서 위에 명시된 에러코드로 내리는 케이스에 대한 것을 알려주시면 감사하겠습니다.(result 데이터 예제라도)
1개의 좋아요

안녕하세요, 지난주 문의사항이긴한데, 바쁘신것 같아서, 다시한번 댓글을 남깁니다

orderId에 따른 서버와의 설계를 위해서, 위의 사례가 꼭 필요하긴한데요 (실패 테스트를 만들기가 어렵습니다)

orderId가 실패일때 어떤쪽으로 오는지 가이드를 부탁드립니다..

catch 쪽에서 잡을 수 있는 방법이 있는지 혹은 result에서 무조건 orderId 가 있으면 받아서 주기적 폴링으로 처리해야하는것인지 가이드가 필요합니다

try {
        const result = await IAP.createOneTimePurchaseOrder({
         productId,
       });
        
       // 여기서의 error라면 result의 어느 프로퍼티에????

        alert("[결제] 호출 결과:" + result);

    }catch (err) {
        alert("결제 실패. 다시 시도해주세요." + err);
        // 여기서 OrderID 처리??
    }

지금 인앱관련 기능이나 복구 관련 SDK가 9월중에 공개예정인것 같아서,

차라리 그 부분을 기다리는게 나을까요?

금일 중 가이드 보완해서 전달드릴게요.

혼란을 드려 죄송합니다 :sob:

1개의 좋아요

@jhhwang 님 안녕하세요

너무 늦게 답변드려 죄송합니다.

인앱결제 관련하여 개발자센터 가이드를 업데이트해두었어요.

확인 부탁드립니다.