In-App Purchase Verification (구매 확인 상)

MAT(MobileAppTracking)™의 수익 보고 기능에는 모든 인앱 구매를 개별적으로 확인하는 고급 영수증 확인 메커니즘이 포함되어 있습니다. 이 기능은 사기성 구매로 인한 수익을 제거하기 때문에 여러분은 당사의 대시보드에서 가장 정확한 수익을 확인할 수 있습니다. Apple iTunes 또는 Google Play를 통한 인앱 구매는 MAT 플랫폼에서 이벤트로 측정됩니다. 인앱 구매 확인 프로세스는 인앱 구매에 대한 영수증 ID(Android)/영수증 데이터(iOS)를 수집하는 SDK에 의해 작동하며 SDK는 이러한 인앱 구매 정보를 대기 중으로 설정한 구매 확인 상태와 함께 당사 플랫폼에 전달합니다. 인앱 구매가 확인되었는지 파악하기 위해 플랫폼에서 스토어 API를 검색합니다. 승인된 이벤트와 수익은 이후에 증가되기 때문에 확인된 인앱 구매만 측정됩니다.

확인 프로세스

확인 프로세스는 이벤트를 측정하고 애트리뷰션된 이후에 발생하는 별도의 프로세스입니다. 따라서 확인 프로세스로 인해 측정 및 애트리뷰션 프로세스가 지연될 우려는 없습니다. 당사의 SDK는 Apple iTunes 및 Google Play에서 영수증 ID(Android)/영수증 데이터(iOS) 수집을 지원하도록 설정되어 있기 때문에 설정이 구현되면 인앱 구매 이벤트를 측정할 때 이러한 값이 포함됩니다. 영수증 ID(Android)/영수증 데이터(iOS)를 포함한 구매에 대해 이벤트를 측정하도록 요청하면 플랫폼이 Google Play 또는 Apple iTunes에서 자동으로 확인을 시도합니다.

In_App_Purchase_Verification_1_Verification_Process_kzc
플랫폼에서 영수증 ID로 이벤트를 측정하면 이벤트 구매 확인 상태가 “보류 중”으로 설정됩니다. 이벤트를 측정한 지 60분이 지나면 확인 프로세스에 대기하게 됩니다. 확인 프로세스는 영수증 ID(Android)/영수증 데이터(iOS)를 사용하여 Google Play나 Apple iTunes API를 검색한 다음 구매의 성공 여부를 확인합니다.

구매가 성공하면 이벤트 구매 확인 상태가 “확인됨”으로 설정되며 이에 따라 누적된 수익도 증가합니다. 구매가 성공하지 못하면 이벤트 구매 확인 상태가 “실패”로 설정되며 수익이 증가하지 않습니다. 이 프로세스는 영수증 ID를 기반으로 중복 구매를 확인하고 차단합니다.

참고: iOS 앱에 자동 갱신되는 디지털 구독을 제공하는 경우 MAT 플랫폼에 iTunes 연결 공유 암호를 제공하여 확인을 위한 MAT를 설정해야 합니다. 자동 갱신 구독을 통해 사용자는 인앱 콘텐츠를 구매할 수 있으며 사용자가 구독을 취소하지 않으면 구독 기간 종료 시점에 자동 갱신됩니다.

MAT iOS SDK에서 iTunes 인앱 구매

v2.5부터 MAT iOS SDK는 오버로드된 measureAction 방법을 제공하여 인앱 구매를 할 때 iTunes로부터 받은 거래 영수증을 포함시킬 수 있습니다. 다음 코드 스니펫은 IAP(인앱 구매) 거래 영수증이 포함된 샘플 measureAction 호출입니다.

[MobileAppTracker measureAction:eventName
                     eventItems:EventItems
                    referenceId:referenceId
                  revenueAmount:revenue
                   currencyCode:currencyCode
               transactionState:transactionState
                        receipt:receiptData
];

일반 IAP 이벤트 측정을 위한 세부적인 코드 샘플이 여기 표시될 수 있습니다: Apple iTunes 인앱 구매를 이벤트로 추적합니다.   iOS 인앱 구매를 확인할 때, 확인된 구매는 구매 확인 코드가 0입니다. 하지만 아래 표에 표시된 대로, 구매가 확인되지 않은 경우 그 이유는 여러 가지일 수 있습니다.

