인앱 결제 (In-App Purchase)
애플리케이션 내에서 결제하는 방식으로, ios 환경에서는 Apple AppStore에서 등록되어있는 결제 수단으로,
android는 Google PlayStore 또는 Amazon 결제 수단으로 결제가 가능하다.
애플 정책을 확인해보면 앱 내의 모든 디지털 콘텐츠의 결제에 대해서는 인앱 결제를 통해야한다.
디지털 콘텐츠의 정의
- 실물 제품이 없고, 고객이 온라인에서 사용 가능한 서비스 및 콘텐츠
인앱 결제 vs PG 결제
온라인 컨텐츠는 인앱 결제
- 게임 앱
- e-book 앱
- 카메라 필터 앱
실물 제품은 PG 결제
- 온라인 쇼핑몰
- 식품/의류
PG 결제 수수료는 3%대
인앱 결제 기본 수수료는 30%
결제 플로우
- 결제 상품 정보 조회
- Apple Store Connect에서 직접 판매 상품을 등록 - 각각의 판매 상품마다 고유한 상품 id를 가지고 있다. 결제 이전에 상품 정보를 조회하여 해당 상품의 id가 유효한지 확인 후, 상품 가격과 같은 정보를 모달과 같은 UI로 유저에게 제공해야한다.
- 상품이 업데이트 될 일이 없는 경우, 클라이언트 사이드에 고정해도 된다. - 상품의 변경이 필요한 경우, 앱을 업데이트해야한다.
- 대부분의 경우에 상품 정보의 업데이트가 필요하므로 애플리케이션 서버를 거쳐서 상품을 제공하는 게 안정적이다.
- 결제 요청
- 유저가 구매 UI에서 결제하기를 클릭하면, 앱 클라이언트에서는 애플 서버로 결제 요청을 보내고, 결제 완료시, 해당 건에 대한 영수증을 검증해야한다.
- 영수증 검증의 경우, 로컬 머신에서 검증할 수도 있고(RN은 아직 라이브러리가 미지원이다.), AppStore API를 통해 영수증을 조회해와서 검증할 수도 있다. 기존 AppStore의 영수증 검증 API는 WDC2023에서 StoreKit2가 발표되면서 depercated 되었다.
- 구매한 상품의 적용
- 완료시 애플리케이션 서버에서 유저에게 구매한 상품을 적용해주면 된다.