본문으로 건너뛰기

인앱결제

🔔 최신화 일자: 2025-02-21

인앱결제 구매 성공, 환불 이벤트를 감지하기 위해서는 웹훅을 필수적으로 연동하여야 합니다. 웹훅은 위조된 구매 방지를 위한 검증과정까지 끝난 이후에만 전송됩니다. 검증과정에서 실패하는 경우 플레이스토어는 환불이 진행되며 앱 스토어는 정책상 고객이 직접 환불 요청을 해야합니다.

인앱결제 요청에 의해 생성된 앱 사용자의 로그 데이터는 나쵸코드 대시보드를 통해 확인 및 관리할 수 있습니다.

인앱결제 프로세스

iap_sequence_diagram

인앱결제는 Google Play StoreApple App Store를 통해 이루어지며, 구매 요청 → 결제 진행 → 검증 → 상품 지급 → 웹훅 전송의 흐름으로 진행됩니다.

1. 구매 요청

nachocode SDK를 호출하여 nachocode Server로부터 인앱 상품 정보를 반환받습니다.

상품 정보를 앱으로 전달한 후 스토어에서 상품을 불러옵니다.

디바이스의 네트워크 문제로 인해 스토어와의 연결이 원활하지 않은 경우 인앱 상품을 정상적으로 불러오지 못할 수 있습니다.

상품 로드 이후에 유저가 이탈한 경우 최종 결제 상태는 결제 이탈입니다.

2. 결제

앱 사용자가 상품 구매 요청을 한 후 결제 프로세스가 진행되는 단계입니다.

앱 사용자의 결제 수단 혹은 네트워크 에러로 인해 결제가 실패할 수 있습니다.

결제가 성공할 경우 nachocode Server로 구매에 대한 검증 요청을 수행합니다.

네트워크 에러 혹은 검증 요청이 정상적으로 수행되지 않았을 경우 검증 요청은 앱의 백그라운드 환경에서 재시도 됩니다.

3. 검증

앱 사용자가 구매한 상품이 유효한지, 위조된 구매인지 아닌지 서버에서 검증을 수행하는 단계입니다.

플레이 스토어의 경우 검증 과정에서 실패할 경우 환불이 진행됩니다.

앱 스토어의 경우 정책상 개발자가 환불이 불가능합니다. nachocode 대시보드에서 iOS의 결제 상태가 검증 실패일 경우 아래 에러 케이스를 확인하여 조치 해주세요.

웹훅 전송은 검증이 완료된 건에 대해서만 전송됩니다.

4. 웹훅 전송

인앱결제 설정 시 구매 이벤트 웹훅으로 입력한 서버 URL한 웹훅을 전송합니다.

웹훅 전송은 실패할 수 있으며 nachocode 대시보드에서 재전송 할 수 있습니다. 대시보드 내 인앱결제 > 웹훅 로그에 접속해 요청/응답 본문을 확인할 수 있습니다.

링크를 통해 웹훅 정책을 확인해보세요.

5. 상품 지급

웹훅을 정상적으로 수신받을 경우 구매가 완료된 유저에게 상품 권한을 부여하여야 합니다.

이 때 구매를 고유하게 식별하기 위해서는 이곳에 명세된 필드를 고유 식별자로 사용하여야 합니다.
해당 식별자는 환불 시에도 동일하게 사용됩니다. 또한 웹훅 결과에 따른 클라이언트로의 응답반환은 동기적으로 이루어집니다.

6. 클라이언트 응답 처리

인앱결제 응답에 따른 클라이언트 처리가 필요합니다. 웹훅 수신이 성공적으로 수신되었는지 서버로부터 확인할 수 있습니다.

링크를 통해 인앱결제 SDK 호출 이후 핸들링 예시를 확인할 수 있습니다.


인앱결제 에러 케이스

안드로이드 & 검증 서버 Android

안드로이드 인앱결제 응답 코드 문서는 다음 링크 에서 확인할 수 있습니다.

샌드박스 혹은 운영환경에서 아래에 명세되지 않은 에러 코드를 수신받을 경우 나쵸코드로 문의해주세요.

CodeMessageDescriptionSolution
ERR-NNA-ILA-01Failed to connect play store. Invalid response code received.(Code: {code})구글 플레이 스토어 연결에 실패한 경우앱 사용자가 플레이스토어에 로그인 돼있는지 확인
ERR-NNA-ILA-11Failed to get product detail. Invalid response code received. (Code: {code})플레이 스토어로부터 상품 불러오기가 실패한 경우앱 사용자에게 재시도 요청
ERR-NNA-ILA-12Product not found. Check your product id and product type.nachocode에 등록한 상품이 스토어에 등록돼있지 않은 경우플레이스토어에 인앱 상품 등록
ERR-NNA-ILA-21Failed to purchase. Invalid billing response code received. (Code: {code}).결제code 확인 후 재시도 요청
ERR-NNA-ILA-22User canceled the purchase.유저가 결제를 취소한 경우n/a
ERR-NNA-ILA-23User already owned the product.유저가 이미 인앱 상품을 보유중인 경우상품 숨김 혹은 보유 중 처리
ERR-NNA-IMA-61Purchase state is not valid.유저의 결제 요청이 알 수 없는 이유로 실패한 경우앱 사용자에 재시도 요청
ERR-AB-PHS-01Invalid service key type.나쵸코드에 등록한 안드로이드 서비스 키의 올바르지 않은 경우올바른 정보의 서비스 키 파일로 수정

iOS & 검증 서버 iOS

샌드박스 혹은 운영환경에서 아래에 명세되지 않은 에러 코드를 수신받을 경우 나쵸코드로 문의해주세요.

CodeMessageDescriptionSolution
ERR-NNI-ILA-22User cancelled the purchase.사용자가 결제 진행 중 취소한 경우n/a
ERR-NNI-ILA-21Purchase failed due to an error.결제가 실패한 경우앱 사용자의 결제 환경 및 정보를 확인
ERR-NNI-ILA-12Product not found.요청한 상품이 App Store에 존재하지 않는 경우앱 스토어에 인앱 상품 등록
ERR-AB-ASS-05Something went wrong. Please try again later.결제된 트랜잭션 정보를 불러 올 수 없는 경우1. SDK 샌드박스 설정값 확인 2. 대시보드에 등록된 인앱결제 iOS 관련 설정 확인
ERR-AB-ASS-0eThe app's iOS certificate information is incorrect.iOS 빌드시 설정한 정보가 유효하지 않음대시보드에 등록된 iOS 관련 설정 확인

추가 정보

인앱결제에 대한 추가 문의사항은 support@nachocode.io로 연락주세요.