리소스: ProductPurchase
ProductPurchase 리소스는 사용자의 인앱 상품 구매 상태를 나타냅니다.
| JSON 표현 |
|---|
{ "kind": string, "purchaseTimeMillis": string, "purchaseState": integer, "consumptionState": integer, "developerPayload": string, "orderId": string, "purchaseType": integer, "acknowledgementState": integer, "purchaseToken": string, "productId": string, "quantity": integer, "obfuscatedExternalAccountId": string, "obfuscatedExternalProfileId": string, "regionCode": string, "refundableQuantity": integer } |
| 필드 | |
|---|---|
kind |
이 종류는 androidpublisher 서비스의 inappPurchase 객체를 나타냅니다. |
purchaseTimeMillis |
제품이 구매된 시간을 에포크 기준 시간 (1970년 1월 1일) 이후 밀리초 단위로 나타낸 것입니다. |
purchaseState |
주문의 구매 상태입니다. 가능한 값은 0입니다. 구매함 1. 취소됨 2. 대기 중 |
consumptionState |
인앱 상품의 소비 상태입니다. 가능한 값은 0입니다. 아직 소비되지 않음 1. 소비함 |
developerPayload |
주문에 관한 추가 정보가 포함된 개발자 지정 문자열입니다. |
orderId |
인앱 상품 구매와 연결된 주문 ID입니다. |
purchaseType |
인앱 상품 구매 유형입니다. 이 필드는 이 구매가 표준 인앱 결제 절차를 사용하여 이루어지지 않은 경우에만 설정됩니다. 가능한 값은 0입니다. 테스트 (라이선스 테스트 계정으로 구매) 1. 프로모션 (프로모션 코드를 사용하여 구매). Play Points 구매는 포함되지 않습니다. 2. 리워드 (지불하는 대신 동영상 광고 시청) |
acknowledgementState |
인앱 상품의 확인 상태입니다. 가능한 값은 0입니다. 아직 확인되지 않음 1. 확인됨 |
purchaseToken |
이 구매를 식별하기 위해 생성된 구매 토큰입니다. 없을 수도 있습니다. |
productId |
인앱 상품 SKU입니다. 없을 수도 있습니다. |
quantity |
인앱 상품 구매와 관련된 수량입니다. 없는 경우 수량은 1입니다. |
obfuscatedExternalAccountId |
앱에서 사용자 계정과 고유하게 연결된 ID의 난독화된 버전입니다. 구매 시 https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid를 사용하여 지정된 경우에만 표시됩니다. |
obfuscatedExternalProfileId |
앱에서 사용자 프로필과 고유하게 연결된 ID의 난독화된 버전입니다. 구매 시 https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid를 사용하여 지정된 경우에만 표시됩니다. |
regionCode |
상품이 승인된 시점에 사용자의 ISO 3166-1 alpha-2 청구서 수신 지역 코드입니다. |
refundableQuantity |
환불 대상 수량입니다. 즉, 환불되지 않은 수량입니다. 이 값은 수량 기반 부분 환불 및 전액 환불을 반영합니다. |
메서드 |
|
|---|---|
|
인앱 상품 구매를 확인합니다. |
|
인앱 상품 구매를 소비합니다. |
|
인앱 상품의 구매 및 소비 상태를 확인합니다. |
오류 코드
이 리소스의 작업은 다음 HTTP 오류 코드를 반환합니다.
| 오류 코드 | 이유 | 설명 | 해상도 |
|---|---|---|---|
400 |
invalidPurchaseState |
구매가 요청된 작업을 수행할 수 있는 유효한 상태가 아닙니다. 예를 들어 이미 사용한 구매를 확인하거나 활성 상태가 아닌 구독을 취소하려고 할 수 있습니다. | 작업을 시도하기 전에 해당 Get API를 사용하여 리소스의 현재 상태를 확인합니다. 리소스가 작업에 적합한 상태인지 확인합니다. |
400 |
invalidValue |
요청에 잘못된 값이 제공되었습니다. 잘못되었거나 유효하지 않은 구매 토큰에 대해 반환되는 경우가 많습니다. | API 참조에 따라 요청 본문 또는 매개변수의 잘못된 필드 값을 수정합니다. |
400 |
productNotOwnedByUser |
제공된 구매 토큰은 유효하지만 사용자가 현재 제품을 소유하고 있지 않습니다. 이는 확인 전에 구매가 환불, 취소 또는 만료된 경우에 발생할 수 있습니다. | 작업을 시도하기 전에 해당 Get API를 사용하여 리소스의 현재 상태를 확인합니다. 리소스가 작업에 적합한 상태인지 확인합니다. |
400 |
purchaseTokenMismatch |
제공된 구매 토큰이 구매, 패키지 이름, 정기 결제 ID 또는 제품 ID와 일치하지 않습니다. | 요청의 모든 세부정보가 올바르고 서로 일치하는지 확인합니다. |
400 |
required |
요청에 필수 필드 또는 매개변수가 누락되었습니다. | API 문서를 참고하여 모든 필수 입력란과 매개변수가 포함되어 있는지 확인하세요. |
400 |
unsupportedIabType |
이 작업은 지정된 인앱 결제 유형에서 지원되지 않습니다. | API 메서드가 관리되는 항목 유형과 호환되는지 확인합니다. |
403 |
userInsufficientPermission |
사용자에게 요청된 작업을 수행할 수 있는 충분한 권한이 없습니다. | 인증된 사용자에게 Google Play Console에서 필요한 권한이 있는지 확인합니다. 자세한 내용은 서비스 계정 사용을 참고하세요. |
404 |
notFound |
요청된 리소스를 찾을 수 없습니다. | 식별자 (예: 구매 토큰, 패키지 이름, 제품 ID, 정기 결제 ID)가 올바른지 확인합니다. |
409 |
concurrentUpdate |
동시에 업데이트되고 있는 객체를 업데이트하려고 시도했습니다. | 지수 백오프로 요청 재시도 동일한 리소스를 동시에 수정하지 마세요. |
5xx |
Generic error |
Google Play 서버의 일반 오류입니다. | 요청을 다시 시도하세요. 문제가 계속되면 Google Play 계정 관리자에게 문의하거나 지원 요청을 제출하세요. Play 상태 대시보드에서 알려진 서비스 중단이 있는지 확인해 보세요. |