본문으로 건너뛰기

인앱결제 구매 이벤트

🔔 최신화 일자: 2025-02-21

구매 이벤트 타입 정의

IapPurchaseEvent

declare interface IapPurchaseEvent {
userId: string;
iapLogId: number;
nachoProductId: string;
os: 'android' | 'ios';
productId: string;
productType: 'consumable' | 'non-consumable';
quantity: number;
price: number;
environment: 'sandbox' | 'production';
data: PlayStorePurchaseData | AppStorePurchaseData;
requestedAt: string;
purchasedAt: string;
verifiedAt: string;
}
속성명타입필수 여부설명
userIdstring인앱결제를 수행한 앱 사용자의 고유 식별자
iapLogIdnumber인앱결제 요청의 고유 로그 ID
nachoProductIdstringnachocode에서 발급받은 인앱 상품의 고유 식별자
os'android' | 'ios'인앱결제가 이루어진 운영 체제 (android, ios)
productIdstring스토어에 등록된 상품의 고유 식별자
productType'consumable' | 'non-consumable'상품 유형 (consumable: 소모성, non-consumable: 비소모성)
quantitynumber구매한 상품 개수
pricenumber개당 구매 가격
environment'sandbox' | 'production'구매가 이루어진 환경 (sandbox: 테스트 환경, production: 운영 환경)
dataPlayStorePurchaseData | AppStorePurchaseData인앱결제 데이터 정보. os'android'인 경우 PlayStorePurchaseData, os'ios'인 경우 AppStorePurchaseData
requestedAtstring (ISO 8601 format)결제 요청이 발생한 시간 (YYYY-MM-DD'T'HH:mm:ss.sss'Z')
purchasedAtstring (ISO 8601 format)결제가 완료된 시간 (YYYY-MM-DD'T'HH:mm:ss.sss'Z')
verifiedAtstring (ISO 8601 format)결제 검증이 완료된 시간 (YYYY-MM-DD'T'HH:mm:ss.sss'Z')

PlayStorePurchaseData

declare type PlayStorePurchaseData = {
purchaseToken: string;
orderId: string;
};
속성명타입필수 여부설명
purchaseTokenstring구매를 식별하기 위한 구매 토큰 ID (구독의 경우 동일 ID 유지)
orderIdstring구매와 연결된 주문 ID

소모성비소모성 상품의 경우 purchaseTokenorderId 모두 unique한 값임이 보장됩니다. 따라서 유저의 구매를 식별하기 위한 식별자로 사용할 수 있습니다. 또한 Google Play Console에서 구매내역 식별시에도 위 데이터가 활용됩니다.

AppStorePurchaseData

declare type AppStorePurchaseData = {
originalTransactionId: string;
transactionId: string;
};
속성명타입필수 여부설명
originalTransactionIdstring최초 거래의 고유 ID
transactionIdstring현재 결제 요청의 트랜잭션 ID

소모성비소모성 상품의 경우 originalTransactionIdtransactionId 모두 unique한 값임이 보장됩니다. 따라서 유저의 구매를 식별하기 위한 식별자로 사용할 수 있습니다.

요청 본문 예시

{
"userId": "testUser",
"iapLogId": 1,
"nachoProductId": "NP-NXGLSTOEXK-0001",
"os": "ios",
"productId": "com.nachocode.example.consumable",
"productType": "consumable",
"quantity": 1,
"price": 1000,
"environment": "sandbox",
"data": {
"originalTransactionId": "2000000123456789",
"transactionId": "2000000123456789"
},
"requestedAt": "2025-02-19T02:00:31.280Z",
"purchasedAt": "2025-02-19T02:00:31.280Z",
"verifiedAt": "2025-02-19T02:00:31.280Z"
}