1. Initialize IAP with Shopkey
게임에서 PCSDK 를 사용해서 빌링서비스를 제공하기로 결정하였다면, 스토브에서 발급된 상점키 ShopKey 인자값으로 StovePC_IAPInit 함수로 빌링 초기화를 시도합니다.
빌링초기화 시도시 스토브 플랫폼에 등록된 상품리스트를 자동으로 조회한 후 스토브 PCSDK 내부 캐시에 저장을 합니다.
StovePC_IAPInit을 호출하고 실패하였다면 StovePCResult와OnError 콜백으로 에러내용을 전달합니다.
// 입력 파라미터
// char* shopKey : 스토브에서 발급받은 shopKey
StovePCResult result = StovePC_IAPInit(YOUR_SHOP_KEY);
if(result == StovePCResult::STOVE_PC_NO_ERROR)
{
// 성공 처리
}
C++
복사
겪을 수 있는 ExternalErrors 를 안내드립니다.
ExternalError | 설명 |
500 | Internal Server Error
⇒ 스토브 담당자에게 문의 부탁드립니다. |
50001 | 상점이 존재하지 않거나, 점검 중
⇒ 스튜디오 내 상점이 On/Off 상태인지 확인 부탁드립니다. 만약에 On 상태라면, 스토브 담당자에게 문의 부탁드립니다. |
50002 | 상품이 존재 하지 않거나 판매 불가능 상품
⇒ 스튜디오 내 상품의 등록 여부, On/Off 상태, 판매 기간을 확인 부탁드립니다. 만약 모두 정상이라면, 스토브 담당자에게 문의 부탁드립니다. |
999999 | 정의되지 않은 오류
⇒ 스토브 담당자에게 문의 부탁드립니다. |
2. 게임프로필 설정
스토브 유저는 총 3가지 종류의 유저 구분 번호를 가질 수 있습니다.
1) Character No. ⇒ 게임 내 캐릭터별 번호 (옵션)
2) GUID ⇒ 각 게임별로 발급되는 회원번호
3) Member No. ⇒ 스토브 공통 회원번호
이는 상품 구매 주체의 수준을 결정하기 위함입니다. PC SDK는 상품 구매 주체의 우선순위를 아래와 같이 매깁니다.
- Character No. > GUID > Member No.
StovePC_SetGameProfile 함수를 통해 캐릭터 정보가 설정되면 PC SDK는 상품 구매시 Character No.를 기준으로 구매를 진행합니다.
반면에 StovePC_SetGameProfile 함수를 통해 캐릭터 정보가 설정되지 않은 경우, PC SDK는 Guid 또는 Member No.를 기준으로 구매를 진행합니다. 따라서 상품 구매시 상품 구매 주체가 잘 적용되도록 하려면 PC SDK의 빌링서비스 API를 호출하기 전에 StovePC_SetGameProfile API 호출 여부를 고려해야 합니다.
일반적으로 StovePC_SetGameProfile 함수는 월드/캐릭터 변경시마다 1회만 호출하면 됩니다.
3. 서비스 이용 약관 동의 여부 조회
StovePC_FetchTermsAgreement 메서드로 해당 게임에 대한 사용자의 서비스 이용 약관 동의 정보를 조회합니다.
StovePCResult result = StovePC.FetchTermsAgreement();
if(result == StovePCResult.NoError)
{
// 성공 처리
}
C++
복사
StovePC_FetchTermsAgreement 메서드가 정상적으로 처리되면 OnFetchTermsAgreement 콜백이 호출됩니다.
콜백에 전달되는 StovePCTermsAgreement 구조체에는 약관 동의에 대한 메타정보가 포함되어 있습니다.
•
StovePCShopCategory.GameId: 게임 아이디
•
StovePCShopCategory.Result : 서비스 이용 약관 동의 여부
•
StovePCShopCategory.Region: 권역 코드
•
StovePCShopCategory.AgreementUrl : 서비스 약관 동의 동의 페이지 Url
private void OnFetchTermsAgreement(StovePCTermsAgreement termsAgreement)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("OnFetchTermsAgreement");
sb.AppendFormat(" - termsAgreement.GameId : {0}" + Environment.NewLine, termsAgreement.GameId);
sb.AppendFormat(" - termsAgreement.Result : {0}" + Environment.NewLine, termsAgreement.Result.ToString());
sb.AppendFormat(" - termsAgreement.Region : {0}", termsAgreement.Region);
sb.AppendFormat(" - termsAgreement.AgreementUrl : {0}", termsAgreement.AgreementUrl);
Debug.Log(sb.ToString());
if(termsAgreement.Result == false)
{
// 외부 브라우저 열기
Application.OpenURL(termsAgreement.AgreementUrl);
}
}
C++
복사
StovePC_FetchTermsAgreement 메서드가 실행중에 오류가 발생하면 OnError 콜백이 호출됩니다.
StovePCError 구조체의 ExternalError 필드를 통해 외부 오류를 확인할 수 있습니다.
ExternalError | 설명 |
400 | 잘못된 요청 정보
⇒ 스토브 담당자에게 문의 부탁드립니다. |
500 | 시스템 에러
⇒ 스토브 담당자에게 문의 부탁드립니다. |
70898 | 유효하지 않은 데이터
⇒ 스토브 담당자에게 문의 부탁드립니다. |
70899 | 파라미터에 유효하지 않은 값이 존재 |
70800 | 해당 조건으로 존재하는 약관 없음
⇒ 스토브 담당자에게 문의 부탁드립니다. |
70804 | GS API 호출에러
⇒ 스토브 담당자에게 문의 부탁드립니다. |
70805 | GUID API 호출 에러
⇒ 스토브 담당자에게 문의 부탁드립니다. |
70806 | 서비스를 찾을 수 없음
⇒ 스토브 담당자에게 문의 부탁드립니다. |
70807 | GUID API 에서 정의되지 않은 오류 발생
⇒ 스토브 담당자에게 문의 부탁드립니다. |
40103 | 토큰 만료
⇒ 스토브 담당자에게 문의 부탁드립니다. |