플러팅 AI/React-native

오류 메시지: purchase is not suitable to be purchased RN.IAP android

Solo.dev 2025. 1. 14. 22:50

문제와 해결 요약

문제

  • 오류 메시지: purchase is not suitable to be purchased
  • 발생 상황:
    1. RNIap.finishTransaction 호출 시, purchase 객체가 적절하지 않거나 유효하지 않음.
    2. 이전에 완료되지 않은 트랜잭션이 존재하거나, purchaseToken이 없을 때 발생.

해결 방법

  1. getAvailablePurchases로 최신 구매 정보 가져오기:
    • RNIap.getAvailablePurchases()를 호출하여 사용 가능한 모든 구매 데이터를 가져옵니다.
    • 필요한 구매를 productId로 필터링하여 적절한 purchase 객체를 확인.
  2. 트랜잭션 완료 처리 개선:
    • getAvailablePurchases로 가져온 데이터를 사용해 finishTransaction 호출.
  3. 디버깅 및 상태 확인:
    • 구매 데이터(purchase)와 트랜잭션 상태를 로깅.
    • purchaseStateAndroid와 같은 속성을 확인하여 트랜잭션 상태를 명확히.

적용된 코드 변경 사항

  1. getAvailablePurchases 추가:
    • 트랜잭션 완료 호출 전에 사용 가능한 구매 데이터를 확인.
  2. 에러 메시지와 디버깅 정보 강화:
    • 오류가 발생한 경우 더 상세한 정보를 제공.

주요 코드 스니펫

const availablePurchases = await RNIap.getAvailablePurchases();
 
const updatedPurchase = availablePurchases.find( (p) => p.productId === productId ); if (!updatedPurchase) {
 
Alert.alert('구매 실패', '업데이트된 구매 데이터를 찾을 수 없습니다.');
return false; }
await RNIap.finishTransaction({ purchase: updatedPurchase, isConsumable: false, // 구독은 소비되지 않음 });

 


결과

  • 문제는 이전에 완료되지 않은 트랜잭션이나 유효하지 않은 구매 데이터를 처리하지 않아서 발생.
  • getAvailablePurchases로 데이터를 갱신한 후 finishTransaction을 호출하니 문제 해결됨.

추가적으로 궁금한 점이 있거나 다른 도움 필요한 사항이 있으면 말씀해주세요! 😊