방법: IAP 인증 엔드포인트 구성하기

업데이트 날짜 13. 6월 2025 작성자 Jan Bunk


먼저 대시보드에서 확인 URL을 설정하세요. 앱은 설정한 URL로 다음과 같은 JSON 객체를 POST해요.

Google Play 구매 JSON 예시:


{
    // the userIdentifier you passed via Javascript
    "userIdentifier": "user123",
    // your app's ID (only relevant if you have multiple apps using the same verification endpoint)
    "appId": 1234,
    "purchaseDetails": {
        "verificationData": {
          "serverVerificationData": "abcdefghijklmnopqrstuvwx.AO-J1Oyabcdefghijklmnopqrstuvwxyz123456789_-abcdefghijklmnopqrstuvwxyz123456789_-abcdefghijklmnopq",
          // the "autoRenewing" property in localVerificationData is only sent if the product is a subscription
          "localVerificationData": "{\"orderId\":\"GPA.1234-1234-1234-12345\",\"packageName\":\"example.package.name\",\"productId\":\"exampleProductId\",\"purchaseTime\":1643389081662,\"purchaseState\":0,\"purchaseToken\":\"abcdefghijklmnopqrstuvwx.AO-J1Oyabcdefghijklmnopqrstuvwxyz123456789_-abcdefghijklmnopqrstuvwxyz123456789_-abcdefghijklmnopq\",\"autoRenewing\":true,\"acknowledged\":false}",
          "source": "google_play"
        },
        "productID": "consumable",
        "purchaseID": "GPA.1234-1234-1234-12345",
        // can also be "restored" if triggered by a call to restorePurchases()
        "status": "purchased",
        "transactionDate": "1643389081662"
      }
    }
}
    

App Store 구매 JSON 예시:


{
  // your app's ID (only relevant if you have multiple apps using the same verification endpoint)
  "appId": 1234,
  // the userIdentifier you passed via Javascript
  "userIdentifier": "user123",
  "purchaseDetails": {
    "verificationData": {
      "serverVerificationData": "veryLongBase64String",
      "localVerificationData": "veryLongBase64String",
      "source": "app_store"
    },
    "productID": "consumable",
    "purchaseID": "123",
    // can also be "restored" if triggered by a call to restorePurchases()
    "status": "purchased",
    "transactionDate": "1644239123000"
  }
}
    

그런 다음 source에 따라 Google Play에서 구매를 확인하거나 (if source==google_play) App Store에서 구매를 확인해야 해요. (if source==app_store).

그런 다음 구매가 유효하면 사용자에게 구매한 제품에 대한 접근 권한을 부여해야 해요.

제품의 잠금을 해제할 사용자를 결정하려면 주로 userIdentifier(웹사이트의 JavaScript에서 makeInAppPurchase를 호출할 때 전달한 문자열)가 필요하고, 사용자를 위해 잠금 해제할 제품을 결정하려면 productID가 필요해요.

인앱 구매, 특히 구독이 이루어진 후에는 해당 구매에 발생하는 모든 변경 사항을 수신해야 해요. 예를 들어 구독이 취소되거나 인앱 구매가 환불되면 알림을 받게 되며, 이에 따라 사용자가 구독을 통해 받던 혜택을 철회할 수 있어요.

마지막으로 앱에서 구매를 확정할 수 있도록 200 상태 코드와 다음 JSON을 반환하세요.


{
    "complete_purchase": true
}
    

또는 구매가 유효하지 않다면 200 상태 코드와 다음 JSON을 반환하세요. 이 경우 앱은 구매를 확정하지 않아요.


{
    "complete_purchase": false
}
    

200 상태 코드를 반환하지 않으면 앱에서 요청을 다시 시도해요. 구매가 확인되었다는 응답을 앱에서 받지 못하면 구매를 확정하지 않아요. 이 경우 실제로 유효한 구매였더라도 3일 후 자동으로 환불돼요.

인앱 구매 개요