모든 문서(일반 문서, 분류 문서, 파일(이미지, 사운드 등) 문서)는 분류가 달려 있어야 합니다.
--Administrator (토론)
InAppV4 API 레퍼런스 가이드
상수 및 자료형
Market Id
- const static int MARKET_LIST_NOT_SELECTED = 0;
const static int MARKET_LIST_APPLE_APPSTORE = 1;
const static int MARKET_LIST_GOOGLE_PLAYSTORE = 2;
const static int MARKET_LIST_HIVE_LEBI = 3;
const static int MARKET_LIST_ONESTORE = 4;
const static int MARKET_LIST_AMAZON_APPSTORE = 5;
const static int MARKET_LIST_SAMSUNG_GALAXYSTORE = 6;
const static int MARKET_LIST_HUAWEI_APPGALLERY = 7;- MarketListCB 콜백에서 marketList(Array)로 받을 수 있습니다.
C# : 구조체 없이 콜백 메세지(JSON String) 내 marketList key로 존재(Array)
IapV4Lifecycle Type
- const static int IAPV4_LIFE_CYCLE_ON_SETUP_FINISHED = 0;
const static int IAPV4_LIFE_CYCLE_ON_INITIALIZE_FINISHED = 1;
const static int IAPV4_LIFE_CYCLE_ON_SIGN_IN = 2;
const static int IAPV4_LIFE_CYCLE_ON_SIGN_OUT = 3;
const static int IAPV4_LIFE_CYCLE_ON_PROCESS_URI = 4;
const static int IAPV4_LIFE_CYCLE_ON_RESET = 5;- IapV4LifecycleCB 콜백에서 type로 받을 수 있습니다.
C# : 구조체 없이 콜백 메세지(JSON String) 내 type key로 존재.
struct CS_IapV4Result
- typedef struct CS_IapV4Result {
int result;
int errorCode;
const char* errorMessage;
} CS_IapV4Result;- result : 에러코드 (항상 존재)
- errorCode : 에러코드에 대한 상세 분류 (마켓에 따라 비어있을 수 있음)
- errorMessage : 에러에 대한 문자열 내용 (마켓에 따라 비어있을 수 있음)
C# : 구조체 없이 콜백 메세지(JSON String) 내 iapResult key로 존재. (IapV4LifecycleCB 에는 포함되지 않음)
struct CS_IapV4ProductInfo
- typedef struct CS_IapV4ProductInfo {
const char* productType;
const char* marketPid;
const char* currency;
double price;
const char* displayPrice; //
const char* title;
const char* description;
const char* originalJson;
const char* displayOriginalPrice;
double originalPrice; //
const char* iconUrl;
int coinsReward;
} CS_IapV4ProductInfo;- - productType : 아이템 타입(소모성: consumable / 구독형: subscription)
- - marketPid : 아이템 ID (PID)
- - currency : 통화 코드
- 통화 코드는 ISO-4217 입니다. ex) USD
- 미국, 영국, 일본, 프랑스등의 주요 국가는 통화 코드를 게임의 UI에서 $(USD), ¥(JPY), £(GBP) 등으로 변환해주시고,
- 나머지 국가는 통화 코드 그대로 노출하시면 됩니다.
- 통화 코드는 ISO-4217 입니다. ex) USD
- - price : 실제 가격
- - displayPrice : 실제로 보이는 가격 ex) $0.99
- 통화 기호와 가격을 조합한 형태(예. $0.99)로 displayPrice를 전달합니다. Android와 iOS의 노출 방식이 다르기 때문에 일부 국가에서는 OS에 따라 통화 기호와 가격 순서가 다를 수 있습니다.
- 각 나라의 통화기호는 통화기호표와 동일하게 출력합니다. 통화기호는 HIVE 식별자 정책(https://developers.withhive.com/dev4/basics/identifier/#currency)을 참고하세요.
- 다른 나라에서 부가세를 추가하거나 변동하는 경우에 서버에서 계산하여 displayPrice, price, displayOriginalPrice, originalPrice에 반영하므로 추가 작업이 필요 없습니다.
- 통화 기호와 가격을 조합한 형태(예. $0.99)로 displayPrice를 전달합니다. Android와 iOS의 노출 방식이 다르기 때문에 일부 국가에서는 OS에 따라 통화 기호와 가격 순서가 다를 수 있습니다.
- - title : 아이템 이름
- - description : 아이템 부가 설명
- - originalJson : 마켓에서 전달받은 응답
- - displayOriginalPrice : 마켓에서 전달받은 표기 가격
- - originalPrice : 마켓에서 전달받은 가격
- Google은 price 값과 originalPrice 값이 다르면 할인 전 원가를 표기할 수 있습니다. 두 값이 같다면 할인 상태가 아님을 의미합니다.
- - iconUrl : 아이템 아이콘 이미지 url
- - coinsReward : 아마존 코인 보상 가격
- ProductInfoCB 콜백에서 productInfo(Array)로 받을 수 있습니다.
- 에러 상황에선 내부 멤버가 null, 혹은 빈스트링("") 처리됩니다.
C# : 구조체 없이 콜백 메세지(JSON String) 내 productInfo key로 존재(Array).// Unity CS_IapV4GetProductInfo 콜백 응답 예
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"numOfProduct":1,
"productInfo":
[
{
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
]
}
struct CS_IapV4ReceiptInfo
- typedef struct CS_IapV4ReceiptInfo {
int type;
const char* additionalInfo;
const char* bypassInfo;
const char* hiveiapReceipt;
// ProductInfo
const char* productType;
const char* marketPid;
const char* currency;
double price;
const char* displayPrice; //
const char* title;
const char* description;
const char* originalJson;
const char* displayOriginalPrice;
double originalPrice; //
const char* iconUrl;
int coinsReward;
} CS_IapV4ReceiptInfo;- - type : marketId (Market Id)
- - additionalInfo : 구매시 입력한 additionalInfo
- - bypassInfo : HIVE 영수증 검증 시 사용하는 암호화 데이터.
- - hiveiapReceipt: 구매 영수증
이하 struct CS_IapV4ProductInfo와 동일
- ReceiptInfoCB 콜백에서 receiptInfo로 받을 수 있습니다.
- ReceiptListInfoCB 콜백에서 receiptInfo(Array)로 받을 수 있습니다.
- 에러 상황에선 내부 멤버가 null, 혹은 빈스트링("") 처리됩니다.
C# : 구조체 없이 콜백 메세지(JSON String) 내 receiptInfo key로 존재.// Unity CS_IapV4Purchase, CS_IapV4PurchaseSubscription 콜백 응답 예
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"receiptInfo":
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
}// Unity CS_IapV4Restore, CS_IapV4RestoreSubscription 콜백 응답 예
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"numOfReceipt":2,
"receiptInfo":
[
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
},
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
]
}
콜백 함수
void MarketListCB(CS_IapV4Result iapResult, int numOfMarketList, int* marketList)
- Description
- 게임 클라이언트에서 이용 가능한 마켓 정보를 결과값으로 반환.
- Description
- 해당 콜백을 지원하는 마켓은 Apple, GooglePlay, Lebi, OneStore, Amazon, Huawei AppGallery 가 있습니다.
- Return Value
no return value
- Parameter
in/out Type Name Description in CS_IapV4Result iapResult 호출 결과 값
in int numOfMarketList 이용 가능한 마켓의 갯수 (마켓이 없거나 에러상황일 땐 0)
in int* marketList 이용 가능한 마켓 정보 (Market Id)
- - struct CS_IapV4Result, Market Id 부분을 참고해 주세요.
- - Unity plugin : Param Name을 key 값으로 하는 Json String 형식. (CS_IapV4MarketConnectUnity 설명에서 자세히)
- Remark
- not comment
- Remark
void ProductInfoCB(CS_IapV4Result iapResult, int numOfProduct, CS_IapV4ProductInfo* productInfo)
- Description
- 결과값으로 상품 목록의 상품 정보, 러비 잔액을 전달 받습니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in CS_IapV4Result iapResult 호출 결과 값
in int numOfProduct 상품의 갯수 (상품이 없거나 에러상황일 땐 0)
in CS_IapV4ProductInfo* productInfo 상품 정보 (존재하지 않는다면 null)
- - struct CS_IapV4Result, CS_IapV4ProductInfo 부분을 참고해 주세요.
- - Unity plugin : Param Name을 key 값으로 하는 Json String 형식. (CS_IapV4ProductInfoUnity 설명에서 자세히)
- Remark
- not comment
- Remark
void ReceiptInfoCB(CS_IapV4Result iapResult, CS_IapV4ReceiptInfo receiptInfo)
- Description
- 구매 성공시 영수증과 상품 데이터를 전달합니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in CS_IapV4Result iapResult 호출 결과 값
in CS_IapV4ReceiptInfo receiptInfo 영수증 정보 (에러 상황에선 내부 멤버가 null)
- - struct CS_IapV4Result, CS_IapV4ReceiptInfo 부분을 참고해 주세요.
- - Unity plugin : Param Name을 key 값으로 하는 Json String 형식. (CS_IapV4PurchaseUnity 및 CS_IapV4PurchaseSubscriptionUnity 설명에서 자세히)
- Remark
- not comment
- Remark
void ReceiptListInfoCB(CS_IapV4Result iapResult, int numOfReceipt, CS_IapV4ReceiptInfo* receiptInfo)
- Description
- restore 시 현재 transaction 종료되지 않은 영수증과 상품 데이터를 전달합니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in CS_IapV4Result iapResult 호출 결과 값
in int numOfReceipt 미완료 된 구매 영수증의 갯수 (미완료 된 구매상황이 없거나 에러상황일 땐 0)
in CS_IapV4ReceiptInfo* receiptInfo 영수증 정보 (미완료 된 구매상황이 없거나 에러상황일 땐 null)
- - struct CS_IapV4Result, CS_IapV4ReceiptInfo 부분을 참고해 주세요.
- - Unity plugin : Param Name을 key 값으로 하는 Json String 형식. (CS_IapV4RestoreUnity 및 CS_IapV4RestoreSubscriptionUnity 설명에서 자세히)
- Remark
- not comment
- Remark
void TransactionCB(CS_IapV4Result iapResult, const char* marketPid)
- Description
- finish 완료 시 전달받는 결과 값
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in CS_IapV4Result iapResult 호출 결과 값
in const char* marketPid finish 완료된 marketPid
- - struct CS_IapV4Result 부분을 참고해 주세요.
- - Unity plugin : Param Name을 key 값으로 하는 Json String 형식. (CS_IapV4TransactionFinishUnity 설명에서 자세히)
- Remark
- not comment
- Remark
void BalanceCB(CS_IapV4Result iapResult, int balance)
- Description
- 러비 충전을 완료한 후 잔액을 확인할 수 있습니다. (Android Only)
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in CS_IapV4Result iapResult 호출 결과 값
in int balance 러비 잔액
- - struct CS_IapV4Result 부분을 참고해 주세요.
- - Unity plugin : Param Name을 key 값으로 하는 Json String 형식. (CS_IapV4GetBalanceUnity 설명에서 자세히)
- (Android Only)
- Remark
- not comment
- Remark
void CheckPromotePurchaseCB(CS_IapV4Result iapResult, const char* marketPid)
- Description
- App Store에서 구매 요청이 들어온 마켓 PID 값을 반환받을 수 있습니다. (iOS Only)
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in CS_IapV4Result iapResult 호출 결과 값
in const char* marketPid finish 완료된 marketPid
- - struct CS_IapV4Result 부분을 참고해 주세요.
- - Unity plugin : Param Name을 key 값으로 하는 Json String 형식. (CS_IapV4CheckPromotePurchaseUnity 설명에서 자세히)
- (iOS Only)
- Remark
- not comment
- Remark
void IapV4LifecycleCB(int type, const char* data)
- Description
- 구글 오프라인 구매 시 구글로부터 구매 완료 신호를 받습니다. (Android Only)
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in int type in const char* data - - IapV4Lifecycle Type 부분을 참고해 주세요.
- - Unity plugin : Param Name을 key 값으로 하는 Json String 형식. (CS_IapV4SetLifecycleCBUnity 설명에서 자세히)
- (Android Only)
- Remark
- not comment
- Remark
콜백 함수 (Unity)
- Unity 콜백 함수 사용 예
void ProductInfoCallback(string msg) {
// 콜백 데이터(msg) 파싱
if(msg != null) {
JSONNode responseJsonData = JSON.Parse(msg);
if(responseJsonData["productInfo"] != null) {
JSONNode productInfoList = responseJsonData["productInfo"];
if(productInfoList[0]["productType"].Equals("consumable"))
pidCon = productInfoList[0]["marketPid"];
else
pidSub = productInfoList[0]["marketPid"];
}
}
}
// API 호출
inAppV4Plugin.GetProductInfo(gameObject, "ProductInfoCallback");
함수
void CS_IapV4MarketConnect(MarketListCB cb)
- Description
- IAP v4 초기화 함수.
- HIVE IAP v4를 사용하기 위해서는 구매 전 한번 IAP 초기화를 요청해야 합니다. IAP 초기화를 요청하면 게임 클라이언트에서 이용 가능한 마켓 정보를 결과값으로 반환합니다. 마켓 정보는 Market Id로 정의되어 있습니다.
- 마켓에서 게임 서비스를 종료하더라도 기존 유저가 게임 플레이를 지속하려면 게임 내 재화 상점에 접근할 수 있어야 합니다. 이를 위해 게임 스튜디오에서는 현금 결제 상점과 게임 내 재화 상점을 반드시 분리해 설계해야 합니다. IAP v4 초기화로 전달되는 결과값은 게임 내 상점에 접근하는 용도가 아니니 목적과 다르게 사용하지 마세요.
- 인앱초기화가 성공하면 MarketListCB 콜백이 호출 됩니다.
- MarketListCB의 numOfMarketList 0이거나 콜백을 받지 못하면 모든 구매가 실패로 처리됩니다.
- IAP v4 초기화 함수.
- Description
초기화 실패하는 경우는 아래와 같습니다.
- AppStore나 PlayStore가 점검 중으로 item 정보를 못 받음.
- AppStore, PlayStore Test 계정이 아님.
- iOS 경우 Test 단말로 등록되지 않았음.
- Return Value
no return value
- Parameter
in/out Type Name Description in MarketListCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4MarketConnectUnity(string unityCBObjName, string unityCBFuncName)
- Remark
const static int MARKET_LIST_APPLE_APPSTORE = 1;
const static int MARKET_LIST_GOOGLE_PLAYSTORE = 2;
const static int MARKET_LIST_HIVE_LEBI = 3;
const static int MARKET_LIST_ONESTORE = 4;
const static int MARKET_LIST_AMAZON_APPSTORE = 5;
const static int MARKET_LIST_SAMSUNG_GALAXYSTORE = 6;
const static int MARKET_LIST_HUAWEI_APPGALLERY = 7;
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
“numOfMarketList”:3,
"marketList":[1, 2, 3]
}
void CS_IapV4GetProductInfo(ProductInfoCB cb)
- Description
- 게임 내 상점 진입 시 상품 목록 조회 API를 호출해야 합니다. 상품 목록 요청을 수행하면 결과 통지 시 ProductInfoCB 콜백에 상품 목록 정보를 포함하여 반환합니다.
- 해당 함수는 소모성 상품 목록 조회 API입니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in ProductInfoCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4GetProductInfoUnity(string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"numOfProduct":1,
"productInfo":
[
{
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
]
}
void CS_IapV4GetSubscriptionProductInfo(ProductInfoCB cb)
- Description
- 게임 내 구독형 상품 상점에 진입할 때 구독형 상품 목록 조회 API를 호출해야 합니다. 구독형 상품 목록 요청을 수행하면 결과 통지 시 ProductInfoCB 콜백에 상품 목록 정보를 포함하여 반환합니다. ProductInfoCB 콜백에 대한 설명은 상품 목록 조회에서 전달되는 클래스와 동일한 형태입니다.
- 해당 함수는 구독형 상품 목록 조회 API입니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in ProductInfoCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4GetSubscriptionProductInfo(const char* unityCBObjName, const char* unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"numOfProduct":1,
"productInfo":
[
{
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
]
}
void CS_IapV4Purchase(String (const char*) marketPid, String (const char*) additionalInfo, ReceiptInfoCB cb)
- Description
- HIVE IAP v4에서 상품 구매는 App Store, Play Store에 등록된 marketPid를 매개변수로 CS_IapV4Purchase 메서드를 호출하여 상품 구매를 요청합니다.
- 해당 함수는 소모성 상품 목록 조회 API입니다.
- Description
purchase() 메서드 호출 시 주의사항
- purchase() 메서드를 호출하는 도중 마켓 오류로 RESPONSE_FAIL, CANCELED 에러가 발생하면 사용자에게 구매 과정에 문제가 있음을 알립니다.
- 구매 과정에 문제가 있다는 알림을 사용자가 확인했다면 restore() 메서드를 호출하여 구매 복구를 진행합니다.
- purchase() 메서드를 호출하는 도중 NEED_RESTORE 에러가 발생하면 구매가 취소되며, 이 경우 restore()메서드를 호출하여 구매 복구를 진행합니다.
- purchase() 메서드를 호출하는 도중 오프라인 결제를 시도하는 경우, ITEM_PENDING 에러가 발생하며 해당 아이템은 구매 대기 상태가 됩니다.
- 오프라인 결제에 성공한 경우, UserEngagement를 통해 IAP_UPDATED 이벤트를 수신하고, restore() 메서드 호출로 결제 완료 상품의 영수증 정보를 확인할 수 있습니다.
- 구매 복구 시 RESPONSE_FAIL 에러가 발생하면 구매를 진행할 수 없으므로 사용자에게 복구 과정에 문제가 있음을 알려야 합니다.
- 인앱 구입 차단 문구 가이드(https://developers.withhive.com/dev4/billing/iapv4-purchase/#inapp_reject_text)를 참고하면 필요에 따라 NOT_SUPPORTED 에러 처리로 사용자가 구매 할 수 없는 상태임을 알릴 수 있습니다.
- Return Value
no return value
- Parameter
in/out Type Name Description in String (const char*) marketPid 구매할 marketPid
in String (const char*) additionalInfo 구매 시 전달할 추가 데이터
in ReceiptInfoCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4PurchaseUnity(string marketPid, string additionalInfo, string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"receiptInfo":
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
}
void CS_IapV4PurchaseSubscription(String (const char*) marketPid, String (const char*) oldMarketPid, String (const char*) additionalInfo, ReceiptInfoCB cb)
- Description
- HIVE IAP v4에서 상품 구매는 App Store, Play Store에 등록된 marketPid를 매개변수로 CS_IapV4PurchaseSubscription 메서드를 호출하여 구독형 상품 구매를 요청합니다.
- 기존에 구독 중인 상품이 있어 구독 변경이 필요한 경우에는 oldMarketPid에 구독중인 상품의 marketPid를 입력하세요. 이 기능은 Android에서만 동작합니다.
- 해당 함수는 구독형 상품 목록 조회 API입니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in String (const char*) marketPid 구매할 marketPid
in String (const char*) oldMarketPid 구독중인 상품의 marketPid (구독 변경 시)
in String (const char*) additionalInfo 구매 시 전달할 추가 데이터
in ReceiptInfoCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4PurchaseSubscriptionUnity(string marketPid, string oldMarketPid, string additionalInfo, string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"receiptInfo":
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
}
void CS_IapV4Restore(ReceiptListInfoCB cb)
- Description
- 상품 구매 과정에서 여러가지 상황으로 인하여 아이템 지급을 실패하거나 취소되는 경우가 발생할 수 있습니다. 이런 상황을 대비하기 위해서는 미 지급된 아이템의 영수증 정보를 요청해야 합니다. CS_IapV4Restore() 메서드를 호출하여 미 지급된 아이템의 정보를 요청하세요.
- 해당 함수는 소모성 상품 목록 조회 API입니다.
- Description
purchase() 메서드 호출 시 주의사항
- restore() 메서드를 호출한 결과 값이 SUCCESS이고 ReceiptList가 전달된 경우 복구할 아이템이 존재하는 상황입니다. 미 지급된 아이템을 지급하고 완료로 처리하세요.
- restore() 메서드를 호출한 결과 값이 SUCCESS가 아닌 경우 게임에서 처리하지 않아도 됩니다.
- restore() 메서드를 호출 후 에러가 발생할 경우 유저가 반드시 알아야 하는 에러(https://developers.withhive.com/api/hive-api/resultapicode_iapv4/#restore)를 제외하고는 별도 알림 없이 유저가 게임을 계속 플레이할 수 있도록 구현하세요.
- Return Value
no return value
- Parameter
in/out Type Name Description in ReceiptListInfoCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4RestoreUnity(string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"numOfReceipt":2,
"receiptInfo":
[
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
},
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
]
}
void CS_IapV4RestoreSubscription(ReceiptListInfoCB cb)
- Description
- 구독 중인 상품의 지급이 이루어지지 않았다면 구독 상태를 복구하는 CS_IapV4RestoreSubscription() 메서드를 호출해 이전에 구매한 구독 상품의 영수증을 요청해야 합니다.
- 해당 함수는 구독형 상품 목록 조회 API입니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in ReceiptListInfoCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4RestoreSubscriptionUnity(string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"numOfReceipt":2,
"receiptInfo":
[
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
},
{
"type":0,
"additionalInfo":"",
"bypassInfo":"",
"hiveiapReceipt":"",
"productType":"",
"marketPid":"",
"currency":"",
"price":0,
"displayPrice":"",
"title":"",
"description":"",
"originalJson":"",
"displayOriginalPrice":"",
"originalPrice":0,
"iconUrl":"",
"coinsReward":0
}
]
}
void CS_IapV4TransactionFinish(String (const char*) marketPid, TransactionCB cb)
- Description
- 상품 구매 후, 아이템 지급을 완료했다면 CS_IapV4TransactionFinish()를 반드시 호출하여 구매를 완료하세요.
- 지급 완료된 상품에 대해 지급 완료 요청을 메서드를 호출하지 않으면, 미지급된 아이템으로 남아있게 되어 restore() 메서드 호출 시 영수증 정보를 반환할 수 있으니 상품 구매 후 모든 프로세스가 완료되었다면 반드시 지급 완료 API를 호출해 주세요.
- 결제는 성공했으나 CS_IapV4TransactionFinish() 메서드 호출 결과가 3일 이내 성공하지 못하는 경우 자동 환불됩니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in String (const char*) marketPid 구매할 marketPid
in TransactionCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4TransactionFinishUnity(string marketPid, string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"marketPid":"0"
}
void CS_IapV4CheckPromotePurchase(CheckPromotePurchaseCB cb)
- Description
- iOS 11 버전부터 ‘App Store에 노출한 인앱 상품의 인게임 구매 연동’ (이하 Promotional IAP) 기능을 지원합니다. Apple App Store의 상품 페이지 및 검색창에서 게임 내 인앱 상품을 노출할 수 있으며, 최대 20개까지 등록 가능합니다. Promotional IAP로 등록한 상품은 iOS 11 버전 이상에서만 볼 수 있습니다.
- Promotional IAP를 구현하기 위해 HIVE SDK에서는 Apple App Store에서 구매 요청이 들어온 마켓 PID 값을 반환해주는 checkPromotePurchase API를 제공합니다.
- checkPromotePurchase API를 호출하는 시점은 앱 구매가 가능한 시점이어야 합니다. checkPromotePurchase API를 호출하기 전에 게임에서는 초기화(CS_IapV4MarketConnect), 상품 정보 요청(CS_IapV4GetProductInfo), 로그인(CS_IapV4SetUid) 선행작업을 완료하여 앱 구매 가능한 상태로 호출해주세요.
- 한번 전달된 마켓 PID는 재전달되지 않기 때문에, 게임에서는 결과로 반환받은 마켓 PID를 관리해야 합니다.
- 해당 함수는 iOS Only API입니다.
- Description
Promotional IAP에 대한 자세한 설명은 다음을 참고해주세요.
- Promoting Your In-App Purchases(https://developer.apple.com/app-store/promoting-in-app-purchases/)
- Promoting In-App Purchases Programming Guide(https://developer.apple.com/documentation/storekit?language=objc)
- Return Value
no return value
- Parameter
in/out Type Name Description in CheckPromotePurchaseCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4CheckPromotePurchaseUnity(string unityCBObjName, string unityCBFuncName)
- Remark
void CS_IapV4SetUid(String(const char*) uid)
- Description
- 현재 로그인 중인 계정의 uid를 InAppV4 SDK에 세팅하는 API입니다.
- 구매 및 구매 복구를 위해서는 해당 API를 호출하여 반드시 uid를 세팅해주어야합니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in String(const char*) uid 현재 로그인 중인 계정의 uid
- Remark
- C# : void CS_IapV4SetUid(string uid)
- Remark
int CS_IapV4GetSelectedMarket()
- Description
- 현재 선택된 마켓을 확인할 수 있는 API입니다.
- 선택된 마켓이 없다면 NOT_SELECTED를 리턴합니다.
- Return Value
- Description
no return value
- Remark
- C# : int CS_IapV4GetSelectedMarket()
- Remark
void CS_IapV4ShowMarketSelection(MarketListCB cb)
- Description
- 구글/러비 마켓을 모두 혼용하는 앱아이디의 경우 해당 API를 호출하여 어떤 마켓을 타겟팅할지 선택하는 API 입니다. API 호출 시 구글/러비를 선택하는 페이지(모듈 제공 페이지)가 노출되며 선택한 마켓에 따라 모듈 내부에 타겟팅 됩니다. 이후 아이템 정보(ProductInfo API)를 호출하면 해당 마켓에 대한 아이템 정보를 얻을 수 있습니다.
- 해당 함수는 Android Only API입니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in MarketListCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4ShowMarketSelectionUnity(string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
“numOfMarketList”:3,
"marketList":[1, 2, 3]
}
void CS_IapV4GetBalanceInfo(BalanceCB cb)
- Description
- 러비 잔액(balance)를 반환 요청하는 API 입니다.
- 해당 함수는 Android Only API입니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in BalanceCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4GetBalanceInfoUnity(string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"balance":1000
}
void CS_IapV4ShowCharge(BalanceCB cb)
- Description
- 러비 충전 페이지를 호출하는 API 입니다. 해당 과정이 완료되면 현재 러비 잔액(balance)가 콜백으로 전달됩니다.
- 해당 함수는 Android Only API입니다.
- Return Value
- Description
no return value
- Parameter
in/out Type Name Description in BalanceCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4ShowChargeUnity(string unityCBObjName, string unityCBFuncName)
- Remark
{
"iapResult":
{
"result":0,
"errorCode":0,
"errorMessage":""
},
"balance":1000
}
void CS_IapV4SetLifecycleCB(IapV4LifecycleCB cb)
- Description
- 구글에서 오프라인 구매 후 구글로부터 구매 완료 신호를 얻습니다.
- Description
- 구매 완료 신호로 type은 4의 data가 interwork://hive/iapupdated가 전달되면 이후 Restore API 호출 시 오프라인 구매된 아이템에 대한 영수증 정보를 획득할 수 있습니다.
- 해당 함수는 Android Only API입니다.
- Return Value
no return value
- Parameter
in/out Type Name Description in IapV4LifecycleCB cb 콜백 함수를 등록합니다.
- Remark
- C# : void CS_IapV4SetLifecycleCBUnity(string unityCBObjName, string unityCBFuncName)
- Remark
{
{
"type”:4
“data”:"interwork://hive/iapupdated"
}
}
const char* CS_IapV4GetVersion()
- Description
- InAppV4 버전 정보를 반환합니다.
- Description
- Return Value
const char*
- Remark
- Available in Android InAppV4 4.15.2, iOS InAppV4 4.15.2
- Java : String getVersion()
- C# : string GetVersion()
- Remark
Deprecated Function