이 문서에서는 Google Play에서 받을 수 있는 실시간 개발자 알림의 유형을 나열하고 설명합니다.
인코딩
Cloud Pub/Sub 주제에 관한 각 게시에는 하나의 base64로 인코딩된 데이터 필드가 포함되어 있습니다.
{
"message": {
"attributes": {
"key": "value"
},
"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
base64로 인코딩된 데이터 필드를 디코딩하면 DeveloperNotification에 다음 필드가 포함됩니다.
{
"version": string,
"packageName": string,
"eventTimeMillis": long,
"oneTimeProductNotification": OneTimeProductNotification,
"subscriptionNotification": SubscriptionNotification,
"voidedPurchaseNotification": VoidedPurchaseNotification,
"pendingRefundReviewNotification": PendingRefundReviewNotification,
"testNotification": TestNotification
}
이러한 필드는 다음 표에 설명되어 있습니다.
| 속성 이름 | 값 | 설명 |
|---|---|---|
| version | 문자열 | 이 알림의 버전입니다. 초기 버전은 '1.0'입니다. 이 버전은 다른 버전 필드와 다릅니다. |
| packageName | 문자열 | 이 알림과 관련된 애플리케이션의 패키지 이름(예: 'com.some.thing')입니다. |
| eventTimeMillis | long | 에포크 이후 이벤트가 발생한 타임스탬프(밀리초)입니다. |
| subscriptionNotification | SubscriptionNotification | 이 필드가 있다면 이 알림은 정기 결제와 관련이 있으며 이 필드에는 정기 결제와 관련된 추가 정보가 포함됩니다. 이 필드는 pendingRefundReviewNotification, oneTimeProductNotification, voidedPurchaseNotification, testNotification과 상호 배타적입니다. |
| oneTimeProductNotification | OneTimeProductNotification | 이 필드가 있다면 이 알림은 일회성 구매와 관련이 있으며 이 필드에는 구매와 관련된 추가 정보가 포함됩니다. 이 필드는 pendingRefundReviewNotification, subscriptionNotification, voidedPurchaseNotification, testNotification과 상호 배타적입니다. |
| voidedPurchaseNotification | VoidedPurchaseNotification | 이 필드가 있는 경우 이 알림은 무효화된 구매와 관련이 있으며, 이 필드에는 무효화된 구매와 관련된 추가 정보가 포함됩니다. 이 필드는 pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification, testNotification과 상호 배타적입니다. |
| pendingRefundReviewNotification | PendingRefundReviewNotification | 이 필드가 있으면 이 알림은 해결 방법을 제안할 수 있는 지불 거절 요청과 관련이 있습니다. `ReviewRefund` API를 호출하여 이 알림에 응답합니다. 이 필드는 subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, testNotification과 상호 배타적입니다. |
| testNotification | TestNotification | 이 필드가 있다면 이 알림은 테스트 게시와 관련이 있습니다. 그리고 Google Play Console을 통해서만 전송됩니다. 이 필드는 pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification, voidedPurchaseNotification과 상호 배타적입니다. |
SubscriptionNotification
SubscriptionNotification에는 다음 필드가 포함됩니다.
{
"version": string,
"notificationType": int,
"purchaseToken": string
}
| 속성 이름 | 값 | 설명 |
|---|---|---|
| version | 문자열 | 이 알림의 버전입니다. 초기 버전은 '1.0'입니다. 이 버전은 다른 버전 필드와 다릅니다. |
| notificationType | int | 정기 결제의 notificationType은 다음 값을 가질 수 있습니다.
|
| purchaseToken | 문자열 | 정기 결제가 구매되었을 때 사용자 기기에 제공된 토큰입니다. |
예
다음은 새 정기 결제 구매 알림의 예입니다.
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503349566168",
"subscriptionNotification":
{
"version":"1.0",
"notificationType":4,
"purchaseToken":"PURCHASE_TOKEN"
}
}
OneTimeProductNotification
OneTimeProductNotification에는 다음 필드가 포함됩니다.
{
"version": string,
"notificationType": int,
"purchaseToken": string,
"sku": string
}
| 속성 이름 | 값 | 설명 |
|---|---|---|
| version | 문자열 | 이 알림의 버전입니다. 초기 버전은 '1.0'입니다. 이 버전은 다른 버전 필드와 다릅니다. |
| notificationType | int | 알림의 유형으로, 다음 값이 포함될 수 있습니다.
|
| purchaseToken | 문자열 | 구매가 이루어졌을 때 사용자 기기에 제공된 토큰입니다. |
| SKU | 문자열 | 구매된 일회성 제품 ID(예: 'sword_001')입니다. |
예
다음은 새로운 일회성 구매 알림의 예입니다.
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503349566168",
"oneTimeProductNotification":
{
"version":"1.0",
"notificationType":1,
"purchaseToken":"PURCHASE_TOKEN",
"sku":"my.sku"
}
}
VoidedPurchaseNotification
VoidedPurchaseNotification에는 다음 필드가 포함됩니다.
| 속성 이름 | 값 | 설명 |
|---|---|---|
|
|
무효화된 구매와 관련된 토큰입니다. 이 정보는 신규 구매가 발생할 때 개발자에게 제공됩니다. |
|
|
무효화된 거래와 연결된 고유 주문 ID입니다. 일회성 구매의 경우 구매에 대해 생성된 유일한 주문 ID를 나타냅니다. 자동 갱신 정기 결제의 경우 갱신 거래마다 새 주문 ID가 생성됩니다. |
|
|
무효화된 구매의
|
|
|
무효화된 구매의
수량이 여러 개인 구매의 남은 총 수량이 환불되면 |
예
다음은 새로운 무효화된 구매 알림의 예입니다.
{
"version":"1.0",
"packageName":"com.some.app",
"eventTimeMillis":"1503349566168",
"voidedPurchaseNotification":
{
"purchaseToken":"PURCHASE_TOKEN",
"orderId":"GS.0000-0000-0000",
"productType":1
"refundType":1
}
}
VoidedPurchaseNotification 사용
RTDN 클라이언트가 VoidedPurchaseNotification을 수신하면 다음 정보를 확인하세요.
packageName: 앱을 식별합니다.eventTimeMillis: 상태 변경이 발생한 시간을 알려줍니다.purchaseToken: 제품이 구매되었을 때 사용자 기기에 제공된 토큰입니다.orderId: 무효화된 거래와 관련된 주문을 식별합니다.productType: 무효화된 구매가 인앱 구매인지 정기 결제인지를 나타냅니다.refundType: 구매를 무효화한 환불 유형을 지정합니다.
PendingRefundReviewNotification
사용자가 구매에 대한 지급 거절을 요청하고 요청에 개발자 검토가 필요한 경우 PendingRefundReviewNotification가 전송됩니다. 이 알림을 받으면 요청을 평가하고 ReviewRefund API를 호출하여 24시간 이내에 환불 제안 및 구매 사용 증빙 자료를 제공해야 합니다.
PendingRefundReviewNotification에는 다음 필드가 포함됩니다.
{
"version": string,
"pendingRefundToken": string,
"orderId": string,
"refundReason": int,
"obfuscatedAccountId": string,
"obfuscatedProfileId": string
}
| 속성 이름 | 값 | 설명 |
|---|---|---|
| version | 문자열 | 이 알림의 버전입니다. 초기 버전은 '1.0'입니다. 이 버전은 다른 버전 필드와 다릅니다. |
| pendingRefundToken | 문자열 | 검토 중인 대기 중인 환불 요청을 식별하는 고유 토큰입니다. ReviewRefund API를 호출할 때 이 토큰을 전달합니다. |
| orderId | 문자열 | 환불 검토가 대기 중인 구매의 주문 ID입니다. |
| refundReason | int | 환불 요청 사유입니다. 대기 중인 검토는 환불 이유로 CHARGEBACK (7)만 지원합니다. 코드는 새로운 이유가 제공되면 이를 처리해야 합니다. |
| obfuscatedAccountId | 문자열 | (해당하는 경우) 구매 시 제공된 난독화된 개발자 지정 사용자 계정 ID입니다. |
| obfuscatedProfileId | 문자열 | (해당하는 경우) 구매 시 제공된 난독화된 개발자 지정 프로필 ID입니다. |
예
다음은 환불 검토 대기 중 알림의 예입니다.
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"pendingRefundReviewNotification":
{
"version":"1.0",
"pendingRefundToken":"example-token",
"orderId":"GPA.1234-5678-9012-34567",
"refundReason":7,
"obfuscatedAccountId":"user-account-id",
"obfuscatedProfileId":"user-profile-id"
}
}
TestNotification
TestNotification에는 다음 필드가 포함됩니다.
{
"version": string
}
| 속성 이름 | 값 | 설명 |
|---|---|---|
| version | 문자열 | 이 알림의 버전입니다. 초기 버전은 '1.0'입니다. 이 버전은 다른 버전 필드와 다릅니다. |
예
다음은 테스트 알림의 예입니다.
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"testNotification":
{
"version":"1.0"
}
}