인앱 구매 상품 만들기
다음 가이드에 따라 인앱 구매 상품과 구독을 만들 수 있어요.
- App Store Connect에서 인앱 구매 만들기유료 앱 계약에 동의하고 세금 정보를 입력한 후 은행 계좌도 추가해야 해요. 이 작업은 App Store Connect의 계약 대시보드에서 할 수 있어요.
- Google Play Console에서 인앱 상품 만들기
- Google Developer Console에서 구독 만들기
개발자 계정에서 결제를 활성화하려면 추가 정보를 입력하라는 요청을 받을 수 있어요.
각 플랫폼에서 인앱 구매 상품을 만들어야 하므로, 두 플랫폼에서 동일한 상품 ID를 사용하세요. 그러면 JavaScript를 통해 인앱 구매를 더 쉽게 실행할 수 있어요(아래 참조).
인앱 구매 실행하기
먼저 현재 사용자가 앱을 사용 중인지 확인하는 것이 좋아요. 일반 브라우저 사용자는 인앱 구매를 할 수 없기 때문이에요.
executeWhenAppReady() 함수를 확인해 보세요. 앱 도우미 스크립트예요.. 이 함수는 앱이 준비되기 전이나 웹사이트가 일반 브라우저에서 로드되었을 때 웹사이트에서 앱과 상호작용을 시도하지 않도록 해줘요(ReferenceError, 함수가 정의되지 않음). 그런 다음 사용자가 앱을 이용 중이라면 아래 JavaScript를 사용해 인앱 구매를 실행할 수 있어요.
<script>
try {
// productId is the ID you specified for the in app purchase product in App Store Connect and the Google Play Console
// consumable is a boolean value that indicates whether the product can be purchased multiple times (consumable==true) or just once (consumable==false)
// subscriptions should use consumable==false
// userIdentifier can be any string that identifies the current user.
// The userIdentifier will be sent to your server's unlocking endpoint if the purchase is successful (so you can then unlock the product that was bought on your server)
resultingStatus = await makeInAppPurchase(productId, consumable, userIdentifier)["status"];
switch (resultingStatus) {
case "failed":
// The purchase failed, for example due to an error while verifying the purchase
break;
case "canceled":
// The user canceled the purchase, for example by pressing the back button
break;
case "completed":
// The purchase was successful
break;
}
} catch (e) {
// Some kind of error occurred, e.g. the given productId is invalid
}
</script>
함수의 완료를 기다리는 동안 사용자에게는 앱에서 제공하는 화면이 표시돼요. 구매가 완료되면 JavaScript 함수가 결과를 반환하므로, 필요에 따라 페이지를 새로고침하거나 UI를 업데이트할 수 있어요. 사용자가 네이티브 앱 화면을 닫으면 웹사이트로 돌아가요.
사용자가 네이티브 화면에서 구매 절차를 진행하는 동안 인앱 구매 확인 URL로 요청이 전송돼요.

인앱 구매 복원하기
executeWhenAppReady() 함수를 확인해 보세요. 앱 도우미 스크립트예요.. 이 함수는 앱이 준비되기 전이나 웹사이트가 일반 브라우저에서 로드되었을 때 웹사이트에서 앱과 상호작용을 시도하지 않도록 해줘요(ReferenceError, 함수가 정의되지 않음). 사용자에게 "구매 복원" 옵션을 제공할 수도 있어요.
<script>
restorePurchases()
</script>
일반적으로 사용자가 앱을 삭제한 후 새 기기에 다시 설치했을 때 구매 복원이 필요해요. 이때 이전 구매 내역을 복원할 수 있어요. 사용자의 정보와 구매 내역은 이미 사용자의 기기와 독립적인 서버에 저장되어 있어요.
다른 상황에서도 유용할 수 있으므로 구매 복원 기능을 연동할 수 있는 방법을 제공하고 있어요. 예를 들어 사용자의 구매를 확인하고 잠금 해제하는 과정에서 문제가 발생했을 때 도움이 될 수 있어요.
다음 단계
사용자가 앱에서 구매를 완료한 후에는 서버에서 구매를 확인하고, 확인에 성공하면 서버에서 구매한 콘텐츠를 잠금 해제해야 해요.
자세한 내용과 가이드는 인앱 구매 설정 에서 확인해 주세요.