1. 상점 카테고리 정보 호출
StovePC_FetchShopCategories 함수로 해당 게임에 대한 상점 카테고리 정보를 조회합니다. 카테고리 정보에는 부모 카테고리에 대한 아이디를 포함하고 있어 계층적 구조로 상점을 구성할 수 있습니다.
StovePCResult result = StovePC_FetchShopCategories();
if(result == StovePCResult::STOVE_PC_NO_ERROR)
{
// 성공 처리
}
C++
복사
StovePC_FetchShopCategories 함수가 정상적으로 처리되면 OnFetchShopCategories 콜백이 호출됩니다.
콜백에 전달되는 StovePCShopCategory 구조체에는 상점 카테고리에 대한 메타정보가 포함되어 있습니다.
•
StovePCShopCategory.categoryId : 카테고리 아이디
•
StovePCShopCategory.parentCategoryId : 부모 카테고리 아이디
•
StovePCShopCategory.displayNo : 카테고리 순서
•
StovePCShopCategory.name : 카테고리명
•
StovePCShopCategory.depth : 카테고리 깊이 (최상위 카테고리의 경우 1)
void OnFetchShopCategories(const int size, StovePCShopCategory* categories)
{
printf("OnFetchShopCategories");
printf("shopCategory size = %d", size);
for (int i = 0; i < size; i++, categories++)
{
printf(" - categories[%d].categoryId : %s", i, categories->categoryId);
printf(" - categories[%d].parentCategoryId : %s", i, categories->parentCategoryId);
printf(" - categories[%d].displayNo: %d", i, categories->displayNo);
wprintf(L" - categories[%d].name: %s", i, categories->name);
printf(" - categories[%d].depth : %d", i, categories->depth);
}
}
C++
복사
StovePC_FetchShopProducts 함수가 실행중에 오류가 발생하면 OnError 콜백이 호출됩니다.
StovePCError 구조체의 ExternalError 필드를 통해 외부 오류를 확인할 수 있습니다.
ExternalError | Description |
500 | Internal Server Error
⇒ 스토브 담당자에게 문의 부탁드립니다. |
999999 | 정의되지 않은 오류
⇒ 스토브 담당자에게 문의 부탁드립니다. |
2. 상품 정보 호출
StovePC_FetchProducts 함수로 해당 게임에 대한 상품 정보를 조회합니다.
// 입력 파라미터
// char* categoryId : 스튜디오에서 등록한 카테고리 식별자(빈문자열 전달시 전체 카테고리 조회)
// bool isRefresh : true 인 경우 Web API 조회, false 인 경우 PC SDK 의 Cache 조회
StovePCResult result = StovePC_FetchProducts("CATEGORY_ID", IS_REFRESH);
if(result == StovePCResult::STOVE_PC_NO_ERROR)
{
// 성공 처리
}
C++
복사
StovePC_FetchProducts 함수가 정상적으로 처리되면 OnFetchProducts 콜백이 호출됩니다.
콜백에 전달되는 StovePCProduct 구조체에는 상품에 대한 메타정보가 포함되어 있습니다.
•
StovePCProduct.productId : 상품 아이디
•
StovePCProduct.gameItemId : 상품 아이디에 매핑되는 게임 내 아이템 아이디
•
StovePCProduct.name : 상품명
•
StovePCProduct.description : 상품 설명
•
StovePCProduct.quantity : 개별 상품 수량
•
StovePCProduct.productTypeCode : 상품 유형 코드 (1: 패키지 게임 상품, 2: 인 게임 상품, 3: 패키지 아이템)
•
StovePCProduct.categoryId : 카테고리 아이디
•
StovePCProduct.currencyCode : 통화 코드
•
StovePCProduct.price : 상품 정가 (표기시에는 currencyCode 가 "KRW" 와 같으면 소수점 이하 생략 표기, 다르면 소수점 둘째자리까지 표기)
•
StovePCProduct.salePrice : 상품 판매가 (표기시에는 currencyCode 가 "KRW" 와 같으면 소수점 이하 생략 표기, 다르면 소수점 둘째자리까지 표기)
•
StovePCProduct.isDiscount : 할인 여부
•
StovePCProduct.discountType : 할인 유형(1: 정률, 2: 정액)
•
StovePCProduct.discountTypeValue : 할인값
•
StovePCProduct.discountBeginDate : 할인 시작 일자(UTC+0)
•
StovePCProduct.discountEndDate : 할인 종료 일자(UTC+0)
•
StovePCProduct.totalQuantity : 상품 총 판매 수량
•
StovePCProduct.memberQuantity : 회원 구매 수량
•
StovePCProduct.guidQuantity : Guid 구매 수량(상품 구매 주체[CharacterNo/Guid/MemberNo]의 구매 수량)
•
StovePCProduct.thumbnailUrl : 대표 상품 이미지
void OnFetchProducts(const int size, StovePCProduct* products)
{
printf("OnFetchProducts");
printf("product size = %d", size);
for (int i = 0; i < size; i++, products++)
{
printf(" - products[%d].productId: %lld", i, products->productId);
printf(" - products[%d].gameItemId: %s", i, products->gameItemId);
wprintf(L" - products[%d].name: %s", i, products->name);
wprintf(L" - products[%d].description: %s", i, products->description);
printf(" - products[%d].quantity: %d", i, products->quantity);
printf(" - products[%d].productTypeCode: %hd", i, products->productTypeCode);
printf(" - products[%d].categoryId: %s", i, products->categoryId);
printf(" - products[%d].currencyCode: %s", i, products->currencyCode);
if( strcmp(products->currencyCode, "KRW") == 0)
{
printf(" - products[%d].price: %.0lf", i, products->price);
printf(" - products[%d].salePrice: %.0lf", i, products->salePrice);
}
else
{
printf(" - products[%d].price: %.2lf", i, products->price);
printf(" - products[%d].salePrice: %.2lf", i, products->salePrice);
}
printf(" - products[%d].isDiscount: %s", i, products->isDiscount ? "true" : "false");
printf(" - products[%d].discountType: %hd", i, products->discountType);
printf(" - products[%d].discountTypeValue: %d", i, products->discountTypeValue);
printf(" - products[%d].discountBeginDate: %llu", i, products->discountBeginDate);
printf(" - products[%d].discountEndDate: %llu", i, products->discountEndDate);
printf(" - products[%d].totalQuantity: %d", i, products->totalQuantity);
printf(" - products[%d].memberQuantity: %d", i, products->memberQuantity);
printf(" - products[%d].thumbnailUrl: %s", i, products->thumbnailUrl);
}
}
C++
복사
StovePC_FetchProducts 함수가 실행중에 오류가 발생하면 OnError 콜백이 호출됩니다.
StovePCError 구조체의 ExternalError 필드를 통해 외부 오류를 확인할 수 있습니다
ExternalError | 설명 |
500 | Internal Server Error
⇒ 스토브 담당자에게 문의 부탁드립니다. |
50001 | 상점이 존재하지 않거나, 점검 중
⇒ 스튜디오 내 상점이 On/Off 상태인지 확인 부탁드립니다. 만약에 On 상태라면, 스토브 담당자에게 문의 부탁드립니다. |
50002 | 상품이 존재 하지 않거나 판매 불가능 상품
⇒ 스튜디오 내 상품의 등록 여부, On/Off 상태, 판매 기간을 확인 부탁드립니다. 만약 모두 정상이라면, 스토브 담당자에게 문의 부탁드립니다. |
999999 | 정의되지 않은 오류
⇒ 스토브 담당자에게 문의 부탁드립니다. |