iOS 코드 구매 확인 상태 설명 확인된 수익 전환 상태
-3 잘못된 번들 유효한 영수증이지만 다른 사이트의 번들 ID가 포함되어 있습니다. 아니요 거부됨
-2 알 수 없는 오류 시도했지만 오류가 발생합니다. 아니요 거부됨
-1 영수증 없음 확인할 영수증이 없습니다. 아니요 승인됨
0 확인됨 이 영수증을 성공적으로 확인했습니다. 승인됨
21000 JSON 개체를 읽을 수 없음 제공한 JSON 개체를 앱 스토어에서 읽을 수 없습니다. 아니요 거부됨
21002 잘못된 형식의 영수증 데이터 영수증 데이터 속성의 데이터가 잘못된 형식으로 지정되었습니다. 아니요 거부됨
21003 확인 실패 영수증을 인증할 수 없습니다. 아니요 거부됨
21004 잘못된 공유 암호 입력한 공유 암호가 계정의 파일에 있는 공유 암호와 일치하지 않습니다. 아니요 거부됨
21005 영수증 서버를 사용할 수 없음 영수증 서버를 현재 사용할 수 없습니다. 아니요 거부됨
21006 IAP 구독 만료됨 이 영수증은 유효하지만 구독이 만료되었습니다. 이 상태 코드가 서버에 반환되면 영수증 데이터 역시 디코딩되어 응답의 일부로 반환됩니다. 아니요 거부됨
21007 샌드박스 영수증을 프로덕션에 전송 이 영수증은 샌드박스 영수증이지만 확인을 위해 프로덕션 서비스에 전송되었습니다. 아니요 거부됨
21008 프로덕션 영수증을 샌드박스에 전송 이 영수증은 프로덕션 영수증이지만 확인을 위해 샌드박스 서비스에 전송되었습니다. 아니요 거부됨

 

Android SDK에서 Google Play 인앱 구매

Google Play에서 인앱 구매 이벤트를 측정하려면 Android SDK 2.6 이상을 사용해야 합니다. Google Play의 인앱 결제 시스템과 이벤트를 결합하려면 다음 지침에 따라 결제 시스템에 서비스를 구현해야 합니다. 다음 코드 스니펫은 영수증 ID(구매 데이터)가 포함된 샘플 measureAction 호출입니다. onActivityResult 방법에서 ‘BUY_INTENT’ 인텐트를 수신한 다음 measureAction 기능을 호출하여 purchaseData 및 dataSignature 값을 파싱합니다.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1001) {          
        int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
        String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
        String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
 
        if (resultCode == RESULT_OK) {
           YourClass.mobileAppTracker.measureAction("purchase", 0.99, "USD", "ref_id_here", purchaseData, dataSignature);
        }
    }
}

중요: IAP 영수증 데이터를 사용하여 인앱 구매를 확인할 수 있도록 MAT계정에서 Google 공개 키를 설정해야 합니다. “”애플리케이션 보호” 섹션에 있는 Android 개발자 설명서 안내를 따라 Google 공개 키를 찾을 수 있습니다. Google 공개 키가 준비되면 이 값을 모바일 앱의 세부정보 페이지에 붙여넣습니다 (모바일 앱 > 내 모바일 앱 > 세부정보 수정 > Google 공개 키).

IAP 영수증 데이터를 전송함으로써 플랫폼에서 이벤트에 대한 구매 확인을 수행합니다.

Android 인앱 구매를 확인할 때, 확인된 구매는 구매 확인 코드가 0입니다. Android의 기타 상태 코드의 경우 몇 가지 다른 오류가 발생할 수 있습니다.

Android 코드 구매 확인 상태 설명 확인된 수익 전환 상태
-3 OpenSSL 오류 OpenSSL 호출 오류입니다. 아니요 거부됨
-2 알 수 없는 오류 시도했지만 오류가 발생합니다. 아니요 거부됨
-1 영수증 없음 확인할 영수증이 없습니다. 아니요 승인됨
0 확인됨 이 영수증을 성공적으로 확인했습니다. 승인됨
1 확인 실패 데이터나 서명을 확인할 수 없습니다. 아니요 거부됨
2 잘못된 암호 키 암호 키 형식이 잘못 지정되었습니다. 아니요 거부됨