Skip to content
Stove
Last Updated

PC SDK Unity Reference

Based on SDK version 3.5.0. 100 items combined in alphabetical order.

Contents

NameKindModule
Basic Integration GuideIntegration GuideBase
EStoveBaseMethodCodeEnumBase
EStoveBaseTypeKindEnumBase
EStoveCommonResultCodeResult CodeBase
EStoveDiscountTypeEnumIAP
EStoveIAPMethodCodeEnumIAP
EStoveIAPTypeKindEnumIAP
EStoveLocaleEnumBase
EStoveLogMethodCodeEnumLog
EStoveLogTypeKindEnumLog
EStoveOverlayModeEnumBase
EStovePCBangMethodCodeEnumPCBang
EStovePCBangPremiumEnumPCBang
EStovePCBangTypeKindEnumPCBang
EStoveProductTypeCodeEnumIAP
EStovePurchaseLimitTypeCodeEnumIAP
EStovePurchaseOperationEnumIAP
EStovePurchaseProgressEnumIAP
EStoveResultCodeResult CodeBase
EStoveTermsOperationEnumIAP
EStoveViewMethodCodeEnumView
EStoveViewTypeKindEnumView
EStoveWebViewModeEnumBase
IStoveAccessTokenStructBase
IStoveCallbackResultStructBase
IStoveChargeInfoStructIAP
IStoveConfirmPurchaseOutcomeStructIAP
IStoveConfirmPurchaseParamStructIAP
IStoveFetchProductsParamStructIAP
IStoveFetchTermsAgreementParamStructIAP
IStoveGdsStructBase
IStoveInitializeParamStructBase
IStoveInventoryItemStructIAP
IStoveInventoryListStructIAP
IStoveManualPopupParamStructView
IStoveOrderProductParamStructIAP
IStoveOverImmersionInfoStructBase
IStovePCBangBenefitInfoStructPCBang
IStovePCBangLoginOutcomeStructPCBang
IStovePCBangStatusStructPCBang
IStovePopupParamStructView
IStoveProductStructIAP
IStoveProductListStructIAP
IStovePurchasedProductStructIAP
IStovePurchaseParamStructIAP
IStoveRestartAppIfNecessaryOutcomeStructBase
IStoveRestartAppIfNecessaryParamStructBase
IStoveResultStructBase
IStoveSendLogParamStructLog
IStoveSetGameProfileParamStructBase
IStoveSetPopupDisallowedParamStructView
IStoveShopCategoryStructIAP
IStoveShopCategoryListStructIAP
IStoveShutdownInfoStructBase
IStoveSigninStructBase
IStoveStartPurchaseOutcomeStructIAP
IStoveStartPurchaseParamStructIAP
IStoveTermsAgreementOutcomeStructIAP
IStoveUserStructBase
IStoveVerifyIdentificationPopupDestroyInfoStructView
IStoveVerifyIdentificationPopupParamStructView
IStoveVietnamAgeRatingInfoStructBase
IStoveVietnamOverimmersionInfoStructBase
Stove_AccessTokenRenewedFunctionBase
Stove_AutoPopupFunctionView
Stove_CloseAllPopupsFunctionBase
Stove_ConfirmPurchaseFunctionIAP
Stove_CouponPopupFunctionView
Stove_FetchInventoryFunctionIAP
Stove_FetchProductsFunctionIAP
Stove_FetchShopCategoriesFunctionIAP
Stove_FetchTermsAgreementFunctionIAP
Stove_GetAccessTokenFunctionBase
Stove_GetGdsFunctionBase
Stove_GetSigninFunctionBase
Stove_GetUserFunctionBase
Stove_GetVersionFunctionBase
Stove_InitializeFunctionBase
Stove_ManualPopupFunctionView
Stove_NewsPopupFunctionView
Stove_OpenExternalUrlFunctionBase
Stove_OverImmersionNotificationFunctionBase
Stove_PCBangCheckStatusFunctionPCBang
Stove_PCBangLoginFunctionPCBang
Stove_PCBangLogoutFunctionPCBang
Stove_RestartAppIfNecessaryFunctionBase
Stove_RunCallbackFunctionBase
Stove_RunCallbackWithTimeoutFunctionBase
Stove_SendLogFunctionLog
Stove_SetGameProfileFunctionBase
Stove_SetLanguageFunctionBase
Stove_SetLanguageExFunctionBase
Stove_SetPopupDisallowedFunctionView
Stove_ShutdownNotificationFunctionBase
Stove_StartPurchaseFunctionIAP
Stove_UninitializeFunctionBase
Stove_VerifyIdentificationPopupFunctionView
Stove_VietnamAgeRatingNotificationFunctionBase
Stove_VietnamOverimmersionNotificationFunctionBase
StoveReadOnlyArrayEnumeratorStructBase

Basic Integration Guide

Kind Integration Guide · Module Base · Version 3.5.0

Description

The C# API in this guide is a managed wrapper for calling all SDK functions in a .NET (Mono / IL2CPP) environment. Internally, it calls C flat functions in the native DLL via P/Invoke, but the caller only needs to deal with managed types (readonly struct, struct, enum, delegate).

Compatibility: C# 7.3 (.NET Framework 4.6, Unity 2019 Mono) or later.

CategoryForm
SDK API Methodspublic static methods (static partial class per module)
Results / Data Typesreadonly struct — Immutable, get-only property, automatically managed by the garbage collector
Parameter TypeGeneral struct — get/set property; the caller must fill it in and pass it directly
Enumerationenum (value prefix k_E...)
Callbackdelegate (passing context via lambda capture)

Declaration Forms

All types are defined under the Stove.PCSDK.V3 namespace, and each module has static partial class (Base, IAP, Log, PCBang, View). Methods, structures, callback delegates, and enumerations are declared together within the same class. The GamingServices module is not provided in the new interface.

csharp
using Stove.PCSDK.V3;

// Or use static imports on a per-module basis:
using static Stove.PCSDK.V3.Base;
using static Stove.PCSDK.V3.IAP;

If you use using static, you can call it directly, like Stove_Initialize(), without a class prefix.

Naming Rules

CategoryPatternExample
SDK MethodsStove_<Method> (Method without a module token. However, the PC Bang module retains Stove_PCBang<Method>)Stove_Initialize, Stove_StartPurchase, Stove_FetchProducts, Stove_PCBangLogin
Results / Data StructuresIStove<Name>IStoveResult, IStoveCallbackResult, IStoveUser
Parameter StructureIStove<Name>Param or IStove<Name>ParamsIStoveInitializeParam, IStoveSetGameProfileParam
Callback delegateOn<Action>CallbackOnRestartAppIfNecessaryCallback, OnAccessTokenRenewedCallback
EnumerationEStove<Module><Name>EStoveBaseMethodCode, EStoveCommonResultCode, EStoveLocale
Enumeration valuesk_E<Enum><Value>k_EStoveCommonResultCode_Success, k_EStoveLocale_Ko

Memory Lifetime

All types in this guide are managed (C#) types and are handled by the garbage collector. Unlike with the Native API, there is no need to explicitly call Destroy().

ItemC#Native (ref.)
Results / Data Objectsreadonly struct Value copying, GC managementIStove* Pointer, Caller Destroy
Parameter ObjectGeneral struct: Create it directly and then pass in the valueCreated by the Factory function; destroyed by the caller
Callback ResultsIStoveCallbackResult (struct), automatically destroyed after the callback endsIStoveCallbackResult* SDK Ownership
Passing a Callback ContextLambda Capturevoid* userData Parameter

The asynchronous methods of this API do not accept a separate userData parameter. Please pass the game-side context to be used within the callback via lambda capture ((cr, t) => { myCtx.Apply(t); }).

Since all parameters passed to the callback are managed structs (value copies), they can be captured and used safely even after the callback has finished. The "valid only during the callback" restriction of the Native API does not apply to this guide.

Initialization Order

  1. Create the IStoveRestartAppIfNecessaryParam structure and set Environment, GameId, AppKey, WaitTimeMilliSec, LaunchStoveLauncher, and PlatformName. (IStoveRestartAppIfNecessaryParam)
  2. Calls Stove_RestartAppIfNecessary(restartParam, onFinished)asynchronously. The callback is dispatched when Stove_RunCallback() is called.
  3. In the game's main loop (main/UI thread), it begins calling Stove_RunCallback() every frame. This loop must start running immediately after the call to Stove_RestartAppIfNecessary() so that the callback in (2) above is dispatched, leading to the initialization in (4).
  4. Create the IStoveInitializeParam structure in the outcome.IsRestartRequired == false branch of the callback. To use View, also set MainWndHandle; to use IAP, also set ShopKey. (If IsRestartRequired == true, the SDK handles relaunch via the launcher, so the current process is terminated. IStoveInitializeParam)
  5. Calls Stove_Initialize(initParam) in the same block — synchronously, immediately returns IStoveResult. Checks for success using result.IsSuccessful.
  6. Call Stove_Uninitialize() upon termination.

The new interface does not require module-specific initialization or termination. Stove_Initialize() All features—including payment, pop-ups, PC Bang, and logs—operate together in a single step.

csharp
using Stove.PCSDK.V3;
using static Stove.PCSDK.V3.Base;

// 1) Check the launcher / Create and configure the restart parameter structure
var restartParam = new IStoveRestartAppIfNecessaryParam
{
    Environment        = "LIVE",          // "QA" / "SANDBOX" / "LIVE"
    GameId             = "my_game_id",
    AppKey             = "my_app_key",
    WaitTimeMilliSec   = 5000,
    LaunchStoveLauncher = true,
    PlatformName       = "stove",
};

// 2) Check if the launcher is running (asynchronous). The callback is dispatched when Stove_RunCallback() is called.
Stove_RestartAppIfNecessary(restartParam, (callbackResult, outcome) =>
{
    if (outcome.IsRestartRequired)
        return;  // The SDK is being relaunched via the launcher; the current process has been terminated.

    // 4) SDK Initialization (Synchronous). View and IAP are also initialized based on the MainWndHandle and ShopKey settings in initParam.
    var initParam = new IStoveInitializeParam
    {
        // To use View, set MainWndHandle; to use IAP, set ShopKey as well.
        // MainWndHandle = myWindowHandle,
        // ShopKey       = "my_shop_key",
    };

    var result = Stove_Initialize(initParam);
    if (result.IsSuccessful)
    {
        // Initialization complete; SDK is now available
    }
    else
    {
        // Error Handling: result.ResultCode, result.ExceptionMessage
    }
});

// 3) Execute the callback on every frame / every tick (main / UI thread)
//    This loop must begin immediately after the call to `Stove_RestartAppIfNecessary()` so that the callback in (2) above is dispatched, leading to the initialization in (4).
void OnUpdate()
{
    Stove_RunCallback();
}

// 5) Upon completion
Stove_Uninitialize();

Callback Execution Rules

  • The callbacks for all asynchronous methods run on the thread (main or UI thread) where Stove_RunCallback() or Stove_RunCallbackWithTimeout(timeoutMillisec) is called. They do not run on an internal SDK thread.
  • The callback signature is of the form delegate void On<Action>Callback(IStoveCallbackResult callbackResult, ...), and success is determined by callbackResult.Result.IsSuccessful.
  • One-time callbacks (such as Stove_VietnamAgeRatingNotification and Stove_VietnamOverimmersionNotification) must be called after rendering is possible. Register and call them after the first frame has been rendered following the start of the game.
  • Delegates registered with repeatable callbacks (such as Stove_AccessTokenRenewed and Stove_OverImmersionNotification) are referenced until the SDK is closed or the registration is canceled. Be mindful of the lifetime of the captured objects.
  • The onFinished callback for a one-time asynchronous method is a required parameter. If it is not specified, a k_EStoveCommonResultCode_InvalidParam(5) error occurs.

Common Interface

For types shared by all modules, we only provide links to the respective documents. Please refer to each document for details.

  • IStoveResult — The result of calling a synchronous method. It is an immutable struct that contains the method code, result code, and managed exception message.
  • IStoveCallbackResult — This is the result passed via an asynchronous callback. It contains both IStoveResult and external error information (such as HTTP status codes).
TypeDocument
IStoveResultIStoveResult
IStoveCallbackResultIStoveCallbackResult

C# does not have a public type corresponding to the native IStoveTypeBase. Runtime type identification is used only during internal marshaling (interoperability with native DLLs) and is not exposed on the API surface. For more information, see the EStoveBaseTypeKind documentation.

Notes

  • Stove_RestartAppIfNecessary() must be called before Stove_Initialize(), and to receive its callback, Stove_RunCallback() must be running in the game loop immediately after the call.
  • Stove_Initialize() is a synchronous method, so it does not accept a callback, but it must be called from within the callback of Stove_RestartAppIfNecessary() (the outcome.IsRestartRequired == false branch).
  • The asynchronous methods of this API do not accept the userData parameter. Please pass the context to be used within the callback via lambda capture.

See Also

DocumentContent
IStoveRestartAppIfNecessaryOutcomeStove_RestartAppIfNecessary() Result passed to the callback (IsRestartRequired)

EStoveBaseMethodCode

Kind Enum · Module Base · Version 3.5.0

Description

Identifies which SDK method generated this result based on the value returned by IStoveResult.MethodCode. It is used for logging and error routing.

Declaration

csharp
public enum EStoveBaseMethodCode
{
    k_EStoveBaseMethodCode_Invalid = -1,
    k_EStoveBaseMethodCode_BaseInitialize = 1,
    // ... See the table of enumerated values below
    k_EStoveBaseMethodCode_GetTranslateLanguage = 119,

    k_EStoveBaseMethodCode_Max = 0x7fffffff
}

Enum Values

Lifecycle / Versioning

CodeNameDescription
-1k_EStoveBaseMethodCode_InvalidNot used
1k_EStoveBaseMethodCode_BaseInitializeStove_Initialize
2k_EStoveBaseMethodCode_BaseUninitializeStove_Uninitialize
5k_EStoveBaseMethodCode_BaseGetVersionStove_GetVersion
6 ~ 63Not in use (reserved section)

Public APIs

CodeNameDescription
64k_EStoveBaseMethodCode_GetAccessTokenStove_GetAccessToken
65k_EStoveBaseMethodCode_AccessTokenRenewedStove_AccessTokenRenewed
66k_EStoveBaseMethodCode_GetUserStove_GetUser
67k_EStoveBaseMethodCode_SetLanguageStove_SetLanguage / Stove_SetLanguageEx
68k_EStoveBaseMethodCode_OverImmersionNotificationStove_OverImmersionNotification
69k_EStoveBaseMethodCode_ShutdownNotificationStove_ShutdownNotification
70, 71Not used (deprecated internal method)
72k_EStoveBaseMethodCode_SetGameProfileStove_SetGameProfile
73k_EStoveBaseMethodCode_GetGdsStove_GetGds
74k_EStoveBaseMethodCode_GetSigninStove_GetSignin
75k_EStoveBaseMethodCode_RestartAppIfNecessaryStove_RestartAppIfNecessary (Scheduled for disposal)
76k_EStoveBaseMethodCode_RestartAppIfNecessaryAsyncAsynchronous processing path for Stove_RestartAppIfNecessary
77k_EStoveBaseMethodCode_OpenExternalUrlStove_OpenExternalUrl
78k_EStoveBaseMethodCode_GetCloudSavingPathStove_GetCloudSavingPath — Exclusive to StoreIndi
79k_EStoveBaseMethodCode_VietnamAgeRatingNotificationStove_VietnamAgeRatingNotification
80k_EStoveBaseMethodCode_VietnamOverimmersionNotificationStove_VietnamOverimmersionNotification
81k_EStoveBaseMethodCode_CloseAllPopupsStove_CloseAllPopups (Single binary integration — Closes both the IAP and View pop-ups)
82 ~ 95Not in use (reserved section)

Private getters (private getters exposed to other SDK modules—not exposed to the game)

CodeNameDescription
115k_EStoveBaseMethodCode_GetEnvPrivatePrivate getter — For use by other SDK modules only; not exposed to the game
116k_EStoveBaseMethodCode_GetGameIdPrivatePrivate getter — For use by other SDK modules only; not exposed to the game
117k_EStoveBaseMethodCode_GetMemberNoPrivatePrivate getter — For use by other SDK modules only; not exposed to the game
118k_EStoveBaseMethodCode_GetPublicIpPrivate getter — For use by other SDK modules only; not exposed to the game
119k_EStoveBaseMethodCode_GetTranslateLanguagePrivate getter — For use by other SDK modules only; not exposed to the game

Other

CodeNameDescription
120 ~ 0x7ffffffeNot in use (reserved section)
0x7fffffffk_EStoveBaseMethodCode_MaxNot used

Values whose names contain Internal (3, 4, 96–108, 110–114) are excluded from the table. 109 is a reserved number that appears in the source without a name, accompanied only by a "Deprecated" comment.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_Initialize();

if (result.MethodCode == (uint)EStoveBaseMethodCode.k_EStoveBaseMethodCode_BaseInitialize)
{
    // Please implement logic to verify that this result was generated by a call to `Stove_Initialize()`.
}

Notes

  • The code for the "Internal" methods starting with line 96 is used for internal SDK operations, such as reporting playtime, configuring the server, and processing tokens, and does not correspond to any APIs that can be called directly from the game.
  • The private getters numbered 115–119 were included in the table because their names do not contain Internal, but they are private APIs exposed only to other SDK modules and are not available in the game.
  • Since IStoveResult.MethodCode is of type uint, it is cast to (uint)EStoveBaseMethodCode.k_... when compared to this enumeration value.
  • In the previous version, there was no underscore in the value name (k_EStoveBaseMethodCodeBaseInitialize). In the current source, an underscore is inserted between the enumeration name and the value name, as in k_EStoveBaseMethodCode_BaseInitialize.

Changelog

VersionChange
3.5.0First Published

See Also


EStoveBaseTypeKind

Kind Enum · Module Base · Version 3.5.0

Description

This is the value that identifies concrete type in the SDK structure. In the new flat C interface, it is used to request a specific parameter object with Stove_CreateParam() and to identify the runtime type with IStoveTypeBase::GetTypeKind().

The C# interface does not have a public function corresponding to Stove_CreateParam(). Parameter structures such as IStoveInitializeParam and IStoveSetGameProfileParam are created directly by the game code as new IStoveXxx { ... }, and this enumeration is used only internally by the SDK during the marshaling process (interoperability with native DLLs).

The value range is 0 to 999.

Declaration

csharp
public enum EStoveBaseTypeKind
{
    k_EStoveBaseTypeKind_Invalid = -1,
    k_EStoveBaseTypeKind_Base = 0,
    // ... See the table of enumerated values below
    k_EStoveBaseTypeKind_SetGameProfileParam = 502,

    k_EStoveBaseTypeKind_Max = 0x7fffffff,
}

Enum Values

Result / Data types (returned by the SDK or passed via callback)

CodeNameDescription
-1k_EStoveBaseTypeKind_InvalidNot used
0k_EStoveBaseTypeKind_BaseThis is an internal type. There is no corresponding public struct in the C# interface.
1k_EStoveBaseTypeKind_StoveResultIStoveResult
2k_EStoveBaseTypeKind_StoveCallbackResultIStoveCallbackResult
3k_EStoveBaseTypeKind_StoveUserIStoveUser
4k_EStoveBaseTypeKind_StoveAccessTokenIStoveAccessToken
5k_EStoveBaseTypeKind_StoveGdsIStoveGds
6k_EStoveBaseTypeKind_StoveSigninIStoveSignin
7k_EStoveBaseTypeKind_StoveOverImmersionInfoIStoveOverImmersionInfo
8k_EStoveBaseTypeKind_StoveVietnamAgeRatingInfoIStoveVietnamAgeRatingInfo
9k_EStoveBaseTypeKind_StoveVietnamOverimmersionInfoIStoveVietnamOverimmersionInfo
10k_EStoveBaseTypeKind_StoveShutdownInfoIStoveShutdownInfo
11k_EStoveBaseTypeKind_StoveRestartAppIfNecessaryOutcomeIStoveRestartAppIfNecessaryOutcome
12 ~ 499Not used (reserved range between the result/data type and the parameter type range)

Parameter types (used internally for parameter marshaling)

CodeNameDescription
500k_EStoveBaseTypeKind_RestartAppIfNecessaryParamIStoveRestartAppIfNecessaryParam
501k_EStoveBaseTypeKind_InitializeParamIStoveInitializeParam
502k_EStoveBaseTypeKind_SetGameProfileParamIStoveSetGameProfileParam
503 ~ 0x7ffffffeNot in use (reserved section)
0x7fffffffk_EStoveBaseTypeKind_MaxNot used

Example

csharp
// The C# game code does not handle this enumeration directly.
// Parameters use value types that are created directly, as shown below.
IStoveSetGameProfileParam gameProfileParam = new IStoveSetGameProfileParam
{
    WorldId = "world_01",
    CharacterNo = 123456789L,
};

Notes

  • In the new flat C interface, this enumeration is used directly in the Stove_CreateParam() call, but since the C# interface lacks a corresponding public constructor, there is rarely a need to reference this enumeration in the game code.
  • The value 500 (k_EStoveBaseTypeKind_RestartAppIfNecessaryParam) has been added, and InitializeParam and SetGameProfileParam have been shifted one position to 501 and 502, respectively; as a result, the numbering differs from the previous format (InitializeParam=500, GameProfileParams=501).
  • StoveOverImmersionInfo(7) and StoveShutdownInfo(10) were previously named StoveOverImmersion and StoveShutdown.

Changelog

VersionChange
3.5.0First Published

See Also


EStoveCommonResultCode

Kind Result Code · Module Base · Version 3.5.0

Description

This is the result code used by all Stove SDK modules. It is retrieved as IStoveResult.ResultCode; a value of 0 (Success) indicates success. The value range is 0–299.

For the dedicated codes reassigned by module-specific bands, see EStoveResultCode (300–503).

Declaration

csharp
public enum EStoveCommonResultCode
{
    k_EStoveCommonResultCode_Success = 0,
    k_EStoveCommonResultCode_Fail = 1,
    // ... See the table of enumerated values below
    k_EStoveCommonResultCode_UnknownError = 255,

    k_EStoveCommonResultCode_Max = 0x7fffffff
}

Enum Values

General Results

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
1k_EStoveCommonResultCode_FailGeneral Failure (Check the logs or ErrorMessage for the specific cause)x

Configuration/Parameter Validation Failed

CodeNameDescriptionShow to UserIn-Game Message
2k_EStoveCommonResultCode_InvalidConfigThe setting is invalid (please verify the setting)x
3k_EStoveCommonResultCode_InvalidLogLevelThe log level value is invalid (Check the log level value)x
4k_EStoveCommonResultCode_InvalidLogPathThe log path is invalid (Check the log path)x
5k_EStoveCommonResultCode_InvalidParamThe parameter is invalid (Check the parameter value in the calling code and correct it).x
6 ~ 15Not in use (reserved section)x

Initialization State Error

CodeNameDescriptionShow to UserIn-Game Message
16k_EStoveCommonResultCode_BaseNotInitializedThe SDK has not been initialized (preceding call Stove_Initialize())x
17k_EStoveCommonResultCode_NotInitializedThis module has not been initialized (initialize this module first)x
18k_EStoveCommonResultCode_AlreadyInitializedIt has already been initialized (removing duplicate initialization calls)x

Token/Entity Error

CodeNameDescriptionShow to UserIn-Game Message
19k_EStoveCommonResultCode_InvalidAccessTokenThe AccessToken is invalid (reissue the token using Stove_GetAccessToken(), etc.)OYour login session has expired. Please close the game and restart it. [OK]
20k_EStoveCommonResultCode_NullTokenEntityThe token entity is null (Check token issuance status)x
21k_EStoveCommonResultCode_NullEntityThe entity is null (Check if the response object is null)x

HTTP/Response Errors

CodeNameDescriptionShow to UserIn-Game Message
22k_EStoveCommonResultCode_HttpErrorAn HTTP error has occurred (Please check your network connection and try again).OThe network connection is unstable. Please check your network status and try again. [OK]
23k_EStoveCommonResultCode_ResponseErrorServer response error (Check server response)OThe network connection is unstable. Please check your network status and try again. [OK]
24k_EStoveCommonResultCode_ResponseInvalidCodeThe server response code is invalid (Check the server response code)OThe network connection is unstable. Please check your network status and try again. [OK]
25k_EStoveCommonResultCode_ResponseValueIsNullThe server response value is null (Check the server response value)OThe network connection is unstable. Please check your network status and try again. [OK]
26k_EStoveCommonResultCode_ResponseInvalidValueFormatThe server response format is invalid (Check the server response format)OThe network connection is unstable. Please check your network status and try again. [OK]

Other Conditions

CodeNameDescriptionShow to UserIn-Game Message
27, 28Not in use (discontinued number)x
29k_EStoveCommonResultCode_AsyncOperationInProgressAn asynchronous operation is already in progress (will be called again after the current asynchronous operation is complete)x
30k_EStoveCommonResultCode_BaseUninitializedThe SDK has already been deactivated (Stove_Uninitialize) (Stove_Initialize() called again)x
31k_EStoveCommonResultCode_NotSupportedCountryThis country/region is not supported (Call terminated after checking country/region restrictions)x
33k_EStoveCommonResultCode_PopupNotCreatedThe popup was closed without being created. This is code intended solely for internal cleanup; it is passed only to the onDestroy callback, and the wrapper intercepts it so that the user's delegate is not called (it is not passed to the game code).x
34k_EStoveCommonResultCode_WebviewClosedBeforeCompleteThe WebView closed before the operation was completed (treat this as a user cancellation and determine whether to retry).OThe purchase was not completed successfully. Please try again. [OK]
32, 35 ~ 39Not in use (reserved section)x

Local DB Failure (Common to All Stove SDK Modules)

CodeNameDescriptionShow to UserIn-Game Message
40k_EStoveCommonResultCode_LocalDbCreateWorkingDirectoryFailedFailed to create the local DB working directory (check directory permissions/path)x
41k_EStoveCommonResultCode_LocalDbConnectFailedFailed to connect to the local database (Retrying)x
42k_EStoveCommonResultCode_LocalDbCreateTableFailedFailed to create a local database table (Retrying)x
43k_EStoveCommonResultCode_LocalDbDisconnectFailedFailed to disconnect from the local database (retrying)x
44k_EStoveCommonResultCode_LocalDbWriteFailedFailed to write to the local database (retrying)x
45 ~ 59Not in use (Reserved range for Local DB/payload/storage)x

Web View/Pop-up UI Failure (Common to All Modules)

CodeNameDescriptionShow to UserIn-Game Message
60k_EStoveCommonResultCode_ViewUiNotInitializedThe Popup/WebView UI subsystem has not been initialized (Check whether View/IAP has been initialized)x
61k_EStoveCommonResultCode_ViewUiUninitFailedFailed to close the Popup/WebView UI subsystem (check the log)x
62k_EStoveCommonResultCode_WebviewCreateFailFailed to create a WebView (Retrying)x
63k_EStoveCommonResultCode_WebviewLoadUrlFailFailed to load the URL in the WebView (Check the URL/network status)x
64k_EStoveCommonResultCode_WebviewCreateCookieFailFailed to set WebView cookies (Retrying)O(View) The page cannot be loaded. Please try again. [OK] (IAP) You must agree to the terms and conditions to make a purchase. We were unable to load the terms and conditions screen. Please try again. [OK]
65k_EStoveCommonResultCode_WebviewCloseAllFailFailed to close all web views/pop-ups (retrying)x
66k_EStoveCommonResultCode_WebviewCloseFailFailed to close the WebView/popup (Retrying)x
67k_EStoveCommonResultCode_NoPopupDataThere is no pop-up data to display (Treated as normal (no pop-up to display)).OThere is no pop-up configuration information, so there is no window to display. [OK]
68k_EStoveCommonResultCode_CloseAllPopupsFailedStove_CloseAllPopups() Failed to close one or more pop-ups (IAP+View combined call) (Retry)x
69 ~ 79Not in use (reserved for WebView/pop-up UI code)x

Parameter/Payload Validation (Common to All Modules)

CodeNameDescriptionShow to UserIn-Game Message
80k_EStoveCommonResultCode_ParameterLengthExceededThe request parameter exceeds the maximum length (Check parameter length)OThe payment information is invalid, so we cannot process the payment. Please try again. [OK]
81k_EStoveCommonResultCode_InvalidJsonStringThe JSON string format is invalid (please check the request payload)OThe payment information is invalid, so we cannot process the payment. Please try again. [OK]
82k_EStoveCommonResultCode_PayloadSizeExceededThe payload exceeds the maximum allowed size (Check payload size)x
83 ~ 248Not in use (reserved section)x

Network Transmission Failure

CodeNameDescriptionShow to UserIn-Game Message
249k_EStoveCommonResultCode_NetworkTransportErrorThis is a network transmission error. The HTTP backend's native error code IStoveCallbackResult.ExternalError is returned (e.g., WinHTTP 12002/12007/12029) (Check the ExternalError value and try again).x
250Not in use (reserved section)x

System/Runtime Failure

CodeNameDescriptionShow to UserIn-Game Message
251k_EStoveCommonResultCode_PcsdkDllNotFoundThe PCSDK DLL cannot be found (Check the PCSDK DLL location)x
252k_EStoveCommonResultCode_NotImplementedThis feature is not implemented (remove the call or check for an alternative API)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unmanaged exception has occurred (check the exception log)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionA managed exception has occurred (check the exception log)OA temporary issue has occurred. Please try again. [OK]
255k_EStoveCommonResultCode_UnknownErrorUnknown error (check detailed log)x
256 ~ 0x7ffffffeNot in use (reserved section)x
0x7fffffffk_EStoveCommonResultCode_MaxNot usedx

If you receive the code below, you must exit the game. The game cannot continue normally.

  • 19 k_EStoveCommonResultCode_InvalidAccessToken — The game has closed due to a expired login session; please restart it.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_Uninitialize();

if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • These are the result codes used in common by all SDK APIs and other SDK modules.
  • The dedicated codes, which have been reorganized by module-specific bands, are defined as EStoveResultCode (300–503), and their numbers do not overlap with this enumeration.
  • The range has significantly expanded with the consolidation into a single binary. In the previous version, this enumeration was defined only up to the 32 range, but now, code for the WebView/pop-up UI (60–68) and parameter/payload validation (80–82), among others, has been incorporated into this enumeration, resulting in values distributed across the entire range from 0 to 255.
  • k_EStoveCommonResultCode_PopupNotCreated(33) is intended solely for internal use and is not passed to user delegates; however, since its name does not include Internal, it has been included in the table.

Changelog

VersionChange
3.5.0Initial release (WebView/pop-up UI compared to the previous version; code for parameter/payload validation incorporated)

See Also


EStoveDiscountType

Kind Enum · Module IAP · Version 3.5.0

Description

This is the value returned by IStoveProduct.DiscountType. It determines whether the value of IStoveProduct.DiscountTypeValue should be interpreted as a percentage or a fixed amount.

Declaration

csharp
public enum EStoveDiscountType
{
    k_EStoveDiscountType_None = 0,
    k_EStoveDiscountType_FixedRate = 1,
    k_EStoveDiscountType_FlatRate = 2,

    k_EStoveDiscountType_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStoveDiscountType_NoneNo discounts
1k_EStoveDiscountType_FixedRatePercentage discount (e.g., if DiscountTypeValue is 10, that’s a 10% discount)
2k_EStoveDiscountType_FlatRateFixed-amount discount (e.g., DiscountTypeValue is a fixed-amount discount in the product's currency)
0x7fffffffk_EStoveDiscountType_MaxNot used

Example

csharp
if (product.DiscountType == EStoveDiscountType.k_EStoveDiscountType_FixedRate)
{
    // Please implement logic that interprets `product.DiscountTypeValue` as a percentage.
}

Notes

  • This value is valid only for products where IStoveProduct.IsDiscounted is true.

See Also


EStoveIAPMethodCode

Kind Enum · Module IAP · Version 3.5.0

Description

Retrieve IStoveResult.MethodCode and identify which payment API generated this result. Use this for logging or error-handling branches.

Values are assigned sequentially within the IAP module block (2000 series).

Declaration

csharp
public enum EStoveIAPMethodCode
{
    k_EStoveIAPMethodCode_Invalid = -1,
    k_EStoveIAPMethodCode_FetchShopCategories = 2000,
    // ... See the table of enumerated values below
    k_EStoveIAPMethodCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveIAPMethodCode_InvalidNot used
2000k_EStoveIAPMethodCode_FetchShopCategoriesStove_FetchShopCategories
2001k_EStoveIAPMethodCode_FetchProductsStove_FetchProducts
2002k_EStoveIAPMethodCode_StartPurchaseStove_StartPurchase
2003k_EStoveIAPMethodCode_ConfirmPurchaseStove_ConfirmPurchase
2004k_EStoveIAPMethodCode_FetchInventoryStove_FetchInventory
2005k_EStoveIAPMethodCode_FetchTermsAgreementStove_FetchTermsAgreement
2006k_EStoveIAPMethodCode_WithdrawGameStove_WithdrawGame — Lost Ark Mobile Exclusive
0x7fffffffk_EStoveIAPMethodCode_MaxNot used

Example

csharp
if (callbackResult.Result.MethodCode == (uint)EStoveIAPMethodCode.k_EStoveIAPMethodCode_StartPurchase)
{
    // This is the result of the Stove_StartPurchase() call.
}

Notes

  • The module-specific EStoveIAPResultCode has been removed. The resulting code has been consolidated into common (EStoveCommonResultCode) and module-specific (EStoveResultCode) enumerations.
  • Since IStoveResult.MethodCode is of type uint, a type cast is required when comparing them.
  • Lifecycle codes such as Initialize, Uninitialize, and GetVersion, which existed prior to the single-binary integration, have been moved to the enumeration on the Base side.

See Also


EStoveIAPTypeKind

Kind Enum · Module IAP · Version 3.5.0

Description

In the Native (C) interface, Stove_CreateParam() is used to create the desired payment parameter object, and IStoveTypeBase::GetTypeKind() is used to determine the object's actual type at runtime.

In C# interfaces, parameters are provided as regular structs (such as IStoveFetchProductsParam), so the caller never uses these values directly. The Interop layer uses these values internally when creating native parameter objects.

The value range is 2000–2999. Within this range, the 2000s represent the result/data types passed by the SDK via callbacks, while the 2500s represent parameter types. Since there are more than 20 values, they are grouped by category.

Declaration

csharp
public enum EStoveIAPTypeKind
{
    k_EStoveIAPTypeKind_Invalid = -1,
    k_EStoveIAPTypeKind_ShopCategory = 2000,
    // ... See the table of enumerated values below
    k_EStoveIAPTypeKind_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveIAPTypeKind_InvalidNot used

Results / Data Types (Passed by the SDK via callback)

CodeNameDescription
2000k_EStoveIAPTypeKind_ShopCategoryIStoveShopCategory — Store Category Entry
2001k_EStoveIAPTypeKind_ProductIStoveProduct — Product Item
2002k_EStoveIAPTypeKind_StartPurchaseOutcomeIStoveStartPurchaseOutcome — Purchase Start Result (renamed from PurchaseResult)
2003k_EStoveIAPTypeKind_PurchasedProductIStovePurchasedProduct — Items with confirmed purchases
2004k_EStoveIAPTypeKind_ChargeInfoIStoveChargeInfo — Payment Currency (Charge) Information
2005k_EStoveIAPTypeKind_InventoryItemIStoveInventoryItem — Inventory (Purchase History) Item
2006Not used (VoidedPurchase — demoted to internal use only)
2007Not in use (The "Refund Inquiry (VoidedPurchasesEx)" function was removed from the source code and remains only as a reservation number)
2008k_EStoveIAPTypeKind_ConfirmPurchaseOutcomeIStoveConfirmPurchaseOutcome — Purchase Confirmation Results
2009k_EStoveIAPTypeKind_WithdrawGameOutcomeIStoveWithdrawGameOutcome — Game Account Deletion Results (Lost Ark Mobile Only)
2010k_EStoveIAPTypeKind_TermsAgreementOutcomeIStoveTermsAgreementOutcome — Terms and Conditions Acceptance Inquiry Results
2011k_EStoveIAPTypeKind_ShopCategoryListIStoveShopCategoryList — List of Store Categories
2012k_EStoveIAPTypeKind_ProductListIStoveProductList — Product List
2013k_EStoveIAPTypeKind_InventoryListIStoveInventoryList — Inventory (Purchase History) List

Parameter Type (Created by the caller using Stove_CreateParam)

CodeNameDescription
2500k_EStoveIAPTypeKind_FetchProductsParamIStoveFetchProductsParam — Product Search Parameters
2501k_EStoveIAPTypeKind_OrderProductParamIStoveOrderProductParam — Order Item Parameters
2502k_EStoveIAPTypeKind_PurchaseParamIStovePurchaseParam — Purchase Action Parameters
2503k_EStoveIAPTypeKind_StartPurchaseParamIStoveStartPurchaseParam — Start Purchase Parameter
2504k_EStoveIAPTypeKind_FetchTermsAgreementParamIStoveFetchTermsAgreementParam — Terms of Service Agreement Lookup Parameter
2505Not used (PaymentParam — demoted to internal use only)
2506k_EStoveIAPTypeKind_WithdrawGameParamIStoveWithdrawGameParam — Game Exit Parameter (Lost Ark Mobile Only)
2507k_EStoveIAPTypeKind_ConfirmPurchaseParamIStoveConfirmPurchaseParam — Purchase Confirmation Parameter
2508Not in use (The "Refund Inquiry (FetchVoidedPurchasesExParam)" function has been removed from the source code and is now listed only by reservation number)
CodeNameDescription
0x7fffffffk_EStoveIAPTypeKind_MaxNot used

The numbers related to VoidedPurchase and PaymentParam have been designated for internal use only and excluded from the table. The numbers related to VoidedPurchasesEx and FetchVoidedPurchasesExParam (2007, 2508) remain only as reservation numbers, as the refund lookup feature itself has been removed from the source code. The VoidedPurchase family of types is not available in the v2 Managed API.

Example

csharp
// The C# interface does not use this value directly, and
// We create and use a struct that corresponds to the following right away.
var fetchProductsParam = new IStoveFetchProductsParam { CategoryId = "", PageIndex = 1, PageSize = 20 };

Notes

  • The TypeKind enumerations for each module—such as Base and IAP—use distinct integer ranges.
  • The 2000 series (results/data types) is not created directly by the caller; it appears only as the type of the value passed to the callback.
  • k_EStoveIAPTypeKind_StartPurchaseOutcome corresponds to IStovePurchaseResult in the old interface. The name has been changed.

See Also


EStoveLocale

Kind Enum · Module Base · Version 3.5.0

Description

This is the PCSDK UI language selector. k_EStoveLocale_System follows the user's OS language.

It is used in the Stove_SetLanguage(EStoveLocale language) overload marked as [Obsolete]. This overload internally converts the value to a string and calls the same native API as Stove_SetLanguageEx(string language).

The Stove_SetLanguage(EStoveLocale) overload that uses this enumeration is marked as [Obsolete("Use Stove_SetLanguageEx(string language) instead.")]. New code must use Stove_SetLanguageEx(string), which accepts a string.

Declaration

csharp
public enum EStoveLocale
{
    k_EStoveLocale_Invalid = -1,

    k_EStoveLocale_System = 0,
    k_EStoveLocale_En = 1,
    k_EStoveLocale_Ko = 2,
    k_EStoveLocale_Ja = 3,
    k_EStoveLocale_ZhCn = 4,
    k_EStoveLocale_ZhTw = 5,
    k_EStoveLocale_De = 6,
    k_EStoveLocale_Fr = 7,
    k_EStoveLocale_Es = 8,
    k_EStoveLocale_Pt = 9,
    k_EStoveLocale_Th = 10,
    k_EStoveLocale_Vi = 11,

    k_EStoveLocale_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveLocale_InvalidNot used
0k_EStoveLocale_SystemFollows the OS language (mapped to the "system" string)
1k_EStoveLocale_EnEnglish ("en")
2k_EStoveLocale_KoKorean ("ko")
3k_EStoveLocale_JaJapanese ("ja")
4k_EStoveLocale_ZhCnSimplified Chinese ("zh-cn")
5k_EStoveLocale_ZhTwTraditional Chinese ("zh-tw")
6k_EStoveLocale_DeGerman ("de")
7k_EStoveLocale_FrFrench ("fr")
8k_EStoveLocale_EsSpanish ("es")
9k_EStoveLocale_PtPortuguese ("pt")
10k_EStoveLocale_ThThai ("th")
11k_EStoveLocale_ViVietnamese ("vi")
0x7fffffffk_EStoveLocale_MaxNot used

Example

csharp
using static Stove.PCSDK.V3.Base;

// New code should use `Stove_SetLanguageEx(string)`.
IStoveResult result = Stove_SetLanguageEx("ko");

Notes

  • EStoveLocale is an enumeration found only in C# interfaces. The new flat C interface has no corresponding enumeration; instead, the language setting is provided as Stove_SetLanguage(), which accepts only a single string (const wchar_t*).
  • In the C# source code (BaseAPIV2.cs), LocaleToString() converts this enumeration value to a lowercase string. The mapping rule is '_' → '-' (e.g., k_EStoveLocale_ZhCn → "zh-cn").
  • k_EStoveLocale_Invalid and k_EStoveLocale_Max are both treated as "system" during conversion.
  • The Stove_SetLanguage(EStoveLocale) API that uses this enumeration is [Obsolete] itself, and new code must use Stove_SetLanguageEx(string).

Changelog

VersionChange
3.5.0First Published

See Also

  • None

EStoveLogMethodCode

Kind Enum · Module Log · Version 3.5.0

Description

This value identifies the API of the logging feature that generated IStoveResult. It can be queried as IStoveResult.MethodCode and is used in log entries or error-handling branches.

The integer range used by this enumeration is 6000 to 6999.

Declaration

csharp
public enum EStoveLogMethodCode
{
    k_EStoveLogMethodCode_Invalid = -1,
    k_EStoveLogMethodCode_SendLog = 6000,
    k_EStoveLogMethodCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveLogMethodCode_InvalidNot used
6000k_EStoveLogMethodCode_SendLogStove_SendLog
0x7fffffffk_EStoveLogMethodCode_MaxNot used

Example

csharp
using static Stove.PCSDK.V3.Log;

void OnSendLogCallback(IStoveCallbackResult callbackResult)
{
    uint methodCode = callbackResult.Result.MethodCode; // k_EStoveLogMethodCode_SendLog
}

Notes

  • Since the log feature has only one public API, Stove_SendLog, it also has only one MethodCode value.
  • The module-specific result code enumeration EStoveLogResultCode from the previous interface has been removed. The cause of failure is identified as IStoveResult.ResultCode, and the values are defined in the module-specific EStoveResultCode or the common EStoveCommonResultCode.

See Also


EStoveLogTypeKind

Kind Enum · Module Log · Version 3.5.0

Description

This is the value that identifies concrete type in the parameter structure handled by the log function.

The integer range used by this enumeration is 6000 to 6999.

Declaration

csharp
public enum EStoveLogTypeKind
{
    k_EStoveLogTypeKind_Invalid = -1,
    k_EStoveLogTypeKind_SendLogParam = 6500,
    k_EStoveLogTypeKind_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveLogTypeKind_InvalidNot used
6500k_EStoveLogTypeKind_SendLogParamIStoveSendLogParam
0x7fffffffk_EStoveLogTypeKind_MaxNot used

Example

csharp
// The C# interface creates and uses the `IStoveSendLogParam` directly, and
// Do not pass this enumeration value directly to an API call.

Notes

  • The log function defines only one parameter type, IStoveSendLogParam, and has no result or data type (the callback passes only IStoveCallbackResult).
  • The range 60006999 is reserved exclusively for Log, so it does not overlap with the TypeKind values of other modules.

See Also


EStoveOverlayMode

Kind Enum · Module Base · Version 3.5.0

Description

This value indicates the display status of regulatory/notification overlays, such as Vietnam age rating notices and excessive use prevention notices.

Queries IStoveVietnamAgeRatingInfo.OverlayMode and IStoveVietnamOverimmersionInfo.OverlayMode (both properties are of type int and hold values from this enumeration).

Declaration

csharp
public enum EStoveOverlayMode
{
    k_EStoveOverlayMode_Invalid = -1,

    k_EStoveOverlayMode_Show = 0,
    k_EStoveOverlayMode_Hide = 1,
    k_EStoveOverlayMode_Expanded = 2,

    k_EStoveOverlayMode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveOverlayMode_InvalidNot used
0k_EStoveOverlayMode_ShowDisplays the overlay
1k_EStoveOverlayMode_HideHide the overlay
2k_EStoveOverlayMode_ExpandedDisplays the overlay in its expanded form
0x7fffffffk_EStoveOverlayMode_MaxNot used

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnVietnamAgeRatingNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamAgeRatingInfo ageRatingInfo)
{
    if (ageRatingInfo.OverlayMode == (int)EStoveOverlayMode.k_EStoveOverlayMode_Show)
    {
        // Please implement the logic to display the overlay.
    }
}

Notes

  • k_EStoveOverlayMode_Expanded is a value used exclusively in the Vietnam Excessive Use Prevention Notice (IStoveVietnamOverimmersionInfo).
  • Since the OverlayMode property is of type int, it is cast to (int)EStoveOverlayMode.k_... when compared with this enumeration value.
  • In the previous version, the value names did not have underscores (k_EStoveOverlayModeInvalid). In the current source, as shown in k_EStoveOverlayMode_Invalid, an underscore is inserted between the enum name and the value name.

Changelog

VersionChange
3.5.0First Published

See Also


EStovePCBangMethodCode

Kind Enum · Module PCBang · Version 3.5.0

Description

This value identifies the API of the PC Bang feature that created IStoveResult. It can be queried as IStoveResult.MethodCode and is used in log entries or error-handling branches.

The integer range used by this enumeration is 3000 to 3999, and values are assigned sequentially according to the public API order.

Declaration

csharp
public enum EStovePCBangMethodCode
{
    k_EStovePCBangMethodCode_Invalid = -1,
    k_EStovePCBangMethodCode_Login = 3000,
    k_EStovePCBangMethodCode_Logout = 3001,
    k_EStovePCBangMethodCode_CheckStatus = 3002,
    k_EStovePCBangMethodCode_RefreshBenefit = 3003,
    k_EStovePCBangMethodCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStovePCBangMethodCode_InvalidNot used
3000k_EStovePCBangMethodCode_LoginThis is the result of the onUserLogin callback for Stove_PCBangLogin.
3001k_EStovePCBangMethodCode_LogoutStove_PCBangLogout
3002k_EStovePCBangMethodCode_CheckStatusStove_PCBangCheckStatus
3003k_EStovePCBangMethodCode_RefreshBenefitThis is the result of the onRefreshBenefit callback for Stove_PCBangLogin.
0x7fffffffk_EStovePCBangMethodCode_MaxNot used

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnRefreshPCBangBenefitCallback(IStoveCallbackResult callbackResult, IStovePCBangBenefitInfo benefitInfo)
{
    uint methodCode = callbackResult.Result.MethodCode; // k_EStovePCBangMethodCode_RefreshBenefit
}

Notes

  • k_EStovePCBangMethodCode_Login and k_EStovePCBangMethodCode_RefreshBenefit both result from a single call to Stove_PCBangLogin, but they are separate pieces of code corresponding to different callbacks (onUserLogin / onRefreshBenefit). onRefreshBenefit is called repeatedly every 4 minutes and is triggered regardless of whether the service is paid or free.
  • The CheckUserStatus API from the previous interface has been renamed to Stove_PCBangCheckStatus.
  • This enumeration does not have any result codes. The cause of failure is identified as IStoveResult.ResultCode, and the values are defined in EStoveResultCode (module-specific) or EStoveCommonResultCode (common). There is no result code enumeration specific to the PC Bang function.

See Also


EStovePCBangPremium

Kind Enum · Module PCBang · Version 3.5.0

Description

This value indicates the premium (paid) subscription status of the logged-in user, PC Bang. IStovePCBangLoginOutcome.PremiumCheck, IStovePCBangBenefitInfo.PremiumCheck, and IStovePCBangStatus.PremiumCheck return this value.

This enumeration does not include separate codes for determining success or failure. k_EStovePCBangPremium_Error indicates a server error or an unrecognizable condition, while the success of the call itself is determined separately using IStoveCallbackResult.Result.IsSuccessful.

Declaration

csharp
public enum EStovePCBangPremium
{
    k_EStovePCBangPremium_Error = -1,
    k_EStovePCBangPremium_Premium = 1,
    k_EStovePCBangPremium_Free = 2,
    k_EStovePCBangPremium_FreeOther = 3,
    k_EStovePCBangPremium_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStovePCBangPremium_ErrorUnable to determine the server error or status.
1k_EStovePCBangPremium_PremiumYou are now eligible for the Premium (paid) PC Bang benefits.
2k_EStovePCBangPremium_FreeYou are currently using the free version.
3k_EStovePCBangPremium_FreeOtherThis is a free service provided by a partner company (third party).
0x7fffffffk_EStovePCBangPremium_MaxNot used

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnPCBangLoginCallback(IStoveCallbackResult callbackResult, IStovePCBangLoginOutcome loginOutcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (loginOutcome.PremiumCheck == EStovePCBangPremium.k_EStovePCBangPremium_Premium)
        {
            // Please implement the logic for premium benefits.
        }
    }
}

Notes

  • This value is returned by all three structures: IStovePCBangLoginOutcome, IStovePCBangBenefitInfo, and IStovePCBangStatus.
  • The benefit renewal callback (onRefreshBenefit) is called every 4 minutes and is triggered not only when the status is k_EStovePCBangPremium_Premium (paid) but also when it is k_EStovePCBangPremium_Free (free).

See Also


EStovePCBangTypeKind

Kind Enum · Module PCBang · Version 3.5.0

Description

This value identifies each concrete type in the result/data structures passed to the asynchronous callback of the PC Bang function. Since the callback in the C# interface already passes data using structures such as concrete type (IStovePCBangLoginOutcome, etc.), no separate accessor is provided to retrieve this value.

The integer range used by this enumeration is 3000 to 3999.

Declaration

csharp
public enum EStovePCBangTypeKind
{
    k_EStovePCBangTypeKind_Invalid = -1,
    k_EStovePCBangTypeKind_StovePCBangLoginOutcome = 3000,
    k_EStovePCBangTypeKind_StovePCBangBenefitInfo = 3001,
    k_EStovePCBangTypeKind_StovePCBangStatus = 3002,
    k_EStovePCBangTypeKind_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStovePCBangTypeKind_InvalidNot used
3000k_EStovePCBangTypeKind_StovePCBangLoginOutcomeIStovePCBangLoginOutcome
3001k_EStovePCBangTypeKind_StovePCBangBenefitInfoIStovePCBangBenefitInfo
3002k_EStovePCBangTypeKind_StovePCBangStatusIStovePCBangStatus
0x7fffffffk_EStovePCBangTypeKind_MaxNot used

Example

csharp
// C# interfaces do not create each struct (such as IStovePCBangLoginOutcome) directly, but rather
// Since the SDK returns this as a callback, do not use this enumeration value directly in API calls.

Notes

  • All values included in this enumeration are result/data types returned by the PC Bang function via a callback; there are no input parameter types defined by the caller (the PC Bang function provides only parameterless APIs).
  • The range 3000–3999 is reserved exclusively for PCBang, so it does not overlap with the TypeKind values of other modules.

See Also


EStoveProductTypeCode

Kind Enum · Module IAP · Version 3.5.0

Description

This is the value returned as IStoveProduct.ProductTypeCode. It indicates the type of product.

Declaration

csharp
public enum EStoveProductTypeCode
{
    k_EStoveProductTypeCode_None = 0,
    k_EStoveProductTypeCode_IndiePackageGameItem = 1,
    k_EStoveProductTypeCode_InGameItem = 2,
    k_EStoveProductTypeCode_PackageItem = 3,

    k_EStoveProductTypeCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStoveProductTypeCode_NoneNot Specified
1k_EStoveProductTypeCode_IndiePackageGameItemIndie Game Bundle Items
2k_EStoveProductTypeCode_InGameItemIn-game items
3k_EStoveProductTypeCode_PackageItemPackage Items
0x7fffffffk_EStoveProductTypeCode_MaxNot used

Example

csharp
if (product.ProductTypeCode == EStoveProductTypeCode.k_EStoveProductTypeCode_InGameItem)
{
    // Please implement the logic for in-game items.
}

Notes

See Also


EStovePurchaseLimitTypeCode

Kind Enum · Module IAP · Version 3.5.0

Description

This is the value returned as IStoveProduct.PurchaseLimitTypeCode. It indicates whether the purchase limit applies per account, per character, or if there is no limit.

Declaration

csharp
public enum EStovePurchaseLimitTypeCode
{
    k_EStovePurchaseLimitTypeCode_None = 0,
    k_EStovePurchaseLimitTypeCode_Unlimited = 1,
    k_EStovePurchaseLimitTypeCode_Member = 2,
    k_EStovePurchaseLimitTypeCode_Character = 3,

    k_EStovePurchaseLimitTypeCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStovePurchaseLimitTypeCode_NoneNo restriction policy has been defined
1k_EStovePurchaseLimitTypeCode_UnlimitedNo limit on the number of purchases
2k_EStovePurchaseLimitTypeCode_MemberAccount (Member) Level Limits
3k_EStovePurchaseLimitTypeCode_CharacterCharacter Limit
0x7fffffffk_EStovePurchaseLimitTypeCode_MaxNot used

Example

csharp
if (product.PurchaseLimitTypeCode == EStovePurchaseLimitTypeCode.k_EStovePurchaseLimitTypeCode_Member)
{
    // Please implement logic to check the account-level purchase limit using `product.PurchaseLimitCount`.
}

Notes

  • If Member, use the value IStoveProduct.MemberQuantity; if Character, use the value IStoveProduct.GuidQuantity to calculate the remaining number of purchases available.

See Also


EStovePurchaseOperation

Kind Enum · Module IAP · Version 3.5.0

Description

Set it to IStovePurchaseParam.Operation, and Stove_StartPurchase determines how the payment page opens and who processes the purchase confirmation.

Declaration

csharp
public enum EStovePurchaseOperation
{
    k_EStovePurchaseOperation_Default = 0,
    k_EStovePurchaseOperation_WithWebView = 1,
    k_EStovePurchaseOperation_WithWebViewAndConfirmResult = 2,

    k_EStovePurchaseOperation_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStovePurchaseOperation_DefaultDo not use Stove Webview. The caller must open the payment page directly using the one-time URL received as a result, and after completing the payment, call Stove_ConfirmPurchase to confirm the purchase.
1k_EStovePurchaseOperation_WithWebViewOpens the Stove payment page within Stove Webview. Even after payment, the caller must call Stove_ConfirmPurchase to confirm the purchase.
2k_EStovePurchaseOperation_WithWebViewAndConfirmResultOpen the Stove payment page within the Stove Webview; upon successful payment, the SDK automatically calls Stove_ConfirmPurchase to return the confirmed purchase result.
0x7fffffffk_EStovePurchaseOperation_MaxNot used

Example

csharp
var purchaseParam = new IStovePurchaseParam
{
    Operation = EStovePurchaseOperation.k_EStovePurchaseOperation_WithWebViewAndConfirmResult
};

Notes

  • The fields related to WebView* (position, size, and display mode) apply only when Operation != Default is true.
  • Depending on the value of Operation, the fields that are populated in the callback result (IStoveStartPurchaseOutcome) of Stove_StartPurchase will vary.

See Also


EStovePurchaseProgress

Kind Enum · Module IAP · Version 3.5.0

Description

This is the value returned as IStoveStartPurchaseOutcome.PurchaseProgress. After receiving the Stove_StartPurchase result, the caller uses it to determine whether to open the payment window directly.

Declaration

csharp
public enum EStovePurchaseProgress
{
    k_EStovePurchaseProgress_None = 0,
    k_EStovePurchaseProgress_NeedPaymentWindow = 1,
    k_EStovePurchaseProgress_NotNeedPaymentWindow = 2,

    k_EStovePurchaseProgress_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStovePurchaseProgress_NoneNo progress
1k_EStovePurchaseProgress_NeedPaymentWindowThe caller must manually open the payment window using the one-time payment URL provided in the response.
2k_EStovePurchaseProgress_NotNeedPaymentWindowThere is no need to open the payment window (the transaction was completed immediately with a 0 won payment, or the payment has already been processed in the web view-based flow).
0x7fffffffk_EStovePurchaseProgress_MaxNot used

Example

csharp
if (outcome.PurchaseProgress == EStovePurchaseProgress.k_EStovePurchaseProgress_NeedPaymentWindow)
{
    string url = outcome.TempPaymentUrl;
    // Please open the payment window using this URL.
}

Notes

  • If you start a purchase with k_EStovePurchaseOperation_Default, NeedPaymentWindow is typically returned.

See Also


EStoveResultCode

Kind Result Code · Module Base · Version 3.5.0

Description

In the global result code dictionary, these are module-specific result codes grouped by range based on the hundreds place (category). Look them up using IStoveResult.ResultCode. 3xx refers to Base (language/GDS/launcher/token/IPC), 4xx refers to WebView/pop-up UI (currently absorbed into EStoveCommonResultCode 60–68, so there are no values in this enumeration), and 5xx refers to IAP order/payment information (only 503 remains).

In a single binary structure, it makes no sense to keep the result codes separate by module, so we have consolidated the code used with the same meaning across multiple modules into this single enumeration. You can identify which module generated a result using MethodCode (module block = code / 1000). For module-specific result codes (0–299), refer to EStoveCommonResultCode.

The previous version of EStoveBaseResultCode (numbers 80–89) has been deleted. Codes with the same meaning have been moved to this enumeration (number 300).

Declaration

csharp
public enum EStoveResultCode
{
    k_EStoveResultCode_LanguageNotSet = 300,
    k_EStoveResultCode_EmptyTranslatedString = 301,
    // ... See the table of enumerated values below
    k_EStoveResultCode_InvalidOrderProductInformation = 503,

    k_EStoveResultCode_Max = 0x7fffffff
}

Enum Values

3xx — Base Language/GDS/Launcher/Token/IPC

CodeNameDescriptionShow to UserIn-Game Message
300k_EStoveResultCode_LanguageNotSetNo language has been set (Set the language to Stove_SetLanguageEx() and try again)x
301k_EStoveResultCode_EmptyTranslatedStringThe translated string is empty (Check the translation data)x
302k_EStoveResultCode_NotFoundRequiredInformationRequired information cannot be found (Check whether required information has been set)x
303k_EStoveResultCode_InvalidGdsInfoThe GDS (Country/Regulatory) information is invalid (Verify GDS information)x
304k_EStoveResultCode_NeedStoveLauncherThe Stove launcher is required but is not running (Restart via the launcher using Stove_RestartAppIfNecessary())OThe game is closing because it is not running through the Stove PC client. Please relaunch the game from the client. If you do not have the client installed, please install it from the Stove website.[OK]
305k_EStoveResultCode_LauncherFailedCreateRequiredFailed to create the required launcher resources (Retrying)x
306k_EStoveResultCode_RenewTokenMaxRetryCountExceededThe number of token renewal retry attempts has been exceeded (prompting a logout and relogin)OThe network connection is unstable. Please check your network status and try again. [OK]
307k_EStoveResultCode_IpcConnectFailedFailed to establish an IPC connection with the launcher (Check the launcher's status and try again)OThe game is closing because it is not running through the Stove PC client. Please launch the game again from the client. If you haven't installed the client, please install it from the Stove website.[OK]
308k_EStoveResultCode_IpcAesKeyNotReceivedThe AES key was not received via IPC (Retry)OThe game is closing because it is not running through the Stove PC client. Please launch the game again from the client. If you don't have the client installed, please install it from the Stove website.[OK]
309k_EStoveResultCode_IpcTimeoutThe IPC communication with the launcher timed out (retrying)OThe game is closing because it is not running through the Stove PC client. Please relaunch the game from the client. If you do not have the client installed, please install it from the Stove website.[OK]
310 ~ 399Not in use (reserved section)x

4xx — Web View/Pop-up UI (Reserved, no current value)

CodeNameDescriptionShow to UserIn-Game Message
400 ~ 499The codes in this range have been absorbed into EStoveCommonResultCode 60–68, so there are no values in this enumeration.x

5xx — IAP Order/Payment Information

CodeNameDescriptionShow to UserIn-Game Message
500 ~ 502EStoveCommonResultCode Has been moved to 80–81x
503k_EStoveResultCode_InvalidOrderProductInformationThe order/product information is invalid (Please check the order parameters)OThe payment information is invalid, so we cannot process the payment. Please try again. [OK]
504 ~ 0x7ffffffeNot in use (reserved section)x
0x7fffffffk_EStoveResultCode_MaxNot usedx

If you receive the code below, you must exit the game. The game cannot proceed normally.

  • 304 k_EStoveResultCode_NeedStoveLauncher — You will need to restart the game after it closes.
  • 307 k_EStoveResultCode_IpcConnectFailed — You will need to restart the game after it closes.
  • 308 k_EStoveResultCode_IpcAesKeyNotReceived — You must restart the game after it ends
  • 309 k_EStoveResultCode_IpcTimeout — You'll need to restart the game after it ends

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_SetLanguageEx("ko");

if (result.ResultCode == (uint)EStoveResultCode.k_EStoveResultCode_LanguageNotSet)
{
    // Please implement the logic to handle the "Language Not Set" error.
}

Notes

  • This is the code resulting from the reorganization by module-specific range (hundreds place). Currently, the only publicly available values are Base (3xx) and IAP (503); the remaining values in the 4xx and 5xx ranges have been absorbed into EStoveCommonResultCode.
  • The previous version of EStoveBaseResultCode (numbers 80–89, Base-only) has been removed, and the corresponding code has been moved to the 300s range of this enumeration. Developers who were referencing the old documentation should migrate to this enumeration.
  • Since IStoveResult.ResultCode is of type uint, it is cast to (uint)EStoveResultCode.k_... when compared with this enumeration value.

Changelog

VersionChange
3.5.0First provided (replaces the old EStoveBaseResultCode)

See Also


EStoveTermsOperation

Kind Enum · Module IAP · Version 3.5.0

Description

Set this to IStoveFetchTermsAgreementParam.Operation; this determines how Stove_FetchTermsAgreement displays the Terms of Service page when the user has not yet agreed to the terms.

Declaration

csharp
public enum EStoveTermsOperation
{
    k_EStoveTermsOperation_Default = 0,
    k_EStoveTermsOperation_WithWebView = 1,

    k_EStoveTermsOperation_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
0k_EStoveTermsOperation_DefaultStove Webview is not used. The caller must open the Terms and Conditions page directly using the one-time URL received as a result.
1k_EStoveTermsOperation_WithWebViewDisplays the Terms and Conditions consent page within Stove Webview
0x7fffffffk_EStoveTermsOperation_MaxNot used

Example

csharp
var termsParam = new IStoveFetchTermsAgreementParam
{
    Operation = EStoveTermsOperation.k_EStoveTermsOperation_WithWebView
};

Notes

  • The fields related to WebView* (position, size, display mode) apply only when Operation != Default is true.

See Also


EStoveViewMethodCode

Kind Enum · Module View · Version 3.5.0

Description

This is a value that identifies the pop-up API that generated IStoveResult. It can be retrieved as IStoveResult.MethodCode and is used in logging or error-handling logic.

The integer range used by this enumeration is 1000 to 1999; the Popup API uses numbers in the 1000 range, and the Popup Management and Utility API uses the numbers that follow in sequence.

Declaration

csharp
public enum EStoveViewMethodCode
{
    k_EStoveViewMethodCode_Invalid = -1,
    k_EStoveViewMethodCode_AutoPopup = 1000,
    // ... See the table of enumerated values below
    k_EStoveViewMethodCode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveViewMethodCode_InvalidNot used
1000k_EStoveViewMethodCode_AutoPopupStove_AutoPopup
1001k_EStoveViewMethodCode_ManualPopupStove_ManualPopup
1002k_EStoveViewMethodCode_NewsPopupStove_NewsPopup
1003k_EStoveViewMethodCode_CouponPopupStove_CouponPopup
1004k_EStoveViewMethodCode_VerifyIdentificationPopupStove_VerifyIdentificationPopup
1005k_EStoveViewMethodCode_SetPopupDisallowedStove_SetPopupDisallowed
0x7fffffffk_EStoveViewMethodCode_MaxNot used

Example

csharp
using static Stove.PCSDK.V3.View;

void OnViewPopupCallback(IStoveCallbackResult callbackResult)
{
    uint methodCode = callbackResult.Result.MethodCode; // k_EStoveViewMethodCode_AutoPopup, etc.
}

Notes

  • The module-specific result code enumeration EStoveViewResultCode from the previous interface has been removed. The cause of failure is identified as IStoveResult.ResultCode, and the values are defined in the module-specific EStoveResultCode or the common EStoveCommonResultCode.
  • Since Stove_CloseAllPopups(), which closes all popups, is a function belonging to Base, it has the MethodCode value of Base rather than this enumeration.
  • Value numbers are organized into blocks by module, so they do not overlap with the MethodCode of other modules. You can also use IStoveResult.SDKName to determine which module produced the result.
  • Even for the same pop-up, the values differ from those in the old interface. The old interface (View_AutoPopup, etc.) returns 81, 83, 85, 87, 91, and 160, while the new interface returns the value in the 1000 range of this enumeration. While using both sets simultaneously, please keep the log aggregation criteria separate for each set.

See Also


EStoveViewTypeKind

Kind Enum · Module View · Version 3.5.0

Description

These are the values that identify each of the concrete type parameter structures and callback passage structures handled by the popup feature. Although the C# API does not handle these values directly—instead, it creates and passes the structures as-is—understanding the range and mapping of these values can be helpful for logging and debugging.

The integer range used by this enumeration is 1000 to 1999. Its numbers do not overlap with those of other modules' TypeKind values.

Declaration

csharp
public enum EStoveViewTypeKind
{
    k_EStoveViewTypeKind_Invalid = -1,
    k_EStoveViewTypeKind_SetPopupDisallowedParam = 1500,
    // ... See the table of enumerated values below
    k_EStoveViewTypeKind_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveViewTypeKind_InvalidNot used
1500k_EStoveViewTypeKind_SetPopupDisallowedParamIStoveSetPopupDisallowedParam
1501k_EStoveViewTypeKind_PopupParamIStovePopupParam
1502k_EStoveViewTypeKind_ManualPopupParamIStoveManualPopupParam
1503k_EStoveViewTypeKind_VerifyIdentificationPopupParamIStoveVerifyIdentificationPopupParam
1504k_EStoveViewTypeKind_VerifyIdentificationPopupDestroyInfoIStoveVerifyIdentificationPopupDestroyInfo
0x7fffffffk_EStoveViewTypeKind_MaxNot used

Example

csharp
// The C# interface creates and uses each struct (such as IStovePopupParam) directly, and
// Do not pass this enumeration value directly to an API call.
var popupParam = new IStovePopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal
};

Notes

  • 1500–1503 correspond to the parameter structures created by the caller and passed to the API, while 1504 corresponds to the structure returned by the SDK as a callback.
  • The type used for the View popup parameter varies by API. Stove_AutoPopup/Stove_NewsPopup/Stove_CouponPopup use IStovePopupParam, Stove_ManualPopup uses IStoveManualPopupParam, and Stove_VerifyIdentificationPopup uses IStoveVerifyIdentificationPopupParam.

See Also


EStoveWebViewMode

Kind Enum · Module Base · Version 3.5.0

Description

This setting in the View SDK and IAP SDK determines whether a web view opens as an external pop-up (the system's default browser) or an internal pop-up (the SDK's built-in web view).

Declaration

csharp
public enum EStoveWebViewMode
{
    k_EStoveWebViewMode_Invalid = -1,

    k_EStoveWebViewMode_External = 0,
    k_EStoveWebViewMode_Internal = 1,

    k_EStoveWebViewMode_Max = 0x7fffffff
}

Enum Values

CodeNameDescription
-1k_EStoveWebViewMode_InvalidNot used
0k_EStoveWebViewMode_ExternalOpens in the system's default browser
1k_EStoveWebViewMode_InternalOpens in the SDK's built-in WebView
0x7fffffffk_EStoveWebViewMode_MaxNot used

Example

csharp
EStoveWebViewMode webViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal;

Notes

  • This value is used to specify how pop-ups are displayed in the payment feature. There is no function in the SDK's own API that directly accepts this value.
  • In the previous version, there was no underscore in the value name (k_EStoveWebViewModeInvalid). In the current source, an underscore is inserted between the enumeration name and the value name, as in k_EStoveWebViewMode_Invalid.

Changelog

VersionChange
3.5.0First Published

See Also

  • None

IStoveAccessToken

Kind Struct · Module Base · Version 3.5.0

Description

This is the token structure of the callback passed when Stove_AccessTokenRenewed() is registered.

Contains the AccessToken value and its remaining validity time. Since it is readonly struct (value type), the garbage collector handles it, so there is no need to release it separately.

Declaration

csharp
public readonly struct IStoveAccessToken
{
    public string AccessToken { get; }
    public int ExpireIn { get; }
}

Members

NameTypeAccessDescription
AccessTokenstringRead (Property)This is the Stove AccessToken value.
ExpireInintRead (Property)This is the remaining validity period (in seconds) of the Stove AccessToken.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnAccessTokenRenewedCallback(IStoveCallbackResult callbackResult, IStoveAccessToken token)
{
    if (callbackResult.Result.IsSuccessful)
    {
        string accessToken = token.AccessToken;
        int expireIn = token.ExpireIn;
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Stove_AccessTokenRenewed(OnAccessTokenRenewedCallback);

Notes

  • After registering Stove_AccessTokenRenewed(), this callback is called whenever the AccessToken is automatically renewed within the SDK.
  • In the previous version, this type was named IStoveToken. In the current source (BaseTypesV2.cs), IStoveToken does not exist and is defined only as IStoveAccessToken.

See Also


IStoveCallbackResult

Kind Struct · Module Base · Version 3.5.0

Description

This is the result passed to the asynchronous callback. It wraps IStoveResult and contains both the detailed error message and the external error value.

It is passed as the first callback argument to callback-based asynchronous APIs such as Stove_AccessTokenRenewed() and Stove_OverImmersionNotification(). Since readonly struct is a value type, it is handled by the garbage collector and does not need to be manually released.

The values passed along with Result are valid only at the time the callback is invoked.

Declaration

csharp
public readonly struct IStoveCallbackResult
{
    public IStoveResult Result { get; }
    public string ErrorMessage { get; }
    public int ExternalError { get; }
}

Members

NameTypeAccessDescription
ResultIStoveResultRead (Property)These are internal results.
ErrorMessagestringRead (Property)This is a detailed message explaining why the error occurred.
ExternalErrorintRead (Property)This is an external error value (HTTP error code or API response code).
WithManagedExceptionMsgAndCode(string exceptionMessage)IStoveCallbackResultMethodIt returns a new IStoveCallbackResult in which Result has been replaced with Result.WithManagedExceptionMsgAndCode(exceptionMessage). ErrorMessage and ExternalError remain unchanged.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnAccessTokenRenewedCallback(IStoveCallbackResult callbackResult, IStoveAccessToken token)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Stove_AccessTokenRenewed(OnAccessTokenRenewedCallback);

Notes

  • It is passed as the first argument to all SDK asynchronous callbacks (OnAccessTokenRenewedCallback, OnOverImmersionNotificationCallback, etc.).
  • The callback runs in the thread that called Stove_RunCallback().
  • In the new flat C interface, IStoveCallbackResult contains a field that returns the userData(void*) passed at the time of the call, but the C# version does not have a corresponding field. Since the C# callback uses a delegate to capture the context as a closure, a separate userData pointer is not required.
  • WithManagedExceptionMsgAndCode() is an internal helper method used by the C# wrapper to convert exceptions that occur during callback marshaling and other operations into the MANAGED_EXCEPTION (254) result. Game code will rarely need to call this method directly.

See Also


IStoveChargeInfo

Kind Struct · Module IAP · Version 3.5.0

Description

Represents a single payment method (Stove Cash, Points, PG, etc.) used for a single purchase. It is passed as an array containing both ChargeInfos from IStoveConfirmPurchaseOutcome (the result of Stove_ConfirmPurchase) and ChargeInfos from IStoveStartPurchaseOutcome (the result of Stove_StartPurchase).

This is a read-only struct (readonly struct) that the SDK populates with values and passes to the callback. The caller does not create it directly. Since it is a value type, the values can be copied and retained for use even after the callback has finished, and there is no need to free them separately.

Declaration

csharp
public readonly struct IStoveChargeInfo
{
    public double ChargeDeductVal { get; }
    public double ChargeDisplayDeductVal { get; }
    public int ChargeType { get; }
    public string ChargeTypeName { get; }
}

Members

NameTypeAccessDescription
ChargeDeductValdoubleReadThe amount actually deducted at the time of payment (based on the billing unit)
ChargeDisplayDeductValdoubleReadCash equivalent value of the deduction amount
ChargeTypeintReadPayment method codes. 98: Stove Cash, 99: Points, Others: PG (payment gateway) payment methods
ChargeTypeNamestringReadLocalized payment method names

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnConfirmPurchaseCallback(IStoveCallbackResult callbackResult, IStoveConfirmPurchaseOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful && outcome.IsConfirmed)
    {
        foreach (var chargeInfo in outcome.ChargeInfos)
        {
            double deductVal = chargeInfo.ChargeDeductVal;
            string typeName = chargeInfo.ChargeTypeName;

            // Please configure the receipt screen using only the necessary values.
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

See Also


IStoveConfirmPurchaseOutcome

Kind Struct · Module IAP · Version 3.5.0

Description

The result of the Stove_ConfirmPurchase call is passed to the OnConfirmPurchaseCallback callback.

This is a read-only struct (readonly struct) that the SDK populates with values and passes to the callback. The caller does not create it directly. Since it is a value type, the values can be copied and retained for use even after the callback has finished, and there is no need to free them separately.

Declaration

csharp
public readonly struct IStoveConfirmPurchaseOutcome
{
    public bool IsConfirmed { get; }
    public IStovePurchasedProduct[] PurchasedProducts { get; }
    public IStoveChargeInfo[] ChargeInfos { get; }
}

Members

NameTypeAccessDescription
IsConfirmedboolReadWhether the purchase has been finalized
PurchasedProductsIStovePurchasedProduct[]ReadList of items included in a confirmed purchase
ChargeInfosIStoveChargeInfo[]ReadList of items by currency (payment method) used for payment

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnConfirmPurchaseCallback(IStoveCallbackResult callbackResult, IStoveConfirmPurchaseOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful && outcome.IsConfirmed)
    {
        foreach (var product in outcome.PurchasedProducts)
        {
            // Please deliver the purchased items.
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

  • It is passed only as the output of Stove_ConfirmPurchase.
  • If IsConfirmed is false, then PurchasedProducts / ChargeInfos may be empty.

See Also


IStoveConfirmPurchaseParam

Kind Struct · Module IAP · Version 3.5.0

Description

This is the input parameter passed when calling Stove_ConfirmPurchase. It is used to confirm the purchase with the transaction master number received from IStoveStartPurchaseOutcome.

This is a standard C# struct (struct) that does not use a constructor. The game code creates it directly in the form of new IStoveConfirmPurchaseParam { ... }, populates it with values, and then passes it to the call. Since it is a value type, it does not need to be explicitly released.

Declaration

csharp
public struct IStoveConfirmPurchaseParam
{
    public long TxnMasterNo { get; set; }
}

Members

NameTypeAccessRequiredDescription
TxnMasterNolongReading and WritingYesTransaction master number received from IStoveStartPurchaseOutcome

Example

csharp
using static Stove.PCSDK.V3.IAP;

var confirmParam = new IStoveConfirmPurchaseParam
{
    TxnMasterNo = txnMasterNo
};

Stove_ConfirmPurchase(confirmParam, OnConfirmPurchaseCallback);

Notes

  • For TxnMasterNo, please use the TxnMasterNo value from IStoveStartPurchaseOutcome, which is the result of Stove_StartPurchase, as is.
  • Purchases that begin with Operation == Default or WithWebView must be finalized using this API after completing the payment in the payment window.

See Also


IStoveFetchProductsParam

Kind Struct · Module IAP · Version 3.5.0

Description

These are the input parameters passed when calling Stove_FetchProducts. They specify the category and page range to query.

This is a standard C# struct (struct) that does not use a constructor. The game code directly creates it in the form of new IStoveFetchProductsParam { ... }, populates it with values, and then passes it to the call. Since it is a value type, there is no need to explicitly free it.

Declaration

csharp
public struct IStoveFetchProductsParam
{
    public string CategoryId { get; set; }
    public uint PageIndex { get; set; }
    public uint PageSize { get; set; }
}

Members

NameTypeAccessRequiredDescription
CategoryIdstringReading and WritingNoCategory ID filter. Leave this field blank to view products from all categories.
PageIndexuintReading and WritingYesPage number (starting at 1)
PageSizeuintReading and WritingYesNumber of products per page

Example

csharp
using static Stove.PCSDK.V3.IAP;

var fetchProductsParam = new IStoveFetchProductsParam
{
    CategoryId = "",
    PageIndex = 1,
    PageSize = 20
};

Stove_FetchProducts(fetchProductsParam, OnFetchProductsCallback);

Notes

See Also


IStoveFetchTermsAgreementParam

Kind Struct · Module IAP · Version 3.5.0

Description

These are the input parameters passed when calling Stove_FetchTermsAgreement. The WebView* field applies only when Operation is not Default.

This is a standard C# struct (struct) that does not use a constructor. The game code creates it directly in the form of new IStoveFetchTermsAgreementParam { ... }, fills it with values, and then passes it to the call. Since it is a value type, there is no need to explicitly free it.

Declaration

csharp
public struct IStoveFetchTermsAgreementParam
{
    public EStoveTermsOperation Operation { get; set; }
    public EStoveWebViewMode WebViewMode { get; set; }
    public int WebViewPosX { get; set; }
    public int WebViewPosY { get; set; }
    public int WebViewWidth { get; set; }
    public int WebViewHeight { get; set; }
}

Members

NameTypeAccessRequiredDescription
OperationEStoveTermsOperationReading and WritingYesMode Selector
WebViewModeEStoveWebViewModeReading and WritingNoWebView display mode. Applies only when Operation != Default.
WebViewPosXintReading and WritingNoWebView x-coordinate (pixels). Applies only when Operation != Default.
WebViewPosYintReading and WritingNoWebView y-coordinate (pixels). Applies only when Operation != Default.
WebViewWidthintReading and WritingNoWebView width (pixels). Applies only when Operation != Default.
WebViewHeightintReading and WritingNoWebView height (pixels). Applies only when Operation != Default.

Example

csharp
using static Stove.PCSDK.V3.IAP;

var termsParam = new IStoveFetchTermsAgreementParam
{
    Operation = EStoveTermsOperation.k_EStoveTermsOperation_WithWebView
};

Stove_FetchTermsAgreement(termsParam, OnFetchTermsAgreementCallback, null);

Notes

  • Operation If this is Default, the WebView* field is ignored.

See Also


IStoveGds

Kind Struct · Module Base · Version 3.5.0

Description

This is the structure for country, regulation, time zone, and language information passed as the ref parameter when making a Stove_GetGds() call.

The country code based on the logged-in user's IP address is provided by default; if the country cannot be determined from the IP address, it is replaced with the default country code (separated by IsDefault). Since it is readonly struct (value type), it is handled by GC and does not need to be manually cleared.

Declaration

csharp
public readonly struct IStoveGds
{
    public bool IsDefault { get; }
    public string Nation { get; }
    public string Regulation { get; }
    public string Timezone { get; }
    public int UtcOffset { get; }
    public string Lang { get; }
}

Members

NameTypeAccessDescription
IsDefaultboolRead (Property)This indicates whether the default country code was used because the country code could not be determined based on the user's IP address. If the country code was determined based on the IP address, this value is false.
NationstringRead (Property)This is the country code (ISO 3166-1 ALPHA-2) of the logged-in user.
RegulationstringRead (Property)This is the name of the regulation that applies based on the country code (e.g., GDPR).
TimezonestringRead (Property)This is the time zone of the logged-in user (IANA Time Zone Database ID, e.g., "Asia/Seoul").
UtcOffsetintRead (Property)This is the UTC offset (in minutes) for the user's time zone.
LangstringRead (Property)This is the language of the logged-in user (ISO 639-1 ALPHA-2). Exceptions: Chinese uses "zh" or "zh-tw," and Indonesian uses "in."

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveGds gds = default;
IStoveResult result = Stove_GetGds(ref gds);

if (result.IsSuccessful)
{
    string nation = gds.Nation;
    string timezone = gds.Timezone;
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • You must call this after initialization with Stove_Initialize() to receive a valid value.
  • Stove_GetGds(ref IStoveGds gds) returns a value via the ref parameter, and the return value is IStoveResult.

See Also


IStoveInitializeParam

Kind Struct · Module Base · Version 3.5.0

Description

Stove_Initialize(IStoveInitializeParam) These are the parameters used to call the Overload. It has only two fields, ShopKey and MainWndHandle, and exists to initialize both the View and IAP modules simultaneously with the SDK initialization following a single binary integration.

It is a general struct (value type), and each field is exposed as a get/set property. Unlike the new flat C interface, the game code creates it directly in new IStoveInitializeParam { ... } format without a constructor and populates its values.

MainWndHandle If this value is not 0, the View module is initialized; if ShopKey is not empty and MainWndHandle is not 0, the IAP module is also initialized (both conditions must be met for the IAP module to be initialized). MainWndHandle is a valid value only after the game’s main window has actually been created.

Declaration

csharp
public struct IStoveInitializeParam
{
    public string ShopKey { get; set; }
    public IntPtr MainWndHandle { get; set; }
}

Members

NameTypeAccessDescription
ShopKeystringRead/Write (Property)This is the IAP store key. Stove_Initialize() will initialize the IAP module only if this value is not empty and MainWndHandle is also set.
MainWndHandleIntPtrRead/Write (Property)This is the game's main window handle (HWND). It is valid only after the window has been created, and if its value is not 0, it initializes the View module. Setting it to IntPtr.Zero skips both the View and IAP initialization.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveInitializeParam initParam = new IStoveInitializeParam
{
    ShopKey = "YOUR_SHOP_KEY",
    MainWndHandle = hWnd,
};

IStoveResult result = Stove_Initialize(initParam);

if (result.IsSuccessful)
{
    // Please implement the logic for the success case.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • In the previous version, the Environment / GameId / AppKey fields were included in this structure. In the current source (BaseTypesV2.cs), these three fields have been removed and moved to IStoveRestartAppIfNecessaryParam. The SDK reuses the value cached in Stove_RestartAppIfNecessary() in Stove_Initialize().
  • The parameterless Stove_Initialize() overload initializes only the SDK; it does not initialize View or IAP.
  • Although the new flat C interface must be created using Stove_CreateParam(k_EStoveBaseTypeKind_InitializeParam) and released using Destroy(), in C# this structure is created and initialized directly as a value type, without calling the creation or release functions.

See Also


IStoveInventoryItem

Kind Struct · Module IAP · Version 3.5.0

Description

Represents a single entry in the user's purchase history. It is passed to the OnFetchInventoryCallback callback as IStoveInventoryList as a result of the Stove_FetchInventory call.

This is a read-only struct (readonly struct) that the SDK populates with values and passes to the callback. The caller does not create it directly. Since it is a value type, the values can be copied and retained for use even after the callback has finished, and there is no need to free them separately.

Declaration

csharp
public readonly struct IStoveInventoryItem
{
    public long TxnMasterNo { get; }
    public long TxnDetailNo { get; }
    public long ProductId { get; }
    public string InserviceItemId { get; }
    public string ProductName { get; }
    public int Quantity { get; }
    public string ThumbnailUrl { get; }
}

Members

NameTypeAccessDescription
TxnMasterNolongReadTransaction Master Number
TxnDetailNolongReadTransaction Detail Number (TID by Product)
ProductIdlongReadPlatform-Specific Product Identifier
InserviceItemIdstringReadIn-game item identifiers mapped to this product
ProductNamestringReadLocalized Product Names
QuantityintReadQuantity Purchased
ThumbnailUrlstringReadProduct Main Thumbnail Image URL

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchInventoryCallback(IStoveCallbackResult callbackResult, IStoveInventoryList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var item in list)
        {
            long productId = item.ProductId;
            int quantity = item.Quantity;

            // Please build the screen using only the necessary values.
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

  • It is passed only as the output of Stove_FetchInventory.
  • When verifying whether game items have been awarded, you must prevent duplicate processing based on TxnDetailNo.

See Also


IStoveInventoryList

Kind Struct · Module IAP · Version 3.5.0

Description

This is a list wrapper IStoveInventoryItem that is passed to the OnFetchInventoryCallback callback as a result of the Stove_FetchInventory call. You can implement IReadOnlyList<IStoveInventoryItem> to iterate through foreach.

This is a read-only structure (readonly struct) owned by the SDK, and it is valid only while the callback is running. It is not created directly by the caller. To preserve it outside the callback, you must copy the item's value.

Since it is a readonly struct (value type), the garbage collector handles it, so there is no need to manually free it.

Declaration

csharp
public readonly struct IStoveInventoryList : IReadOnlyList<IStoveInventoryItem>
{
    // Please refer to the member list below for the members.
}

Members

NameTypeAccessDescription
CountintReadNumber of purchase history entries included in the list
this[int index]IStoveInventoryItemReadAn indexer that accesses items by index
GetEnumerator()StoveReadOnlyArrayEnumerator<IStoveInventoryItem>Returns the unboxed enumerator used in the foreach syntax.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchInventoryCallback(IStoveCallbackResult callbackResult, IStoveInventoryList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var item in list)
        {
            long productId = item.ProductId;
            // Please build the screen using only the necessary values.
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

  • It is passed only as the output of Stove_FetchInventory.
  • Since the callback is invalidated once it ends, you must copy any values you need to continue using outside the callback in advance.
  • Using an unboxed enumerator (StoveReadOnlyArrayEnumerator<T>) prevents heap allocation even when foreach is used.

See Also


IStoveManualPopupParam

Kind Struct · Module View · Version 3.5.0

Description

These are the parameters passed when calling Stove_ManualPopup. They specify the WebView display mode and the resource key used to select the popup content to be displayed.

The caller creates it and passes it as a value to the API. There is no need to explicitly release it (since it is a value type).

Declaration

csharp
public struct IStoveManualPopupParam
{
    public EStoveWebViewMode WebViewMode { get; set; }
    public string ResourceKey { get; set; }
}

Members

NameTypeAccessRequiredDescription
WebViewModeEStoveWebViewModeReading and WritingYThis is the WebView display mode (External / Internal).
ResourceKeystringReading and WritingYA resource key that identifies the manual pop-up to be displayed.

Example

csharp
using static Stove.PCSDK.V3.View;

void OnViewPopupCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult)
{
    // This is called when the popup's native resources are released.
}

var manualPopupParam = new IStoveManualPopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    ResourceKey = "YOUR_RESOURCE_KEY"
};
Stove_ManualPopup(manualPopupParam, OnViewPopupCallback, OnViewPopupDestroyCallback);

Notes

  • The Auto/News/Coupon pop-up uses IStovePopupParam instead of this type (no ResourceKey).

See Also


IStoveOrderProductParam

Kind Struct · Module IAP · Version 3.5.0

Description

These are the order items for each product, stored in an array of size IStoveStartPurchaseParam with Products elements. One item is created for each product to be purchased and passed as an array.

This is a standard C# struct (struct) that does not use a constructor. The game code creates it directly in the form of new IStoveOrderProductParam { ... }, populates it with values, and then uses it. Since it is a value type, there is no need to explicitly free it.

Declaration

csharp
public struct IStoveOrderProductParam
{
    public long ProductId { get; set; }
    public double SalePrice { get; set; }
    public int Quantity { get; set; }
}

Members

NameTypeAccessRequiredDescription
ProductIdlongReading and WritingYesPlatform-specific product identifier. Must match ProductId for IStoveProduct.
SalePricedoubleReading and WritingYesThe unit price (selling price) of this product as observed by the client. The server uses this to check for price discrepancies between the client and the server.
QuantityintReading and WritingYesQuantity to Purchase

Example

csharp
using static Stove.PCSDK.V3.IAP;

var orderProduct = new IStoveOrderProductParam
{
    ProductId = productId,
    SalePrice = salePrice,
    Quantity = 1
};

var startPurchaseParam = new IStoveStartPurchaseParam
{
    Products = new[] { orderProduct },
    // Please refer to the IStoveStartPurchaseParam documentation for information on how to populate the remaining fields, such as PurchaseParam.
};

Stove_StartPurchase(startPurchaseParam, OnStartPurchaseCallback, null);

Notes

  • For SalePrice, please use the same SalePrice value as IStoveProduct. If the values differ, the server may treat this as a price discrepancy.

See Also


IStoveOverImmersionInfo

Kind Struct · Module Base · Version 3.5.0

Description

Stove_OverImmersionNotification() is the structure for the anti-excessive-use notification passed via callback. This API is available exclusively in South Korea.

It contains warning messages, cumulative game playtime, and message display time. Since it is readonly struct (value type), it is handled by the garbage collector and does not need to be manually released.

Declaration

csharp
public readonly struct IStoveOverImmersionInfo
{
    public string Msg { get; }
    public int ElapsedHours { get; }
    public int ExposureTime { get; }
}

Members

NameTypeAccessDescription
MsgstringRead (Property)This is a warning about excessive engagement.
ElapsedHoursintRead (Property)This is the cumulative playtime for the game (in hours).
ExposureTimeintRead (Property)This is the message display time (in seconds).

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnOverImmersionNotificationCallback(IStoveCallbackResult callbackResult, IStoveOverImmersionInfo overImmersion)
{
    if (callbackResult.Result.IsSuccessful)
    {
        string msg = overImmersion.Msg;
        int exposureTime = overImmersion.ExposureTime;
        // Please implement the logic for the success case. (Display `msg` for `exposureTime` seconds.)
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Stove_OverImmersionNotification(OnOverImmersionNotificationCallback);

Notes

  • This API is for use in Korea only and must be called after rendering is complete.
  • ElapsedHours is the unit of time (hour). Be careful not to confuse it with IStoveVietnamOverimmersionInfo.ElapsedMinutes, which are units of minutes.
  • In the previous version, this type was named IStoveOverImmersion and the time field was named ElapsedTime. In the current source (BaseTypesV2.cs), the type name has been changed to IStoveOverImmersionInfo and the field name to ElapsedHours.

See Also


IStovePCBangBenefitInfo

Kind Struct · Module PCBang · Version 3.5.0

Description

This is the updated benefits information that is periodically sent to the onRefreshBenefit callback after a successful login by Stove_PCBangLogin.

This is a value generated by the SDK and passed to the callback. The caller does not create it directly. Since it is a managed value, it can be retained and used even after the callback has finished.

It is called repeatedly every 4 minutes. Since this is not a one-time callback, you must implement the callback with the understanding that it will run every 4 minutes after registration.

Declaration

csharp
public readonly struct IStovePCBangBenefitInfo
{
    public EStovePCBangPremium PremiumCheck { get; }
    public int RemainTime { get; }
}

Members

NameTypeAccessDescription
PremiumCheckEStovePCBangPremiumReadPC Bang This is a Premium status.
RemainTimeintReadTime remaining for paid benefits (in seconds).

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnPCBangLoginCallback(IStoveCallbackResult callbackResult, IStovePCBangLoginOutcome loginOutcome)
{
    // This is called once when the user logs in for the first time.
}

void OnRefreshPCBangBenefitCallback(IStoveCallbackResult callbackResult, IStovePCBangBenefitInfo benefitInfo)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        int remainTime = benefitInfo.RemainTime;
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
}

Stove_PCBangLogin(OnPCBangLoginCallback, OnRefreshPCBangBenefitCallback);

Notes

  • The old (v1) name is StovePCRefreshUserBenefits.
  • This callback is called every 4 minutes and is triggered regardless of whether the account is in Premium or Free status. It is not called only when the account is in Premium status.
  • Calling Stove_PCBangLogout will unregister this callback.

See Also


IStovePCBangLoginOutcome

Kind Struct · Module PCBang · Version 3.5.0

Description

This is the value passed to the onUserLogin callback when the first login for Stove_PCBangLogin is completed.

This is a value generated by the SDK and passed via a callback. It is not created directly by the caller.

Since it is a readonly struct (value type), it is handled by the garbage collector, so there is no need to free it separately. You can keep the value and use it even after the callback has finished.

Declaration

csharp
public readonly struct IStovePCBangLoginOutcome
{
    public EStovePCBangPremium PremiumCheck { get; }
    public int Psn { get; }
    public int RemainTime { get; }
}

Members

NameTypeAccessDescription
PremiumCheckEStovePCBangPremiumReadPC Bang This is a Premium status.
PsnintReadThis is the PC Bang seat/session number (PSN) assigned to the user.
RemainTimeintReadTime remaining for paid benefits (in seconds).

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnPCBangLoginCallback(IStoveCallbackResult callbackResult, IStovePCBangLoginOutcome loginOutcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        int remainTime = loginOutcome.RemainTime;
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

void OnRefreshPCBangBenefitCallback(IStoveCallbackResult callbackResult, IStovePCBangBenefitInfo benefitInfo)
{
    // It is called repeatedly every 4 minutes.
}

Stove_PCBangLogin(OnPCBangLoginCallback, OnRefreshPCBangBenefitCallback);

Notes

  • The old (v1) name is StovePCBangUserLogin.
  • After the initial login, this value is replaced by IStovePCBangBenefitInfo, which is updated and returned every 4 minutes.

See Also


IStovePCBangStatus

Kind Struct · Module PCBang · Version 3.5.0

Description

This is information about the current PC Bang status and the entitlements available to the user, which is returned as the result of the Stove_PCBangCheckStatus call.

This is a value generated by the SDK and passed via a callback. It is not created directly by the caller.

Since it is a readonly struct (value type), the garbage collector handles it, so there is no need to manually free it. You can keep the value and use it even after the callback has finished.

Declaration

csharp
public readonly struct IStovePCBangStatus
{
    public EStovePCBangPremium PremiumCheck { get; }
    public int Psn { get; }
    public int ProductCode { get; }
}

Members

NameTypeAccessDescription
PremiumCheckEStovePCBangPremiumReadPC Bang This is a Premium status.
PsnintReadThis is the PC Bang seat/session number (PSN) assigned to the user.
ProductCodeintReadThere are currently PC Bang product codes available to users.

Example

csharp
using static Stove.PCSDK.V3.PCBang;

void OnPCBangCheckStatusCallback(IStoveCallbackResult callbackResult, IStovePCBangStatus status)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        int productCode = status.ProductCode;
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Stove_PCBangCheckStatus(OnPCBangCheckStatusCallback);

Notes

  • The old (v1) name is StovePCBangStatus.
  • It has a similar field structure to IStovePCBangLoginOutcome, but uses ProductCode instead of RemainTime.

See Also


IStovePopupParam

Kind Struct · Module View · Version 3.5.0

Description

These are parameters used in common by the three APIs: Stove_AutoPopup, Stove_NewsPopup, and Stove_CouponPopup. They are used solely to specify the WebView display mode.

The caller creates it and passes it as a value to the API. There is no need to explicitly release it (value type).

Declaration

csharp
public struct IStovePopupParam
{
    public EStoveWebViewMode WebViewMode { get; set; }
}

Members

NameTypeAccessRequiredDescription
WebViewModeEStoveWebViewModeReading and WritingYThis is the WebView display mode (External / Internal).

Example

csharp
using static Stove.PCSDK.V3.View;

void OnViewPopupCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult)
{
    // This is called when the popup's native resources are released.
}

var popupParam = new IStovePopupParam { WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal };
Stove_AutoPopup(popupParam, OnViewPopupCallback, OnViewPopupDestroyCallback);

Notes

See Also


IStoveProduct

Kind Struct · Module IAP · Version 3.5.0

Description

Represents a single product sold in the store. It is passed to the OnFetchProductsCallback callback as IStoveProductList as a result of the Stove_FetchProducts call.

This is a read-only struct (readonly struct) in which the SDK populates the values and passes them to the callback. The caller does not create it directly. Since it is a value type, the values can be copied and retained for use even after the callback has finished, and there is no need to free them separately. Because it has 32 members, the ## Members section below is grouped by category.

Declaration

csharp
public readonly struct IStoveProduct
{
    // Please refer to the member list below.
}

Members

Basic Information

NameTypeAccessDescription
ProductIdlongReadPlatform-Specific Product Identifier
InserviceItemIdstringReadIn-game item identifiers mapped to this product
ProductNamestringReadLocalized Product Names
ProductDescriptionstringReadLocalized Product Descriptions
QuantityintReadNumber of items awarded for a single purchase of this product
ProductTypeCodeEStoveProductTypeCodeReadProduct Category Code
CategoryIdstringReadThe store category identifier for this product
CategoryNamestringReadThe localized name of the store category to which this product belongs
ThumbnailUrlstringReadProduct Main Thumbnail Image URL

Price

NameTypeAccessDescription
CurrencyCodestringReadISO 4217 currency codes (e.g., "USD", "KRW")
PricedoubleReadList Price Used for Payment Processing
DisplayPricedoubleReadList price displayed on screen (may differ from Price due to rounding, etc.)
StrDisplayPricestringReadDisplay price string with currency format applied
SalePricedoubleReadSelling price used for payment processing (same as Price unless a discount is applied)
DisplaySalePricedoubleReadSelling price displayed on the screen
StrDisplaySalePricestringReadDisplay price string with currency formatting applied

Discount

NameTypeAccessDescription
IsDiscountedboolReadWhether there is a current discount
DiscountTypeEStoveDiscountTypeReadDiscount Calculation Method
DiscountTypeValueintReadDiscount amount. If DiscountType is FixedRate, it is a percentage (e.g., 10 = 10% discount); if it is FlatRate, it is a fixed discount amount based on the product's currency.
DiscountStartDatelongReadDiscount Start Time (UTC epoch milliseconds)
DiscountEndDatelongReadDiscount End Time (UTC epoch milliseconds)

Purchase Quantity and History

NameTypeAccessDescription
TotalQuantityintReadTotal quantity of this product purchased across all categories
MemberQuantityintReadQuantity purchased under the logged-in account (member)
GuidQuantityintReadQuantity purchased within the current character GUID range
HasPurchasedboolReadWhether the user has ever purchased this product
IsWithdrawableboolReadWhether the product is subject to the subscription cancellation (consumer protection refund) policy

Purchase Limits and Sales Period

NameTypeAccessDescription
PurchaseLimitTypeCodeEStovePurchaseLimitTypeCodeReadPurchase Restriction Policy
PurchaseLimitCountintReadPurchase Limit Under Current Policy
SaleLimitCountintReadTotal sales quantity limit for the product (0 means unlimited)
SalesStartDatelongReadStart time of the sales period (UTC epoch milliseconds)
SalesEndDatelongReadEnd time of the sales period (UTC epoch milliseconds)
PurchaseAvailabilityCodeshortReadAvailability codes. 1: Available for purchase, 2: Unavailable for purchase (purchase limit exceeded), 3: Unavailable for purchase (out of stock in the web store), 4: Unavailable for purchase (already claimed in the web store). This set of values may be expanded on the server. It applies to purchase requests for a single unit of a product; results may differ if you request to purchase two or more units at once.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchProductsCallback(IStoveCallbackResult callbackResult, IStoveProductList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var product in list)
        {
            long productId = product.ProductId;
            string productName = product.ProductName;
            double salePrice = product.SalePrice;
            bool onSale = product.IsDiscounted;

            // Please build the screen using only the necessary values.
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

  • It is passed only as the output of Stove_FetchProducts.
  • Please use Price / SalePrice for payment processing (server verification), and DisplayPrice / DisplaySalePrice / StrDisplayPrice / StrDisplaySalePrice for display purposes only.
  • Since the system checks for discrepancies with the price observed by the server at the time of purchase, you must pass the SalePrice value for this product as-is to SalePrice in IStoveOrderProductParam.
  • DiscountStartDate / DiscountEndDate / SalesStartDate / SalesEndDate are all Unix epoch values in milliseconds relative to UTC.

See Also


IStoveProductList

Kind Struct · Module IAP · Version 3.5.0

Description

This is a wrapper for the list of IStoveProduct items passed to the OnFetchProductsCallback callback as a result of the Stove_FetchProducts call. It implements IReadOnlyList<IStoveProduct>, so it can be iterated with foreach.

This is a read-only struct (readonly struct) owned by the SDK, and it is valid only while the callback is executing. It is not created directly by the caller. To preserve it outside the callback, you must copy the item’s value.

Since it is readonly struct (value type), the garbage collector handles it, so there is no need to free it manually.

Declaration

csharp
public readonly struct IStoveProductList : IReadOnlyList<IStoveProduct>
{
    // Please refer to the member list below for a list of members.
}

Members

NameTypeAccessDescription
CountintReadNumber of items in the list
this[int index]IStoveProductReadAn indexer that accesses items via an index
GetEnumerator()StoveReadOnlyArrayEnumerator<IStoveProduct>Returns the unboxed enumerator used in the foreach syntax.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchProductsCallback(IStoveCallbackResult callbackResult, IStoveProductList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var product in list)
        {
            long productId = product.ProductId;
            // Please build the screen using only the necessary values.
        }
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
}

Notes

  • It is passed only as the output of Stove_FetchProducts.
  • Since the callback is invalidated once it ends, you must copy any values you need to continue using outside the callback beforehand.
  • Using an unboxed enumerator (StoveReadOnlyArrayEnumerator<T>) ensures that no heap allocation occurs even when foreach is used.

See Also


IStovePurchasedProduct

Kind Struct · Module IAP · Version 3.5.0

Description

Represents a single item in a completed purchase (transaction). It is passed as an array to both PurchasedProducts from result IStoveConfirmPurchaseOutcome (which is Stove_ConfirmPurchase) and PurchasedProducts from result IStoveStartPurchaseOutcome (which is Stove_StartPurchase).

This is a read-only struct (readonly struct) that the SDK populates with values and passes to the callback. The caller does not create it directly. Since it is a value type, the values can be copied and retained for use even after the callback has finished, and there is no need to free them separately.

Declaration

csharp
public readonly struct IStovePurchasedProduct
{
    public long TxnDetailNo { get; }
    public long ProductId { get; }
    public string CategoryId { get; }
    public int TotalQuantity { get; }
    public int MemberQuantity { get; }
    public int GuidQuantity { get; }
}

Members

NameTypeAccessDescription
TxnDetailNolongReadTransaction Detail Number (TID for each product within the master transaction)
ProductIdlongReadPlatform-Specific Product Identifier
CategoryIdstringReadThe store category identifier for this product
TotalQuantityintReadTotal purchase quantity for this item
MemberQuantityintReadQuantity purchased within the member (account) scope
GuidQuantityintReadQuantity purchased within the current character GUID range

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnConfirmPurchaseCallback(IStoveCallbackResult callbackResult, IStoveConfirmPurchaseOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful && outcome.IsConfirmed)
    {
        foreach (var purchasedProduct in outcome.PurchasedProducts)
        {
            long productId = purchasedProduct.ProductId;
            int totalQuantity = purchasedProduct.TotalQuantity;

            // Please distribute the items using only the required values.
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

See Also


IStovePurchaseParam

Kind Struct · Module IAP · Version 3.5.0

Description

These are options stored in field PurchaseParam of IStoveStartPurchaseParam that determine how Stove_StartPurchase behaves. Field WebView* applies only when Operation is not Default.

This is a standard C# struct (struct) that does not use a constructor. The game code creates it directly in the form new IStovePurchaseParam { ... }, populates it with values, and then uses it. Since it is a value type, there is no need to explicitly free it.

Declaration

csharp
public struct IStovePurchaseParam
{
    public EStovePurchaseOperation Operation { get; set; }
    public EStoveWebViewMode WebViewMode { get; set; }
    public int WebViewPosX { get; set; }
    public int WebViewPosY { get; set; }
    public int WebViewWidth { get; set; }
    public int WebViewHeight { get; set; }
}

Members

NameTypeAccessRequiredDescription
OperationEStovePurchaseOperationReading and WritingYesMode Selector
WebViewModeEStoveWebViewModeReading and WritingNoWebView display mode (external browser / SDK-embedded WebView). Applies only when Operation != Default.
WebViewPosXintReading and WritingNoWebView x-coordinate (pixels). Applies only when Operation != Default.
WebViewPosYintReading and WritingNoWebView y-coordinate (pixels). Applies only when Operation != Default.
WebViewWidthintReading and WritingNoWebView width (pixels). Applies only when Operation != Default.
WebViewHeightintReading and WritingNoWebView height (pixels). Applies only when Operation != Default.

Example

csharp
using static Stove.PCSDK.V3.IAP;

var purchaseParam = new IStovePurchaseParam
{
    Operation = EStovePurchaseOperation.k_EStovePurchaseOperation_WithWebViewAndConfirmResult,
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    WebViewWidth = 480,
    WebViewHeight = 640
};

var startPurchaseParam = new IStoveStartPurchaseParam
{
    // Please refer to the IStoveStartPurchaseParam documentation to fill in the remaining fields, such as "Products."
    PurchaseParam = purchaseParam
};

Stove_StartPurchase(startPurchaseParam, OnStartPurchaseCallback, null);

Notes

  • Operation If this is Default, the WebView* field is ignored.

See Also


IStoveRestartAppIfNecessaryOutcome

Kind Struct · Module Base · Version 3.5.0

Description

Stove_RestartAppIfNecessary() is the result passed to the callback. It is designed so that a single flag (IsRestartRequired), which indicates whether the app should be restarted via the Stove launcher, is wrapped in a domain entity; this ensures that the callback signature remains unchanged even if additional fields are added later.

Since it is a readonly struct (value type), the garbage collector handles it, so there is no need to free it manually.

Declaration

csharp
public readonly struct IStoveRestartAppIfNecessaryOutcome
{
    public bool IsRestartRequired { get; }
}

Members

NameTypeAccessDescription
IsRestartRequiredboolRead (Property)If true, you must relaunch the app via the Stove launcher (the current process must be terminated). If false, you may proceed.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnRestartAppIfNecessaryCallback(IStoveCallbackResult callbackResult, IStoveRestartAppIfNecessaryOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (outcome.IsRestartRequired)
        {
            // Please implement logic that prompts the user to close the app and restart it via the Stove launcher.
        }
        else
        {
            // Please implement the logic to continue the process.
        }
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
}

Notes

  • It is passed as the second argument to the asynchronous callback of Stove_RestartAppIfNecessary().
  • If IsRestartRequired is true but the app continues to run without going through the launcher, subsequent SDK calls may fail.

See Also


IStoveRestartAppIfNecessaryParam

Kind Struct · Module Base · Version 3.5.0

Description

Contains the parameters required for the Stove_RestartAppIfNecessary() call. It provides the environment and game identification information needed to determine whether the app was launched via the Stove launcher and, if not, whether it should be relaunched through the launcher.

It is a generic struct (value type), and each field is exposed as a get/set property. Unlike the new flat C interface, the game code creates it directly in the form of new IStoveRestartAppIfNecessaryParam { ... } without a constructor and populates the values.

Stove_RestartAppIfNecessary() must be called before Stove_Initialize().

Declaration

csharp
public struct IStoveRestartAppIfNecessaryParam
{
    public string Environment { get; set; }
    public string GameId { get; set; }
    public string AppKey { get; set; }
    public uint WaitTimeMilliSec { get; set; }
    public bool LaunchStoveLauncher { get; set; }
    public string PlatformName { get; set; }
}

Members

NameTypeAccessDescription
EnvironmentstringRead/Write (Property)These are the Stove environment values.
GameIdstringRead/Write (Property)This is the Stove game ID.
AppKeystringRead/Write (Property)This is the Stove application key value.
WaitTimeMilliSecuintRead/Write (Property)This is the wait time (in milliseconds) used to determine whether the app was launched via the launcher.
LaunchStoveLauncherboolRead/Write (Property)This setting determines whether to launch the Stove launcher when it is not currently running.
PlatformNamestringRead/Write (Property)This is the platform name. It is a selectable field and should only be specified when integrating with platforms other than Stove (such as Steam). If left blank or set to "Stove", it will operate as a standalone Stove integration.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveRestartAppIfNecessaryParam param = new IStoveRestartAppIfNecessaryParam
{
    Environment = "real",
    GameId = "YOUR_GAME_ID",
    AppKey = "YOUR_APP_KEY",
    WaitTimeMilliSec = 3000,
    LaunchStoveLauncher = true,
    PlatformName = "Stove",
};

void OnRestartAppIfNecessaryCallback(IStoveCallbackResult callbackResult, IStoveRestartAppIfNecessaryOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for when the operation succeeds.
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
}

Stove_RestartAppIfNecessary(param, OnRestartAppIfNecessaryCallback);

Notes

  • Prior to the single binary merger, Environment / GameId / AppKey were all contained within IStoveInitializeParam. In the current source (BaseTypesV2.cs), these fields have been removed from IStoveInitializeParam and moved to this type.
  • The SDK internally caches the Environment/GameId/AppKey values received from Stove_RestartAppIfNecessary() and reuses them when Stove_Initialize() is called.
  • PlatformName is used to specify the IPC path for communicating with the launcher. If the value is left blank or "Stove" is specified, the existing path is used. If you enter an arbitrary value not supported by the launcher, the path will change, causing k_EStoveResultCode_IpcConnectFailed (307) or k_EStoveResultCode_IpcTimeout (309) to occur; therefore, do not configure this unless you plan to integrate with platforms other than Stove.

See Also


IStoveResult

Kind Struct · Module Base · Version 3.5.0

Description

Contains the results of a synchronous API call. It includes the method code that generated the result, the result code, and the managed (C#) exception message.

Most synchronous APIs, such as Stove_Initialize() and Stove_GetUser(), return this type. Since it is a readonly struct (value type), the garbage collector handles it, so there is no need to manually free it.

Declaration

csharp
public readonly struct IStoveResult
{
    public uint MethodCode { get; }
    public uint ResultCode { get; }
    public string ExceptionMessage { get; }

    public bool IsSuccessful => ResultCode == 0;
}

Members

NameTypeAccessDescription
MethodCodeuintRead (Property)This is the globally unique method code that identifies the API that generated this result. The module is divided into blocks of 1,000 units (EStove<Module>MethodCode).
ResultCodeuintRead (Property)Here is the result code. If it is 0 (Success), it means success; if it is not 0, it means failure.
ExceptionMessagestringRead (Property)This is a managed (C#) exception message.
IsSuccessfulboolRead (Calculated Property)This is a success determination property that returns whether ResultCode == 0 is true.
WithManagedExceptionMsgAndCode(string exceptionMessage)IStoveResultMethodReturns a new IStoveResult with ResultCode set to k_EStoveCommonResultCode_ManagedException (254) and ExceptionMessage set to the specified value. MethodCode remains unchanged.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_Uninitialize();

if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • It is used as the return value for synchronous APIs (such as Stove_Initialize and Stove_GetUser) rather than callbacks.
  • ResultCode is either EStoveCommonResultCode (0–299, common across modules) or EStoveResultCode (300–503, module-specific range).
  • You can immediately determine whether the operation was successful using the IsSuccessful property. There is no need to compare the ResultCode value directly.
  • The previous format included the SDKName field and the EStoveBaseResultCode enumeration, but following the consolidation into a single binary, the SDKName field was removed, and the result codes were reorganized into two enumerations: EStoveCommonResultCode (common) / EStoveResultCode (per module).
  • WithManagedExceptionMsgAndCode() is an internal helper method used by the C# wrapper to convert exceptions that occur during callback marshaling and similar operations into the result MANAGED_EXCEPTION (254). Game code rarely needs to call this method directly.

See Also


IStoveSendLogParam

Kind Struct · Module Log · Version 3.5.0

Description

These are the parameters passed when calling Stove_SendLog. They contain account, character, marketing, and server information to be sent to the log backend.

The caller creates it and passes it as a value to the API. There is no need to release it separately (value type).

All string fields are optional, and the default value is null. Setting a field to null means "this field does not apply to this log entry," and the SDK sends this as JSON null (it does not omit the field itself). This is treated as a different value than explicitly specifying an empty string (""). You should only populate the fields relevant to that log entry and leave the rest at their default values (strings: null; numbers: 0). ExternalId and Contents are handled as exceptions by the server; if no value is set, they are sent as an empty string and an empty object, respectively.

Declaration

csharp
public struct IStoveSendLogParam
{
    public long Auid { get; set; }
    public long Cuid { get; set; }
    public string MktType1 { get; set; }
    public string MktId1 { get; set; }
    public string MktType2 { get; set; }
    public string MktId2 { get; set; }
    public string GameVersion { get; set; }
    public string LogGroupId { get; set; }
    public string ServerCode { get; set; }
    public string ServerCodeDetail { get; set; }
    public string LevelCode { get; set; }
    public string LevelCodeDetail { get; set; }
    public string ExternalId { get; set; }
    public string Contents { get; set; }
}

Members

NameTypeAccessRequiredDescription
AuidlongReading and WritingNThis is the account UID (STOVE account identifier).
CuidlongReading and WritingNThis is the character UID (in-game character identifier).
MktType1stringReading and WritingNThis is the name of the integrated third-party marketing service (Slot 1).
MktId1stringReading and WritingNSlot 1: An identifier issued by a third-party marketing service (campaign or referrer ID).
MktType2stringReading and WritingNThis is the name of the integrated third-party marketing service (Slot 2).
MktId2stringReading and WritingNSlot 2 is an identifier issued by a third-party marketing service (campaign/referrer ID).
GameVersionstringReading and WritingNThis is the game client version string (e.g., "1.2.3").
LogGroupIdstringReading and WritingNThis is a correlation ID that groups related log entries together (e.g., logs generated within a single in-game transaction or flow).
ServerCodestringReading and WritingNThis is the server code for the world/region the user is connected to.
ServerCodeDetailstringReading and WritingNServerCode is a detailed server code that identifies a sub-server, channel, or shard under this server.
LevelCodestringReading and WritingNThis is the account level at the time the log was recorded.
LevelCodeDetailstringReading and WritingNThis is the character's level at the time the log was recorded. Although the name includes Detail, this is not a sub-level of LevelCode; rather, it represents a value within the character's level range.
ExternalIdstringReading and WritingNThis identifier is used to link and track user behavior, from ad attribution to in-game actions (Singular, STOVE SDK, Log SDK, and all in-game logs). Games integrated with Singular must pass the SDID (Singular Device ID) to this field.
ContentsstringReading and WritingNThis is free-form log data containing items that cannot be handled by the fields above (typically a JSON document encoded as a string). It corresponds to the action_param field in the legacy 81plug.

Example

csharp
using static Stove.PCSDK.V3.Log;

void OnSendLogCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

var logParam = new IStoveSendLogParam
{
    Auid = 123456789L,
    Cuid = 987654321L,
    LogGroupId = "YOUR_LOG_GROUP_ID",
    Contents = "{\"action\":\"login\"}"
};
Stove_SendLog(logParam, OnSendLogCallback);

Notes

  • MktType1/MktId1 and MktType2/MktId2 are two independent slots. Since they are not in a "primary/alternative" relationship, fill in only the applicable slot.
  • Setting a string field to null versus setting it to an empty string ("") results in different values being sent to the server (null = field not provided, "" = explicit empty value). ExternalId/Contents are exceptions; if left unset, they are sent as an empty string or an empty object, respectively.

See Also


IStoveSetGameProfileParam

Kind Struct · Module Base · Version 3.5.0

Description

This is the game profile information passed when calling Stove_SetGameProfile().

Contains the world identifier and the character number within the world. It is a standard struct (value type), and each field is exposed as a get/set property. Unlike the new flat C interface, the game code creates it directly in the form of new IStoveSetGameProfileParam { ... } without a constructor and populates the values.

In a previous StoveGameProfileParams document, the CharacterNo field was incorrectly labeled as "worldId Length." This field actually represents the character number.

Declaration

csharp
public struct IStoveSetGameProfileParam
{
    public string WorldId { get; set; }
    public long CharacterNo { get; set; }
}

Members

NameTypeAccessDescription
WorldIdstringRead/Write (Property)This is the game's world identifier.
CharacterNolongRead/Write (Property)This is the character number on the server.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveSetGameProfileParam gameProfileParam = new IStoveSetGameProfileParam
{
    WorldId = "world_01",
    CharacterNo = 123456789L,
};

IStoveResult result = Stove_SetGameProfile(gameProfileParam);

if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • Contrary to its name, CharacterNo is a character number, not a string length.
  • Although a new flat C interface must be created using Stove_CreateParam(k_EStoveBaseTypeKind_SetGameProfileParam) and destroyed using Destroy(), in C# this structure is created and initialized directly as a value type, without calling the creation or destruction functions.
  • In the previous version, this type was named IStoveGameProfileParam. In the current source (BaseTypesV2.cs), it has been changed to IStoveSetGameProfileParam (the member composition remains the same).

See Also


IStoveSetPopupDisallowedParam

Kind Struct · Module View · Version 3.5.0

Description

This is the parameter passed when calling Stove_SetPopupDisallowed. It specifies how many days to hide a pop-up.

The caller creates it and passes it as a value to the API. There is no need to release it separately (value type).

Declaration

csharp
public struct IStoveSetPopupDisallowedParam
{
    public uint PopupId { get; set; }
    public uint Days { get; set; }
}

Members

NameTypeAccessRequiredDescription
PopupIduintReading and WritingYThis is the identifier for the pop-up to be hidden.
DaysuintReading and WritingYThe duration for which the pop-up will be hidden (in days).

Example

csharp
using static Stove.PCSDK.V3.View;

void OnSetPopupDisallowedCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

var disallowedParam = new IStoveSetPopupDisallowedParam { PopupId = 1234, Days = 7 };
Stove_SetPopupDisallowed(disallowedParam, OnSetPopupDisallowedCallback);

Notes

  • This is a different type from other View pop-up parameters (such as IStovePopupParam). Be careful not to confuse them.
  • PopupId is not a value obtained through an SDK call. The callbacks for AutoPopup, ManualPopup, NewsPopup, and CouponPopup do not return a popup identifier, and the block status is stored only in the client’s local database—not via a server API. Therefore, the game (or studio) must separately know the identifier assigned when the popup was registered in order to populate this value.

See Also


IStoveShopCategory

Kind Struct · Module IAP · Version 3.5.0

Description

Represents a single item in the store category tree. It is passed to the OnFetchShopCategoriesCallback callback as IStoveShopCategoryList as a result of the Stove_FetchShopCategories call.

This is a read-only struct (readonly struct) that the SDK populates with values and passes to the callback. The caller does not create it directly. Since it is a value type, the values can be copied and retained for use even after the callback has finished, and there is no need to free them separately.

Declaration

csharp
public readonly struct IStoveShopCategory
{
    public string CategoryId { get; }
    public string CategoryParentId { get; }
    public int CategoryDisplayNo { get; }
    public string CategoryName { get; }
    public int CategoryDepth { get; }
}

Members

NameTypeAccessDescription
CategoryIdstringReadCategory Identifier
CategoryParentIdstringReadParent category identifier. The top-level category is empty.
CategoryDisplayNointReadDisplay Order Within the Same Tier
CategoryNamestringReadLocalized category names
CategoryDepthintReadDepth in the category tree (0 = top level)

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchShopCategoriesCallback(IStoveCallbackResult callbackResult, IStoveShopCategoryList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        foreach (var category in list)
        {
            string categoryId = category.CategoryId;
            string categoryName = category.CategoryName;
            int depth = category.CategoryDepth;

            // Please build the screen using only the necessary values.
        }
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
}

Notes

  • It is passed only as the output of Stove_FetchShopCategories.
  • If CategoryParentId is empty, this is the top-level category.
  • IStoveProduct's CategoryId and CategoryName correspond to this entry.

See Also


IStoveShopCategoryList

Kind Struct · Module IAP · Version 3.5.0

Description

This is a list wrapper that contains IStoveShopCategory, which is passed to the OnFetchShopCategoriesCallback callback as a result of the Stove_FetchShopCategories call. You can implement IReadOnlyList<IStoveShopCategory> to iterate over foreach.

This is a read-only structure (readonly struct) owned by the SDK, and it is valid only while the callback is running. The caller does not create it directly. To preserve it outside the callback, you must copy the item's value.

Since it is a readonly struct (value type), the garbage collector handles it, so there is no need to manually free it.

Declaration

csharp
public readonly struct IStoveShopCategoryList : IReadOnlyList<IStoveShopCategory>
{
    // Please refer to the member list below.
}

Members

NameTypeAccessDescription
CountintReadNumber of categories in the list
this[int index]IStoveShopCategoryReadAn indexer that accesses items by index
GetEnumerator()StoveReadOnlyArrayEnumerator<IStoveShopCategory>Returns the unboxed enumerator used in the foreach syntax.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchShopCategoriesCallback(IStoveCallbackResult callbackResult, IStoveShopCategoryList list)
{
    if (callbackResult.Result.IsSuccessful)
    {
        for (int i = 0; i < list.Count; i++)
        {
            IStoveShopCategory category = list[i];
            // Please build the screen using only the necessary values.
        }

        // Alternatively, you can iterate through them using `foreach`.
        foreach (var category in list)
        {
            // ...
        }
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
}

Notes

  • It is passed only as the output of Stove_FetchShopCategories.
  • Since values are discarded once the callback ends, you must copy any values you need to continue using outside the callback in advance.
  • Using an unboxed enumerator (StoveReadOnlyArrayEnumerator<T>) ensures that no heap allocation occurs even when foreach is used.

See Also


IStoveShutdownInfo

Kind Struct · Module Base · Version 3.5.0

Description

Stove_ShutdownNotification() is the shutdown notification structure passed to the callback.

It contains the shutdown message, the message display duration, and the time remaining until shutdown. Since it is readonly struct (value type), it is handled by the garbage collector and does not need to be manually released.

Shutdown notifications are not limited to South Korea—if an account has been shut down, this callback will be triggered even when the account is overseas.

Declaration

csharp
public readonly struct IStoveShutdownInfo
{
    public string Msg { get; }
    public int ExposureTime { get; }
    public int InadvanceMinutes { get; }
}

Members

NameTypeAccessDescription
MsgstringRead (Property)This is a shutdown notification message.
ExposureTimeintRead (Property)This is the duration (in seconds) that the shutdown message is displayed.
InadvanceMinutesintRead (Property)This is the time remaining (in minutes) until the user is logged out.

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnShutdownNotificationCallback(IStoveCallbackResult callbackResult, IStoveShutdownInfo shutdown)
{
    if (callbackResult.Result.IsSuccessful)
    {
        string msg = shutdown.Msg;
        int inadvanceMinutes = shutdown.InadvanceMinutes;
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Stove_ShutdownNotification(OnShutdownNotificationCallback);

Notes

  • If an account is subject to a shutdown, this callback is invoked regardless of the country.
  • This callback is not a one-time event. It is called once each time the server sends a preliminary notification (e.g., 30 minutes before shutdown, 10 minutes before shutdown, etc.) and once more when the actual shutdown time arrives.
  • In the previous version, this type was named IStoveShutdown. In the current source (BaseTypesV2.cs), it has been changed to IStoveShutdownInfo (the member composition remains the same).

See Also


IStoveSignin

Kind Struct · Module Base · Version 3.5.0

Description

This is the structure of the login credentials passed as the ref parameter when calling Stove_GetSignin().

This field contains information on whether identity verification and email verification have been completed, the country of registration, and the authentication method (IDP) used during registration. Since it is readonly struct (value type), GC handles it automatically, so there is no need to disable it separately.

Declaration

csharp
public readonly struct IStoveSignin
{
    public bool IsPersonVerified { get; }
    public bool IsEmailVerified { get; }
    public string RegisteredCountryCode { get; }
    public string ProviderCode { get; }
    public int AccountType { get; }
}

Members

NameTypeAccessDescription
IsPersonVerifiedboolRead (Property)This indicates whether the user has completed identity verification.
IsEmailVerifiedboolRead (Property)This indicates whether the user has completed email verification.
RegisteredCountryCodestringRead (Property)This is the country code for registration on the Stove platform (ISO 3166-1 ALPHA-2).
ProviderCodestringRead (Property)This is an IDP classification code (string) indicating the authentication method used when logging in to Stove. Examples: SO (Stove email), FB (Facebook), GP (Google), STEAM, VTCO, etc.
AccountTypeintRead (Property)This is the account type code (numeric). For example: 2 = Facebook, 3 = Twitter, 6 = Naver, 9 = Google+, 11 = Stove PC sign-up, 12 = Apple, 13 = LINE, 14 = LINE Games, 15 = Steam, 16 = VTCO, etc.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveSignin signin = default;
IStoveResult result = Stove_GetSignin(ref signin);

if (result.IsSuccessful)
{
    bool personVerified = signin.IsPersonVerified;
    string providerCode = signin.ProviderCode;
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • You must call this after initialization with Stove_Initialize() to receive a valid value.
  • AccountType is a numeric code, and ProviderCode is a string code; they represent the same authentication method using different notations.
  • Stove_GetSignin(ref IStoveSignin signin) returns a value via the ref parameter, and the return value is IStoveResult.
  • In the previous version, the member names were PersonVerifyYn / EmailVerifyYn / CountryCd / ProviderCd. In the current source (BaseTypesV2.cs), the names have been changed to IsPersonVerified / IsEmailVerified / RegisteredCountryCode / ProviderCode.

See Also


IStoveStartPurchaseOutcome

Kind Struct · Module IAP · Version 3.5.0

Description

The result of the Stove_StartPurchase call is passed to the OnStartPurchaseCallback callback. Which fields are populated depends on IStovePurchaseParam.Operation (EStovePurchaseOperation).

  • DefaultTempPaymentUrl is filled in for manual payment.
  • WithWebViewAndConfirmResult — If the payment is successful, IsPurchased, PurchasedProducts, and ChargeInfos will be filled in.

This is a read-only struct (readonly struct) that the SDK populates with values and passes to the callback. The caller does not create it directly. Since it is a value type, the values can be copied and retained for use even after the callback has finished, and there is no need to free them separately.

Declaration

csharp
public readonly struct IStoveStartPurchaseOutcome
{
    // Please refer to the member list below.
}

Members

NameTypeAccessDescription
TxnMasterNolongReadTransaction Master Number (TID per purchase)
TxnDetailNoslong[]ReadArrangement of Transaction Detail Numbers by Product
TempPaymentUrlstringReadOne-time payment URL. Provided when Operation == Default.
PurchaseProgressEStovePurchaseProgressReadPurchase Status
IsPurchasedboolReadOperation == WithWebViewAndConfirmResult, and if the payment was successfully completed, true. Otherwise, false.
ExtraDatastringReadThe string ExtraData passed to Stove_StartPurchase is returned exactly as it was.
PurchasedProductsIStovePurchasedProduct[]ReadArray of purchased items. This is Operation == WithWebViewAndConfirmResult and is populated when payment is successful.
ChargeInfosIStoveChargeInfo[]ReadList of items by currency (payment method) used for payment

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnStartPurchaseCallback(IStoveCallbackResult callbackResult, IStoveStartPurchaseOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (outcome.PurchaseProgress == EStovePurchaseProgress.k_EStovePurchaseProgress_NeedPaymentWindow)
        {
            string url = outcome.TempPaymentUrl;
            // Please open the payment window using the URL.
        }
        else if (outcome.IsPurchased)
        {
            foreach (var product in outcome.PurchasedProducts)
            {
                // Please deliver the purchased items.
            }
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

  • In the old interface, it was available under the name IStovePurchaseResult.
  • For purchases starting with Operation == Default or WithWebView, you must call Stove_ConfirmPurchase after payment is complete to finalize the purchase.
  • TxnMasterNo is forwarded as-is to IStoveConfirmPurchaseParam.TxnMasterNo to confirm the purchase.

See Also


IStoveStartPurchaseParam

Kind Struct · Module IAP · Version 3.5.0

Description

These are the input parameters passed when calling Stove_StartPurchase. They contain both the list of items to purchase (IStoveOrderProductParam) and the purchase action options (IStovePurchaseParam).

This is a standard C# struct (struct) that does not use a constructor. The game code creates it directly in the form of new IStoveStartPurchaseParam { ... }, populates it with values, and then passes it to the call. Since it is a value type, there is no need to explicitly free it.

Declaration

csharp
public struct IStoveStartPurchaseParam
{
    public IStoveOrderProductParam[] Products { get; set; }
    public IStovePurchaseParam PurchaseParam { get; set; }
    public string ServiceTxnNo { get; set; }
    public string ExtraData { get; set; }
}

Members

NameTypeAccessRequiredDescription
ProductsIStoveOrderProductParam[]Reading and WritingYesArrangement of Order Items by Product to Be Purchased
PurchaseParamIStovePurchaseParamReading and WritingYesPurchase Behavior Options (Including Web View Placement)
ServiceTxnNostringReading and WritingNoService-side transaction number issued by the game (optional)
ExtraDatastringReading and WritingNoAdditional request data (typically a JSON string; optional). It is returned as-is from IStoveStartPurchaseOutcome to ExtraData.

Example

csharp
using static Stove.PCSDK.V3.IAP;

var orderProduct = new IStoveOrderProductParam
{
    ProductId = productId,
    SalePrice = salePrice,
    Quantity = 1
};

var purchaseParam = new IStovePurchaseParam
{
    Operation = EStovePurchaseOperation.k_EStovePurchaseOperation_WithWebViewAndConfirmResult
};

var startPurchaseParam = new IStoveStartPurchaseParam
{
    Products = new[] { orderProduct },
    PurchaseParam = purchaseParam,
    ExtraData = "{\"orderFrom\":\"shop\"}"
};

Stove_StartPurchase(startPurchaseParam, OnStartPurchaseCallback, null);

Notes

  • ExtraData is returned exactly as ExtraData of IStoveStartPurchaseOutcome. Clients can use this to associate purchase requests with responses.

See Also


IStoveTermsAgreementOutcome

Kind Struct · Module IAP · Version 3.5.0

Description

The result of the Stove_FetchTermsAgreement call is passed to the OnFetchTermsAgreementCallback callback.

This is a read-only struct (readonly struct) that the SDK populates with values and passes to the callback. The caller does not create it directly. Since it is a value type, the values can be copied and retained for use even after the callback completes, and there is no need to explicitly free them.

Declaration

csharp
public readonly struct IStoveTermsAgreementOutcome
{
    public bool IsAgreed { get; }
    public string Url { get; }
}

Members

NameTypeAccessDescription
IsAgreedboolReadWhether the user has already agreed to the current terms and conditions. If true is true, Url is empty.
UrlstringReadThe URL of the terms and conditions page that the caller must open. If IsAgreed is true, this field is empty.

Example

csharp
using static Stove.PCSDK.V3.IAP;

void OnFetchTermsAgreementCallback(IStoveCallbackResult callbackResult, IStoveTermsAgreementOutcome outcome)
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (!outcome.IsAgreed)
        {
            string url = outcome.Url;
            // If Operation == Default, please open the Terms and Conditions page directly via the URL.
        }
        else
        {
            // Please implement the logic for cases where consent has already been given.
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

See Also


IStoveUser

Kind Struct · Module Base · Version 3.5.0

Description

This is the user information structure passed as parameter ref when calling Stove_GetUser().

Contains the username and game user ID of the user logged in to the launcher. Since it is readonly struct (value type), it is handled by the garbage collector and does not need to be manually freed.

Declaration

csharp
public readonly struct IStoveUser
{
    public string NickName { get; }
    public ulong UserId { get; }
}

Members

NameTypeAccessDescription
NickNamestringRead (Property)This is the Stove username of the user logged in to the launcher.
UserIdulongRead (Property)This is the GameUserId of the user logged in to the launcher.

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveUser user = default;
IStoveResult result = Stove_GetUser(ref user);

if (result.IsSuccessful)
{
    string nickName = user.NickName;
    ulong userId = user.UserId;
    // Please implement the logic for the success case.
}
else
{
    // Please implement the logic for when a failure occurs.
}

Notes

  • You must call this after initialization with Stove_Initialize() to receive a valid value.
  • Stove_GetUser(ref IStoveUser user) returns a value to the ref parameter, and the return value is IStoveResult.

See Also


IStoveVerifyIdentificationPopupDestroyInfo

Kind Struct · Module View · Version 3.5.0

Description

This is the value passed to OnVerifyIdentificationPopupDestroyCallback when the Stove_VerifyIdentificationPopup identity verification pop-up closes.

This is a value generated by the SDK and passed via a callback. It is not created directly by the caller.

Since it is a readonly struct (value type), the garbage collector handles it, so there is no need to manually free it. You can keep the value and use it even after the callback has finished.

Declaration

csharp
public readonly struct IStoveVerifyIdentificationPopupDestroyInfo
{
    public string SimKey { get; }
}

Members

NameTypeAccessDescription
SimKeystringReadThis is the SIM key issued after successful identity verification. If verification fails or the key is unavailable, it will be an empty string ("").

Example

csharp
using static Stove.PCSDK.V3.View;

void OnVerifyIdentificationPopupDestroyCallback(IStoveCallbackResult callbackResult, IStoveVerifyIdentificationPopupDestroyInfo info)
{
    if (!string.IsNullOrEmpty(info.SimKey))
    {
        // Please implement the logic for a successful outcome.
        string simKey = info.SimKey;
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Notes

  • If SimKey is an empty string, it should be considered a failure. Failures are not distinguished by a separate error code.

See Also


IStoveVerifyIdentificationPopupParam

Kind Struct · Module View · Version 3.5.0

Description

These are the parameters passed when calling Stove_VerifyIdentificationPopup. They specify the WebView display mode and whether to compare the verified identifier with the logged-in user.

The caller creates it and passes it as a value to the API. There is no need to release it separately (value type).

Declaration

csharp
public struct IStoveVerifyIdentificationPopupParam
{
    public EStoveWebViewMode WebViewMode { get; set; }
    public bool CompareIdentifier { get; set; }
}

Members

NameTypeAccessRequiredDescription
WebViewModeEStoveWebViewModeReading and WritingYThis is the WebView display mode (External / Internal).
CompareIdentifierboolReading and WritingNWhether to compare the verified identifier with the currently logged-in user.

Example

csharp
using static Stove.PCSDK.V3.View;

void OnViewPopupCallback(IStoveCallbackResult callbackResult)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for the success case.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

void OnVerifyIdentificationPopupDestroyCallback(IStoveCallbackResult callbackResult, IStoveVerifyIdentificationPopupDestroyInfo info)
{
    string simKey = info.SimKey;
    // Please implement the logic for when the pop-up closes.
}

var verifyParam = new IStoveVerifyIdentificationPopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    CompareIdentifier = true
};
Stove_VerifyIdentificationPopup(verifyParam, OnViewPopupCallback, OnVerifyIdentificationPopupDestroyCallback);

Notes

See Also


IStoveVietnamAgeRatingInfo

Kind Struct · Module Base · Version 3.5.0

Description

Stove_VietnamAgeRatingNotification() This is the age rating notification overlay information passed via callback. This API is for Vietnam only.

It contains the overlay display status, shape, size/position, game age rating, and notification messages. Since it is readonly struct (value type), the GC handles it, so there is no need to manually release it.

Since this is a one-time callback, it must be called after rendering is complete.

Declaration

csharp
public readonly struct IStoveVietnamAgeRatingInfo
{
    public int OverlayMode { get; }
    public int OverlayType { get; }
    public float OverlayScale { get; }
    public float OverlayOpacity { get; }
    public int AgeRating { get; }
    public string Msg { get; }
    public float DisplayPositionX { get; }
    public float DisplayPositionY { get; }
    public string Language { get; }
}

Members

NameTypeAccessDescription
OverlayModeintRead (Property)The overlay is currently displayed (SHOW: Show overlay, HIDE: Hide overlay). The value is EStoveOverlayMode.
OverlayTypeintRead (Property)This is the overlay type (0 = black, 1 = white).
OverlayScalefloatRead (Property)This is the overlay scale (0.0 to 1.0).
OverlayOpacityfloatRead (Property)This is the overlay opacity (0.0 to 1.0).
AgeRatingintRead (Property)These are the game age ratings (0 = All Ages, 12 = Ages 12 and up, 16 = Ages 16 and up, 18 = Ages 18 and up).
MsgstringRead (Property)This is an age rating notice.
DisplayPositionXfloatRead (Property)The x-coordinate of the message's display position. Relative to the left edge of the screen (0.0 to 1.0).
DisplayPositionYfloatRead (Property)The y-coordinate of the message's display position. Relative to the top of the screen (0.0–1.0).
LanguagestringRead (Property)These are language codes for selecting fonts (e.g., "ko", "en", "ja", "vi", "zh-cn", "zh-tw", "th").

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnVietnamAgeRatingNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamAgeRatingInfo ageRatingInfo)
{
    if (callbackResult.Result.IsSuccessful)
    {
        int overlayMode = ageRatingInfo.OverlayMode;
        string msg = ageRatingInfo.Msg;
        // Please implement the logic for when the operation is successful. (Show/hide the overlay based on `overlayMode`.)
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
}

Stove_VietnamAgeRatingNotification(OnVietnamAgeRatingNotificationCallback);

Notes

  • This API is specific to Vietnam, and since it is a one-time callback, it must be called after rendering is complete.
  • OverlayMode uses the value of EStoveOverlayMode.

See Also


IStoveVietnamOverimmersionInfo

Kind Struct · Module Base · Version 3.5.0

Description

Stove_VietnamOverimmersionNotification() This is the information for the anti-excessive-use notification overlay passed via callback. This API is for Vietnam only.

Contains the overlay display status, shape, size/position, game age rating, and warning messages (general/styled). Since it is readonly struct (value type), the GC handles it, so there is no need to manually disable it.

Since this is a one-time callback, it must be called after rendering is complete.

Declaration

csharp
public readonly struct IStoveVietnamOverimmersionInfo
{
    public int OverlayMode { get; }
    public int OverlayType { get; }
    public float OverlayScale { get; }
    public float OverlayOpacity { get; }
    public int AgeRating { get; }
    public string Msg { get; }
    public string StyledMsg { get; }
    public int ElapsedMinutes { get; }
    public int ExposureTime { get; }
    public float ExpandAnimationTime { get; }
    public float DisplayPositionX { get; }
    public float DisplayPositionY { get; }
    public string Language { get; }
}

Members

NameTypeAccessDescription
OverlayModeintRead (Property)The overlay is currently displayed (SHOW: Show overlay, HIDE: Hide overlay). The value is EStoveOverlayMode.
OverlayTypeintRead (Property)This is the overlay type (0 = black, 1 = white).
OverlayScalefloatRead (Property)This is the overlay scale (0.0 to 1.0).
OverlayOpacityfloatRead (Property)This is the overlay opacity (0.0 to 1.0).
AgeRatingintRead (Property)These are the game age ratings (0 = All Ages, 12 = Ages 12 and up, 16 = Ages 16 and up, 18 = Ages 18 and up).
MsgstringRead (Property)This is a warning about excessive engagement.
StyledMsgstringRead (Property)This is a style (translation) warning message containing markup tags such as <b> and <color=#RRGGBBAA>. It is used for rich text rendering.
ElapsedMinutesintRead (Property)This is the cumulative play time for the game (in minutes).
ExposureTimeintRead (Property)This is the message display time (in seconds).
ExpandAnimationTimefloatRead (Property)This is the duration (in seconds) of the animation that expands the overlay when switching between "Show" and "Expand."
DisplayPositionXfloatRead (Property)The x-coordinate of the message's display position. Measured from the left edge of the screen (0.0 to 1.0).
DisplayPositionYfloatRead (Property)The y-coordinate of the message's display position. Relative to the top of the screen (0.0 to 1.0).
LanguagestringRead (Property)These are language codes for font selection (e.g., "ko", "en", "ja", "vi", "zh-cn", "zh-tw", "th").

Example

csharp
using static Stove.PCSDK.V3.Base;

void OnVietnamOverimmersionNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamOverimmersionInfo overimmersionInfo)
{
    if (callbackResult.Result.IsSuccessful)
    {
        int overlayMode = overimmersionInfo.OverlayMode;
        string styledMsg = overimmersionInfo.StyledMsg;
        // Please implement the logic for when the action is successful. (Show, hide, or expand the overlay depending on the `overlayMode`.)
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
}

Stove_VietnamOverimmersionNotification(OnVietnamOverimmersionNotificationCallback);

Notes

  • This API is specific to Vietnam, and since it is a one-time callback, it must be called after rendering is complete.
  • OverlayMode uses the value EStoveOverlayMode and also supports k_EStoveOverlayMode_Expanded (expanded view).
  • ElapsedMinutes represents minutes. Be careful not to confuse it with IStoveOverImmersionInfo.ElapsedHours, which represent hours.

See Also


Stove_AccessTokenRenewed

Kind Function · Module Base · Version 3.5.0

Description

When the AccessToken is renewed, the newly issued token is passed via a callback. This is used when specific actions need to be taken at the time the token is renewed.

Declaration

csharp
public static void Stove_AccessTokenRenewed(OnAccessTokenRenewedCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnAccessTokenRenewedCallbackNCallback to receive the results

Returns

None

Callback

csharp
public delegate void OnAccessTokenRenewedCallback(IStoveCallbackResult callbackResult, IStoveAccessToken token);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
tokenIStoveAccessTokenInformation on newly issued tokens. Query using the AccessToken and ExpireIn (in seconds) properties.

This callback runs on the thread that called Stove_RunCallback(). It is passed repeatedly each time the AccessToken is renewed.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamonFinished is null (an internal value that is not actually passed because there is no callback) (Check whether a callback has been registered)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass to the callback when an exception occurs in Rapper (check the log)OThere was a temporary issue. Please try again. [OK]
306k_EStoveResultCode_RenewTokenMaxRetryCountExceededThe limit on the number of token renewal retries has been exceeded (lower layer) (prompting a logout and relogin)OThe network connection is unstable. Please check your network status and try again. [OK]

Complete list: EStoveCommonResultCode, EStoveResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_AccessTokenRenewed((callbackResult, token) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        string newAccessToken = token.AccessToken;
        int expireIn = token.ExpireIn;
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This is a callback that is called repeatedly every time the token is renewed. It is not a one-time callback.
  • If you don't need the latest token every time, you can simply look it up using Stove_GetAccessToken as needed.

See Also


Stove_AutoPopup

Kind Function · Module View · Version 3.5.0

Description

Stove_AutoPopup retrieves a list of automatic pop-ups (announcements, events, etc.) from the server and displays them in a web view.

This must be called after the SDK initialization (Stove_Initialize). If there is no popup data to display, the WebView will close without opening.

In all cases where the application terminates without creating any popups (e.g., failure to initialize, no search results, failure to create a web view, etc.), k_EStoveCommonResultCode_PopupNotCreated (33) is passed to onDestroy once. This code serves as an internal cleanup signal and is not passed to onFinished.

Declaration

csharp
public static void Stove_AutoPopup(IStovePopupParam popupParam, OnViewPopupCallback onFinished, OnViewPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStovePopupParamYThis parameter specifies the WebView display mode (WebViewMode).
onFinishedOnViewPopupCallbackYThis is a callback that is called when the popup has finished displaying (or has closed because there is no data to display).
onDestroyOnViewPopupDestroyCallbackNThis is a callback that is called when the pop-up WebView is completely destroyed.

Returns

None (void function)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultHere are the results of the call. Check callbackResult.Result.IsSuccessful to see if it was successful.

onFinished is called once when the display of a popup (or termination due to no data) is confirmed. onDestroy is called once when the WebView has completely disappeared from the screen. Both callbacks run on the thread that called Stove_RunCallback().

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
17k_EStoveCommonResultCode_NotInitializedThe pop-up feature is not initialized (check for a preceding call to Stove_Initialize)x
60k_EStoveCommonResultCode_ViewUiNotInitializedThe pop-up UI subsystem is not initialized (defensive code that does not occur during normal flow) (If this issue occurs, contact SDK Support)x
65k_EStoveCommonResultCode_WebviewCloseAllFailFailed to close all existing WebViews before creating a popup (check logs)x
67k_EStoveCommonResultCode_NoPopupDataThe server query returned 0 results to display in the pop-up (treated as a normal termination).OThere is no pop-up configuration information, so there is no window to display. [OK]
62k_EStoveCommonResultCode_WebviewCreateFailFailed to create WebView (Please retry or check the logs)x
63k_EStoveCommonResultCode_WebviewLoadUrlFailWebView URL Load Failed (Please check your network connection and try again)x
254k_EStoveCommonResultCode_ManagedExceptionPassed as a callback when an exception occurs in the Rapper (check log callbackResult.Result.ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessNormal Exit of WebViewx
66k_EStoveCommonResultCode_WebviewCloseFailFailed to close WebView (Check the log)x
33k_EStoveCommonResultCode_PopupNotCreatedThe WebView was not created and terminated prematurely (internal cleanup signal) (no separate handling required)x
254k_EStoveCommonResultCode_ManagedExceptionPassed as a callback when an exception occurs in the Rapper (see callbackResult.Result.ExceptionMessage log)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStovePopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal
};

Stove_AutoPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
        }
        else
        {
            // Please implement the logic for when an error occurs.
        }
    },
    onDestroy: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
        }
        else
        {
            // Please implement the logic for when an error occurs. (You may ignore Code 33.)
        }
    });

Notes

  • In the Popup API, the onFinished and onDestroy callbacks are called independently. Even if onFinished fails, onDestroy is always called.
  • 33(PopupNotCreated) is a code specific to onDestroy and is never passed to onFinished.

See Also


Stove_CloseAllPopups

Kind Function · Module Base · Version 3.5.0

Description

Closes all pop-ups displayed by the SDK. This applies to both IAP pop-ups and View pop-ups.

Following the integration of the single binary (BaseSDK Consolidation), Stove_IAP_CloseAllPopups() and Stove_View_CloseAllPopups()—which were previously separate for each module—have been replaced by this single function. Now, a single call closes all SDK pop-ups at once.

Declaration

csharp
public static IStoveResult Stove_CloseAllPopups()

Parameters

None

Returns

TypeDescription
IStoveResultCall result. Check whether the call was successful using result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
60k_EStoveCommonResultCode_ViewUiNotInitializedThe pop-up UI subsystem is not initializing (as confirmed by the IAP team) (Check the MainWndHandle setting in Stove_Initialize())x
65k_EStoveCommonResultCode_WebviewCloseAllFailFailed to Close WebViews in Bulk (Based on IAP Findings) (Retry)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPassed as a return value when an exception occurs in Rapper (check the log and retry)OThere was a temporary issue. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_CloseAllPopups();
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • After integrating the single binary, both the IAP pop-up and the View pop-up are closed with a single call.
  • Internally, CloseAllPopups is called for both modules in the order IAP → View; if the IAP fails, the IAP result is returned as-is, and if the IAP succeeds, the View’s result is returned (specific error codes on the View side are outside the scope of this document).

Stove_ConfirmPurchase

Kind Function · Module IAP · Version 3.5.0

Description

If the Operation value of Stove_StartPurchase is not k_EStovePurchaseOperation_WithWebViewAndConfirmResult, call this function after the payment is complete to finalize the purchase. Set confirmPurchaseParam.TxnMasterNo to the IStoveStartPurchaseOutcome.TxnMasterNo value received as a result of Stove_StartPurchase.

The final results are sent via the onFinished callback, along with a list of purchased items and information about the currency (charge) used for payment.

This must be called after initializing the SDK (Stove_Initialize).

Declaration

csharp
public static void Stove_ConfirmPurchase(IStoveConfirmPurchaseParam confirmPurchaseParam, OnConfirmPurchaseCallback onFinished)

Parameters

NameTypeRequiredDescription
confirmPurchaseParamIStoveConfirmPurchaseParamYMaster number (TxnMasterNo) parameter for the transaction to be confirmed
onFinishedOnConfirmPurchaseCallbackYCallback to receive the final results

Returns

None

Callback

csharp
public delegate void OnConfirmPurchaseCallback(IStoveCallbackResult callbackResult, IStoveConfirmPurchaseOutcome outcome);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
outcomeIStoveConfirmPurchaseOutcomeFinal results. Includes IsConfirmed, PurchasedProducts, and ChargeInfos.

It runs in the thread that called Stove_RunCallback(). It is passed only once per call.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
17k_EStoveCommonResultCode_NotInitializedPayment functionality is not initialized (preceding call to Stove_Initialize)x
5k_EStoveCommonResultCode_InvalidParamIf onFinished is null, it is set internally but is not actually passed because there is no callback (for reference only; no separate handling required)x
21k_EStoveCommonResultCode_NullEntityFailure to retrieve language information — The only case where the error is passed directly without being converted to an exception (Retry; if the issue persists, contact the SDK team)x
254k_EStoveCommonResultCode_ManagedExceptionPass an exception as a callback when it occurs in Rapper (log as ExceptionMessage)OA temporary problem has occurred. Please try again. [OK]
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred (check the logs and contact the SDK team)OA temporary issue has occurred. Please try again. [OK]

Complete List: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

// txnMasterNo is the value of IStoveStartPurchaseOutcome.TxnMasterNo in the Stove_StartPurchase() result.
var confirmPurchaseParam = new IStoveConfirmPurchaseParam
{
    TxnMasterNo = txnMasterNo
};

Stove_ConfirmPurchase(confirmPurchaseParam, (callbackResult, outcome) =>
{
    if (callbackResult.Result.IsSuccessful && outcome.IsConfirmed)
    {
        // Please implement the logic for a successful outcome.
        foreach (var purchasedProduct in outcome.PurchasedProducts)
        {
            long productId = purchasedProduct.ProductId;
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This function is asynchronous, and the result is returned only via the onFinished callback.
  • If Operation of Stove_StartPurchase is k_EStovePurchaseOperation_WithWebViewAndConfirmResult, the SDK automatically calls this function, so there is no need to call it separately.
  • Whether outcome.IsConfirmed and callbackResult are successful is a separate matter. Even if the call itself was successful, if IsConfirmed is false, the purchase has not been finalized.

See Also


Stove_CouponPopup

Kind Function · Module View · Version 3.5.0

Description

Stove_CouponPopup retrieves the list of coupon pop-ups from the server and displays it in a web view.

This must be called after initializing the SDK (Stove_Initialize). If there is no popup data to display, the WebView will close without opening.

In all cases where the app exits without creating any popups (e.g., no connection to the world, failed initialization, no search results, failed WebView creation, etc.), k_EStoveCommonResultCode_PopupNotCreated (33) is passed to onDestroy once. This code serves as an internal cleanup signal and is not passed to onFinished.

Declaration

csharp
public static void Stove_CouponPopup(IStovePopupParam popupParam, OnViewPopupCallback onFinished, OnViewPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStovePopupParamYThis parameter specifies the WebView display mode (WebViewMode).
onFinishedOnViewPopupCallbackYThis is a callback that is called when the popup has finished displaying (or has closed because there is no data to display).
onDestroyOnViewPopupDestroyCallbackNThis is a callback that is called when the pop-up WebView is completely destroyed.

Returns

None (void function)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultHere are the results of the call. Check callbackResult.Result.IsSuccessful to see if it was successful.

onFinished is called once when the popup display (or termination due to no data) is confirmed. onDestroy is called once when the WebView has completely disappeared from the screen. Both callbacks run on the thread that called Stove_RunCallback().

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamNot connected to the game server (world) (internal WorldId is an empty string) (Recall after connecting to the game server)x
17k_EStoveCommonResultCode_NotInitializedThe pop-up feature is not initialized (check for a previous call to Stove_Initialize)x
60k_EStoveCommonResultCode_ViewUiNotInitializedThe pop-up UI subsystem is not initialized (defensive code that does not occur during normal flow) (If this issue occurs, please contact the SDK support team)x
65k_EStoveCommonResultCode_WebviewCloseAllFailFailure to close all existing web views before creating a pop-up (check logs)x
62k_EStoveCommonResultCode_WebviewCreateFailFailed to create WebView (Please retry or check the logs)x
63k_EStoveCommonResultCode_WebviewLoadUrlFailWebView URL loading failed (Please check your network connection and try again)x
67k_EStoveCommonResultCode_NoPopupDataThe server query returned 0 coupon pop-ups to display (treated as a normal termination)OThere is no pop-up configuration information, so there is no window to display. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPassed as a callback when an exception occurs in Rapper (check the callbackResult.Result.ExceptionMessage log)OA temporary issue has occurred. Please try again. [OK]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessNormal Exit of WebViewx
66k_EStoveCommonResultCode_WebviewCloseFailFailed to Close WebView (Check Log)x
33k_EStoveCommonResultCode_PopupNotCreatedThe WebView is not created and terminates prematurely (including when not connected to the world, internal cleanup signal) (No separate handling required)x
254k_EStoveCommonResultCode_ManagedExceptionPasses an exception to the callback when it occurs in Rapper (check the callbackResult.Result.ExceptionMessage log)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStovePopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal
};

Stove_CouponPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
        }
        else
        {
            // Please implement the logic for when a failure occurs.
        }
    },
    onDestroy: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
        }
        else
        {
            // Please implement the logic for when an error occurs. (You may ignore Code 33.)
        }
    });

Notes

  • Unlike other pop-up APIs, Stove_CouponPopup verifies whether the user is connected to the game server (world). If called while not connected, it fails with InvalidParam(5).
  • 33(PopupNotCreated) is a code specific to onDestroy and is never passed to onFinished.

See Also


Stove_FetchInventory

Kind Function · Module IAP · Version 3.5.0

Description

Retrieves the purchase history of the currently logged-in user. The list of retrieved inventory items is passed to the onFinished callback.

This must be called after the SDK initialization (Stove_Initialize).

Declaration

csharp
public static void Stove_FetchInventory(OnFetchInventoryCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnFetchInventoryCallbackYCallback to receive the list of inventory items

Returns

None

Callback

csharp
public delegate void OnFetchInventoryCallback(IStoveCallbackResult callbackResult, IStoveInventoryList list);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
listIStoveInventoryListList of Retrieved Inventory Items

It runs in the thread that called Stove_RunCallback(). It is passed only once per call. Since list is owned by the SDK and is invalidated once the callback finishes, you must copy any necessary values within the callback.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
17k_EStoveCommonResultCode_NotInitializedPayment functionality is not initialized (Stove_Initialize was called first)x
5k_EStoveCommonResultCode_InvalidParamIf onFinished is null, it is set internally but is not actually passed because there is no callback (for reference only; no separate handling required)x
254k_EStoveCommonResultCode_ManagedExceptionPass an exception to the callback when an exception occurs in Rapper (logged as ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred (check the logs and contact the SDK team)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

Stove_FetchInventory((callbackResult, list) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for when the operation succeeds.
        foreach (var item in list)
        {
            string productName = item.ProductName;
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This function is asynchronous, and the result is returned only via the onFinished callback.

See Also


Stove_FetchProducts

Kind Function · Module IAP · Version 3.5.0

Description

Retrieves a list of products that match the category ID and page conditions passed as fetchProductParam. The retrieved product list is passed to the onFinished callback.

If you leave the category ID blank, products from all categories will be displayed. To display only products from a specific category, set CategoryId—obtained from Stove_FetchShopCategories—as the filter.

This must be called after the SDK initialization (Stove_Initialize).

Declaration

csharp
public static void Stove_FetchProducts(IStoveFetchProductsParam fetchProductParam, OnFetchProductsCallback onFinished)

Parameters

NameTypeRequiredDescription
fetchProductParamIStoveFetchProductsParamYCategory Filter and Page Condition Parameters
onFinishedOnFetchProductsCallbackYCallback to receive query results

Returns

None

Callback

csharp
public delegate void OnFetchProductsCallback(IStoveCallbackResult callbackResult, IStoveProductList list);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
listIStoveProductListList of Products Found

It runs in the thread that called Stove_RunCallback(). It is passed only once per call. Since list is owned by the SDK and is invalidated once the callback completes, you must copy any necessary values within the callback.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
17k_EStoveCommonResultCode_NotInitializedPayment functionality is not initialized (Stove_Initialize was called first)x
5k_EStoveCommonResultCode_InvalidParamIf onFinished is null, this code is set internally, but since there is no callback, it is not actually passed to the calling code (for reference only; no separate handling required).x
254k_EStoveCommonResultCode_ManagedExceptionPass an exception to the callback when it occurs in Rapper (log as ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred (check the logs and contact the SDK team)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

var fetchProductParam = new IStoveFetchProductsParam
{
    CategoryId = string.Empty,
    PageIndex = 1,
    PageSize = 20
};

Stove_FetchProducts(fetchProductParam, (callbackResult, list) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        foreach (var product in list)
        {
            long productId = product.ProductId;
            string productName = product.ProductName;
        }
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
});

Notes

  • This call performs the extended operation for retrieving a product list (corresponding to the Ex variant in the old interface).
  • This function is asynchronous, and the result is returned only via the onFinished callback.
  • Since fetchProductParam is a regular struct, its values are simply filled in and passed as-is, without the need for separate creation or destruction APIs.
  • The ProductId for the retrieved product is used as the product identifier for the order line item when calling Stove_StartPurchase.
  • The DiscountStartDate/DiscountEndDate/SalesStartDate/SalesEndDate values for IStoveProduct are all Unix epoch values in milliseconds relative to UTC.

See Also


Stove_FetchShopCategories

Kind Function · Module IAP · Version 3.5.0

Description

Stove_FetchShopCategories retrieves the list of categories registered in the game store in a tree structure. Each category contains information on its parent category ID, display order, and tree depth, allowing the store UI to be organized hierarchically.

This must be called after the SDK initialization (Stove_Initialize).

Declaration

csharp
public static void Stove_FetchShopCategories(OnFetchShopCategoriesCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnFetchShopCategoriesCallbackYCallback to receive the query results

Returns

None

Callback

csharp
public delegate void OnFetchShopCategoriesCallback(IStoveCallbackResult callbackResult, IStoveShopCategoryList list);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
listIStoveShopCategoryListList of Categories Found

This runs in the thread that called Stove_RunCallback(). It is passed only once per call. Since list is owned by the SDK and is invalidated once the callback completes, you must copy any necessary values within the callback.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
17k_EStoveCommonResultCode_NotInitializedPayment functionality is not initialized (preceding call Stove_Initialize)x
5k_EStoveCommonResultCode_InvalidParamIf onFinished is equal to null, this code is set internally, but since there is no callback, it is not actually passed to the calling side (for reference only; no separate handling required).x
254k_EStoveCommonResultCode_ManagedExceptionPass an exception to the callback when it occurs in the Rapper (log as ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred (check the logs and contact the SDK team)OA temporary issue has occurred. Please try again. [OK]

Complete List: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

Stove_FetchShopCategories((callbackResult, list) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        foreach (var category in list)
        {
            // Use `category.CategoryId`, `category.CategoryName`, and so on.
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This function is asynchronous, and the result is returned only via the onFinished callback.
  • CategoryId in the category you viewed can be used as a IStoveFetchProductsParam.CategoryId filter for Stove_FetchProducts.

See Also


Stove_FetchTermsAgreement

Kind Function · Module IAP · Version 3.5.0

Description

Checks whether the user has agreed to the current terms and conditions. If the user has already agreed, outcome.IsAgreed—which is passed as onFinished—is true, and outcome.Url is empty. If the user has not agreed, the behavior varies depending on the value of termsParam.Operation (EStoveTermsOperation).

  • k_EStoveTermsOperation_Default: The caller must open the terms and conditions page directly using outcome.Url, which is passed to onFinished.
  • k_EStoveTermsOperation_WithWebView: The SDK displays the Terms and Conditions page directly in Stove Webview.

This must be called after initializing the SDK (Stove_Initialize).

Declaration

csharp
public static void Stove_FetchTermsAgreement(IStoveFetchTermsAgreementParam termsParam, OnFetchTermsAgreementCallback onFinished, OnIAPPopupDestroyCallback onDestroy)

Parameters

NameTypeRequiredDescription
termsParamIStoveFetchTermsAgreementParamYTerms and Conditions Lookup: Action and WebView Layout Parameters
onFinishedOnFetchTermsAgreementCallbackYCallback to receive consent status and the URL for the terms and conditions
onDestroyOnIAPPopupDestroyCallbackNA callback that is triggered when all pop-ups created by this call have been closed

Returns

None

Callback

csharp
public delegate void OnFetchTermsAgreementCallback(IStoveCallbackResult callbackResult, IStoveTermsAgreementOutcome outcome);
public delegate void OnIAPPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
outcomeIStoveTermsAgreementOutcomeIncludes IsAgreed (consent status) and Url (terms and conditions page URL; an empty string if consent has already been given)

It runs in the thread that called Stove_RunCallback().

  • onFinished is passed only once per call.
  • If a WebView is opened at onDestroy and then at Operation == WithWebView, this event is fired after the WebView is closed. Even if the WebView is terminated without ever being created, this event is fired once along with PopupNotCreated (33).

Error Codes

CallbackCodeNameDescriptionShow to UserIn-Game Message
onFinished0k_EStoveCommonResultCode_SuccessSuccess (including cases where consent has already been given)x
onFinished17k_EStoveCommonResultCode_NotInitializedPayment functionality is not initialized (preceding call Stove_Initialize)x
onFinished5k_EStoveCommonResultCode_InvalidParamIf onFinished is null, it is set internally but is not actually passed because there is no callback (for reference only; no separate handling required)x
onFinished60k_EStoveCommonResultCode_ViewUiNotInitializedThe terms page must be opened in a WebView, but the View UI is not initialized (contact the SDK team)x
onFinished65k_EStoveCommonResultCode_WebviewCloseAllFailFailed to clean up the existing WebView before opening a new one (retrying)x
onFinished62k_EStoveCommonResultCode_WebviewCreateFailFailed to create Terms and Conditions WebView (Retrying)x
onFinished64k_EStoveCommonResultCode_WebviewCreateCookieFailFailed to set language cookie (Retrying)OYou must agree to the terms and conditions to complete your purchase. We were unable to load the terms and conditions screen. Please try again. [OK]
onFinished63k_EStoveCommonResultCode_WebviewLoadUrlFailFailed to load the URL in the Terms and Conditions WebView (Retrying)x
onFinished254k_EStoveCommonResultCode_ManagedExceptionPass an exception to the callback when it occurs in Rapper (logged as ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]
onFinished253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred (Check the logs and contact the SDK team)OA temporary problem has occurred. Please try again. [OK]
onDestroy33k_EStoveCommonResultCode_PopupNotCreatedOne call in an early failure path where the WebView was never created and the process terminated (can be ignored)x
onDestroy66k_EStoveCommonResultCode_WebviewCloseFailFailure to close WebView internally upon normal termination (logged for reference)x

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

var termsParam = new IStoveFetchTermsAgreementParam
{
    Operation = EStoveTermsOperation.k_EStoveTermsOperation_Default
};

Stove_FetchTermsAgreement(termsParam,
    (callbackResult, outcome) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
            if (!outcome.IsAgreed)
            {
                // Please open the Terms and Conditions page at outcome.Url.
            }
        }
        else
        {
            // Please implement the logic for when a failure occurs.
        }
    },
    (callbackResult) =>
    {
        // Please implement the logic that runs when all the Terms and Conditions page pop-ups have been closed.
    });

Notes

  • This function is asynchronous, and the result is returned only via the onFinished callback.
  • If the user has already agreed to the terms and conditions, the process will end immediately with a success status (IsAgreed = true) without displaying a pop-up. This is a normal flow, not an error code.
  • Using Operation == WithWebView eliminates the need for the caller to implement the Terms and Conditions page UI directly.

See Also


Stove_GetAccessToken

Kind Function · Module Base · Version 3.5.0

Description

Retrieves the currently valid AccessToken. The SDK automatically renews the token internally to ensure that a valid token is always available.

Declaration

csharp
public static IStoveResult Stove_GetAccessToken(ref string accessToken, uint length)

Parameters

NameTypeRequiredDescription
accessTokenref stringYA variable to receive the AccessToken string. Any value assigned before the call is ignored and replaced with the resulting string after the call.
lengthuintYThe length of the string buffer used internally

Returns

TypeDescription
IStoveResultCall result. Check whether the call was successful using result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamThe buffer is null, its length is 0, or the buffer is too small, causing the string to be truncated (increase the length value and try again)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
19k_EStoveCommonResultCode_InvalidAccessTokenToken is invalid (prompting you to log in again)OYour login session has expired. Please close the game and restart it. [OK]
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in the rapper (check the log and retry)OThere was a temporary issue. Please try again. [OK]

Complete list: EStoveCommonResultCode

If you receive the code below, you must exit the game. The game cannot proceed normally.

  • 19 k_EStoveCommonResultCode_InvalidAccessToken — The game has closed due to a expired login session; please restart it.

Example

csharp
using static Stove.PCSDK.V3.Base;

string accessToken = null;
IStoveResult result = Stove_GetAccessToken(ref accessToken, 1024);
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome. Use the accessToken.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • Since the SDK automatically renews tokens internally, this function always returns a valid token.
  • Do not keep the retrieved token in the game and reuse it later. The SDK renews the token periodically, so a stored value can expire. Call this function every time a token is needed and use the value returned at that moment.
  • Use Stove_AccessTokenRenewed to receive a separate notification when the token is renewed.

See Also


Stove_GetGds

Kind Function · Module Base · Version 3.5.0

Description

Retrieves the logged-in user's GDS (country and time zone) information.

Declaration

csharp
public static IStoveResult Stove_GetGds(ref IStoveGds gds)

Parameters

NameTypeRequiredDescription
gdsIStoveGdsYVariable ref for receiving GDS information

Returns

TypeDescription
IStoveResultCall result. Check whether the call succeeded using result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamoutGds is null (surface-level validation) (check parameters)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the log and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPassed as a return value when an exception occurs in the rapper (check the log and retry)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveGds gds = default;
IStoveResult result = Stove_GetGds(ref gds);
if (result.IsSuccessful)
{
    // Please implement the logic for the success case.
    string nation = gds.Nation;
    string timezone = gds.Timezone;
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • If the system was unable to determine the country code from the IP address and used the default country code, gds.IsDefault is true.

See Also


Stove_GetSignin

Kind Function · Module Base · Version 3.5.0

Description

Retrieves the sign-in information for the logged-in user.

Declaration

csharp
public static IStoveResult Stove_GetSignin(ref IStoveSignin signin)

Parameters

NameTypeRequiredDescription
signinIStoveSigninYVariable ref to receive registration information

Returns

TypeDescription
IStoveResultCall result. Check whether the call was successful using result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamoutSignin is null (surface-level verification) (check parameters)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (Please check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in Rapper (check the log and retry)OA temporary issue has occurred. Please try again. [OK]

Complete List: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveSignin signin = default;
IStoveResult result = Stove_GetSignin(ref signin);
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
    bool personVerified = signin.IsPersonVerified;
    string providerCode = signin.ProviderCode;
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • Account types (signin.AccountType) are identified by numeric codes. For example: 2 = Facebook, 3 = Twitter, 6 = Naver, 9 = Google+, 11 = Stove PC sign-up, 12 = Apple, 13 = LINE, 14 = LINE Games, 15 = Steam, 16 = VTCO, etc.

See Also


Stove_GetUser

Kind Function · Module Base · Version 3.5.0

Description

Retrieves information about the logged-in user.

Declaration

csharp
public static IStoveResult Stove_GetUser(ref IStoveUser user)

Parameters

NameTypeRequiredDescription
userIStoveUserYThe ref variable that receives user information

Returns

TypeDescription
IStoveResultCall result. Check the success status using result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamoutUser is null (surface-level validation) (check parameters)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in the rapper (check the log and retry)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveUser user = default;
IStoveResult result = Stove_GetUser(ref user);
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
    string nickName = user.NickName;
    ulong userId = user.UserId;
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • The logged-in user's country and region information is retrieved separately via Stove_GetGds, and their registration information via Stove_GetSignin.

See Also


Stove_GetVersion

Kind Function · Module Base · Version 3.5.0

Description

Retrieves the SDK version information.

Declaration

csharp
public static IStoveResult Stove_GetVersion(ref string version, uint length)

Parameters

NameTypeRequiredDescription
versionref stringYA variable to receive the version string. Any value it holds before the call is ignored and replaced with the resulting string after the call.
lengthuintYThe length of the string buffer used internally

Returns

TypeDescription
IStoveResultCall result. Check the success status at result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamThe buffer is null, its length is 0, or the buffer is too small, causing the string to be truncated (increase the value of length and try again)x
251k_EStoveCommonResultCode_PcsdkDllNotFoundDLL path not found (Check SDK deployment status)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (Please check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in Rapper (check the log and retry)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

string version = null;
IStoveResult result = Stove_GetVersion(ref version, 64);
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome. Use the "version" parameter.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • This function is synchronous and does not accept callbacks.

Stove_Initialize

Kind Function · Module Base · Version 3.5.0

Description

Initializes the SDK. This API has two overloads.

  • Overload without arguments: Only initializes the SDK. Reuses the values for environment/gameId/appKey cached by Stove_RestartAppIfNecessary().
  • Overload that receives IStoveInitializeParam: Following the single-binary (BaseSDK Consolidation) integration, the View and IAP modules are initialized alongside the SDK. The SDK portion similarly reuses the environment/gameId/appKey values cached by Stove_RestartAppIfNecessary(). In addition, if initParam.MainWndHandle is not 0, the View module is initialized; if initParam.ShopKey is not empty and MainWndHandle is also specified, the IAP module is initialized as well.

You must call Stove_RestartAppIfNecessary() before calling this API.

Declaration

csharp
public static IStoveResult Stove_Initialize()
public static IStoveResult Stove_Initialize(IStoveInitializeParam initParam)

Parameters

NameTypeRequiredDescription
initParamIStoveInitializeParamNParameters containing ShopKey and MainWndHandle. If omitted (parameter-less overload), only the SDK is initialized.

Returns

TypeDescription
IStoveResultCall result. Check the success status at result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
1k_EStoveCommonResultCode_FailFailed to parse required information (lower layer) (Please check the log and try again)x
5k_EStoveCommonResultCode_InvalidParamAt least one of environment/gameId/appKey is empty (based on the cached value in Stove_RestartAppIfNecessary) (Check the call parameters in Stove_RestartAppIfNecessary)x
18k_EStoveCommonResultCode_AlreadyInitializedAlready initialized (Retry after calling Stove_Uninitialize())x
251k_EStoveCommonResultCode_PcsdkDllNotFoundFailure to retrieve the internal version (GetVersion) is propagated as-is (Check SDK deployment status)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (please check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in the rapper (check the log and retry)OA temporary issue has occurred. Please try again. [OK]
302k_EStoveResultCode_NotFoundRequiredInformationDetect missing required parameters in the lower-level layer (TokenActor) (Check call parameters for Stove_RestartAppIfNecessary)x
304k_EStoveResultCode_NeedStoveLauncherStove_RestartAppIfNecessary is not called first (Stove_RestartAppIfNecessary is called first)OThe game is closing because it is not running through the Stove PC client. Please relaunch the game from the client. If you do not have the client installed, please install it from the Stove website.[OK]

Complete list: EStoveCommonResultCode, EStoveResultCode

If you receive the code below, you must exit the game. The game cannot proceed normally.

  • 304 k_EStoveResultCode_NeedStoveLauncher — You'll need to restart the game after it closes

Example

csharp
using static Stove.PCSDK.V3.Base;

var initParam = new IStoveInitializeParam
{
    ShopKey = "your_shop_key",
    MainWndHandle = hWnd
};

IStoveResult result = Stove_Initialize(initParam);
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • IStoveInitializeParam If the overload is successful, it also initializes the View/IAP sub-module. If that sub-module initialization fails, this API returns a failure with an IAP/View error code, but the SDK itself continues to function.
  • The Environment/GameId/AppKey fields, which were previously located in IStoveInitializeParam, have been moved to IStoveRestartAppIfNecessaryParam in Stove_RestartAppIfNecessary. The IStoveInitializeParam of this API contains only two fields: ShopKey and MainWndHandle.
  • Be sure to call Stove_Uninitialize when exiting.

See Also


Stove_ManualPopup

Kind Function · Module View · Version 3.5.0

Description

Stove_ManualPopup retrieves the pop-up content specified by popupParam.ResourceKey from the server and displays it in the WebView. Unlike Stove_AutoPopup, it can be called arbitrarily by the game at any time.

This must be called after the SDK has been initialized (Stove_Initialize).

For all paths where the application terminates without creating any pop-ups (such as parameter errors, failure to initialize, no search results, or failure to create a web view), k_EStoveCommonResultCode_PopupNotCreated (33) is passed once to onDestroy. This code serves as an internal cleanup signal and is not passed to onFinished.

Declaration

csharp
public static void Stove_ManualPopup(IStoveManualPopupParam popupParam, OnViewPopupCallback onFinished, OnViewPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStoveManualPopupParamYThis parameter contains the WebView display mode (WebViewMode) and ResourceKey, which specifies the popup to display.
onFinishedOnViewPopupCallbackYThis is a callback that is called when the pop-up has finished displaying.
onDestroyOnViewPopupDestroyCallbackNThis is a callback that is called when the pop-up WebView is completely destroyed.

Returns

None (void function)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultHere are the results of the call. Check callbackResult.Result.IsSuccessful to see if it was successful.

onFinished is called once when the popup is confirmed. onDestroy is called once when the WebView has completely disappeared from the screen. Both callbacks run on the thread that called Stove_RunCallback().

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParampopupParam.ResourceKey is an empty string (check the value of ResourceKey in the calling code)x
17k_EStoveCommonResultCode_NotInitializedThe pop-up feature is not initialized (Check for a preceding call to Stove_Initialize)x
60k_EStoveCommonResultCode_ViewUiNotInitializedThe pop-up UI subsystem is not initialized (defensive code that does not occur during normal flow) (If this issue occurs, contact the SDK support team)x
65k_EStoveCommonResultCode_WebviewCloseAllFailFailed to close all existing WebViews before creating a popup (check logs)x
62k_EStoveCommonResultCode_WebviewCreateFailFailed to create WebView (Please try again or check the logs)x
63k_EStoveCommonResultCode_WebviewLoadUrlFailWebView URL Load Failed (Please check your network connection and try again)x
67k_EStoveCommonResultCode_NoPopupDataThere are 0 pop-up records corresponding to ResourceKey (check the value of ResourceKey)OThere is no pop-up configuration information, so there is no window to display. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPassed as a callback when an exception occurs in the rapper (check log callbackResult.Result.ExceptionMessage)OThere was a temporary issue. Please try again. [OK]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessNormal Exit of WebViewx
66k_EStoveCommonResultCode_WebviewCloseFailFailed to close WebView (Check the log)x
33k_EStoveCommonResultCode_PopupNotCreatedThe WebView was not created and terminated prematurely (including parameter errors and internal cleanup signals) (No separate handling required)x
254k_EStoveCommonResultCode_ManagedExceptionPass to the callback when an exception occurs in Rapper (check the callbackResult.Result.ExceptionMessage log)OThere was a temporary issue. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStoveManualPopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    ResourceKey = "event_2026_summer"
};

Stove_ManualPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
        }
        else
        {
            // Please implement the logic for when a failure occurs.
        }
    },
    onDestroy: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for when the operation is successful.
        }
        else
        {
            // Please implement the logic for when an error occurs. (You may ignore Code 33.)
        }
    });

Notes

  • While Stove_AutoPopup displays a pop-up automatically selected by the server, Stove_ManualPopup has the game directly specify the pop-up content as ResourceKey.
  • 33(PopupNotCreated) is a code specific to onDestroy and is never passed to onFinished.

See Also


Stove_NewsPopup

Kind Function · Module View · Version 3.5.0

Description

Stove_NewsPopup retrieves the list of news (announcement) pop-ups from the server and displays it in a WebView.

This must be called after the SDK initialization (Stove_Initialize). If there is no popup data to display, the WebView will close without opening.

In all cases where the application terminates without creating any popups (e.g., failure to initialize, no search results, failure to create a web view, etc.), k_EStoveCommonResultCode_PopupNotCreated (33) is passed once to onDestroy. This code serves as an internal cleanup signal and is not passed to onFinished.

Declaration

csharp
public static void Stove_NewsPopup(IStovePopupParam popupParam, OnViewPopupCallback onFinished, OnViewPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStovePopupParamYThis parameter specifies the WebView display mode (WebViewMode).
onFinishedOnViewPopupCallbackYThis is a callback that is called when the popup has finished displaying (or has closed because there is no data to display).
onDestroyOnViewPopupDestroyCallbackNThis is a callback that is called when the pop-up WebView is completely destroyed.

Returns

None (void function)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnViewPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultHere are the results of the call. Check callbackResult.Result.IsSuccessful to see if it was successful.

onFinished is called once when the display of a popup (or termination due to no data) is confirmed. onDestroy is called once when the WebView has completely disappeared from the screen. Both callbacks are executed on the thread that called Stove_RunCallback().

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
17k_EStoveCommonResultCode_NotInitializedThe pop-up feature is not initialized (check for a preceding call to Stove_Initialize)x
60k_EStoveCommonResultCode_ViewUiNotInitializedThe pop-up UI subsystem is not initialized (defensive code that does not occur during normal flow) (If this issue occurs, contact SDK Support)x
65k_EStoveCommonResultCode_WebviewCloseAllFailFailed to close all existing WebViews before creating a popup (check logs)x
62k_EStoveCommonResultCode_WebviewCreateFailFailed to create WebView (Please retry or check the logs)x
63k_EStoveCommonResultCode_WebviewLoadUrlFailWebView URL Load Failed (Please check your network connection and try again)x
67k_EStoveCommonResultCode_NoPopupDataThe server query returned 0 results to display in the pop-up (treated as a normal termination)OThere is no pop-up configuration information, so there is no window to display. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPassed as a callback when an exception occurs in Rapper (check log callbackResult.Result.ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessNormal Exit from WebViewx
66k_EStoveCommonResultCode_WebviewCloseFailFailed to close WebView (Check the log)x
33k_EStoveCommonResultCode_PopupNotCreatedThe WebView was not created and terminated prematurely (internal cleanup signal) (no additional action required)x
254k_EStoveCommonResultCode_ManagedExceptionPassed as a callback when an exception occurs in Rapper (see log callbackResult.Result.ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStovePopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal
};

Stove_NewsPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
        }
        else
        {
            // Please implement the logic for when a failure occurs.
        }
    },
    onDestroy: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
        }
        else
        {
            // Please implement the logic for when an error occurs. (You may ignore Code 33.)
        }
    });

Notes

  • 33(PopupNotCreated) is a code specific to onDestroy and is never passed to onFinished.
  • The callback error code structure is the same as Stove_CouponPopup.

See Also


Stove_OpenExternalUrl

Kind Function · Module Base · Version 3.5.0

Description

Opens the URL in an external browser. When opening an Onstove-related domain (e.g., *.onstove.com), SSO is handled at the same time.

Declaration

csharp
public static void Stove_OpenExternalUrl(string url, OnOpenExternalUrlCallback onFinished)

Parameters

NameTypeRequiredDescription
urlstringYThe URL you want to open
onFinishedOnOpenExternalUrlCallbackYCallback to receive the results

Returns

None

Callback

csharp
public delegate void OnOpenExternalUrlCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results

This callback runs in the thread that called Stove_RunCallback(). It is a one-time callback.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccess (URL opened successfully)x
5k_EStoveCommonResultCode_InvalidParamonFinished is null (check if a callback is registered)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionThe browser failed to launch, or an unknown exception occurred while it was running (Check the URL format and browser installation status)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass to the callback when an exception occurs in the rapper (check the log)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_OpenExternalUrl("https://www.onstove.com", (callbackResult) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for the success case.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • When opening Onstove-related domains (such as *.onstove.com), SSO is handled simultaneously.

Stove_OverImmersionNotification

Kind Function · Module Base · Version 3.5.0

Description

This service sends hourly reminders via callback to users subject to South Korea's anti-excessive-use regulations. This is an API exclusively for South Korea.

This callback is not a one-time event; it is sent to the target user repeatedly every hour.

Declaration

csharp
public static void Stove_OverImmersionNotification(OnOverImmersionNotificationCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnOverImmersionNotificationCallbackNCallback to receive the results

Returns

None

Callback

csharp
public delegate void OnOverImmersionNotificationCallback(IStoveCallbackResult callbackResult, IStoveOverImmersionInfo overImmersion);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
overImmersionIStoveOverImmersionInfoInformation on notifications to prevent excessive gaming. Provides warning messages (Msg), cumulative playtime (ElapsedHours, in hours), and message display duration (ExposureTime, in seconds).

This callback runs on the thread that called Stove_RunCallback(). It is delivered to the target user repeatedly every hour.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamonFinished is null (an internal value that is not actually passed because there is no callback) (Check whether a callback has been registered)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
31k_EStoveCommonResultCode_NotSupportedCountryThe logged-in user's GDS country is not South Korea (kr) (country-specific branch handling)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs)OThere was a temporary issue. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the exception to the callback when it occurs in the rapper (check the log)OA temporary problem has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_OverImmersionNotification((callbackResult, overImmersion) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        string msg = overImmersion.Msg;
        int exposureTime = overImmersion.ExposureTime;
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
});

Notes

  • This API is for use in Korea only.
  • This is a callback that is repeatedly sent to the target user every hour.

See Also


Stove_PCBangCheckStatus

Kind Function · Module PCBang · Version 3.5.0

Description

Checks the status (Premium status, PSN, product code) of the PC Bang currently in use by the user. This is a one-time lookup API that can be called at any time, independently of Stove_PCBangLogin.

This must be called after the SDK has been initialized.

Declaration

csharp
public static void Stove_PCBangCheckStatus(OnPCBangCheckStatusCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnPCBangCheckStatusCallbackYCallback to receive the query results

Returns

None

Callback

csharp
public delegate void OnPCBangCheckStatusCallback(IStoveCallbackResult callbackResult, IStovePCBangStatus status);
NameTypeDescription
callbackResultIStoveCallbackResultCall Result
statusIStovePCBangStatusSearch results for "Premium status, PSN, product code"

It is executed once in the thread that called Stove_RunCallback().

The callback runs on the thread that called Stove_RunCallback(). It is not an internal SDK thread.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamonFinished is null (Check if a callback is registered)x
17k_EStoveCommonResultCode_NotInitializedPC Bang Function not initialized (check for preceding calls: Stove_Initialize)x
22k_EStoveCommonResultCode_HttpErrorThe HTTP status code for the request is not 200 (Check the network status and try again)OThe network connection is unstable. Please check your network status and try again. [OK]
23k_EStoveCommonResultCode_ResponseErrorThe response does not contain a "code" or "message" field, or the server returned a business error (code != 0) (check ExternalError and try again)OThe network connection is unstable. Please check your network connection and try again. [OK]
25k_EStoveCommonResultCode_ResponseValueIsNullThe "value" or "data" in the response is JSON null (check the server response)OThe network connection is unstable. Please check your network status and try again. [OK]
249k_EStoveCommonResultCode_NetworkTransportErrorNetwork transport layer error (e.g., WinHTTP) (Please check the network status and try again)x
254k_EStoveCommonResultCode_ManagedExceptionPass the exception to the callback when an exception occurs in the rapper (log the exception message and retry)OA temporary issue has occurred. Please try again. [OK]

In the event of a failure, status's PremiumCheck is invalidated and passed as an error status value.

Complete List: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.PCBang;

PCBang.Stove_PCBangCheckStatus((callbackResult, status) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This is a one-time query API that can be called even without first calling Stove_PCBangLogin.

See Also


Stove_PCBangLogin

Kind Function · Module PCBang · Version 3.5.0

Description

Log in the game user to the PC Bang service. If successful, the onUserLogin callback is called once, and thereafter, the onRefreshBenefit callback is called repeatedly every 4 minutes to deliver updated benefit information.

This must be called after initializing the SDK. The onRefreshBenefit callback remains registered until you call logout (Stove_PCBangLogout).

onRefreshBenefit is called every 4 minutes, not only for PC Bang Premium users but also for users with a Free account. Even if the refresh fails, the repeated calls do not stop.

Declaration

csharp
public static void Stove_PCBangLogin(OnPCBangLoginCallback onUserLogin, OnRefreshPCBangBenefitCallback onRefreshBenefit)

Parameters

NameTypeRequiredDescription
onUserLoginOnPCBangLoginCallbackNA callback that receives the result of the first successful login once
onRefreshBenefitOnRefreshPCBangBenefitCallbackNA callback to receive updated benefit information at 4-minute intervals after a successful login

If either of the two callbacks is null, only a login request is sent, and no callbacks are registered (the result cannot be received).

Returns

None

Callback

csharp
public delegate void OnPCBangLoginCallback(IStoveCallbackResult callbackResult, IStovePCBangLoginOutcome loginOutcome);
public delegate void OnRefreshPCBangBenefitCallback(IStoveCallbackResult callbackResult, IStovePCBangBenefitInfo benefitInfo);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
loginOutcomeIStovePCBangLoginOutcomeLogin results (Premium status, PSN, remaining time) passed to onUserLogin
benefitInfoIStovePCBangBenefitInfoUpdated benefit information (premium status, time remaining) passed to onRefreshBenefit

Both callbacks run on the thread that called Stove_RunCallback(). onUserLogin is called only once when the initial login is complete, and onRefreshBenefit is called repeatedly every 4 minutes after a successful login and until the user logs out.

Error Codes

CodeNameDescriptionShow to UserIn-Game MessageCallback
0k_EStoveCommonResultCode_SuccessSuccessxBoth
5k_EStoveCommonResultCode_InvalidParamonFinished is null (Check if a callback is registered)xBoth
17k_EStoveCommonResultCode_NotInitializedPC Bang Function not initialized (check for Stove_Initialize preceding call)xBoth
22k_EStoveCommonResultCode_HttpErrorThe HTTP status code for the request is not 200 (Please check the network status and try again)OThe network connection is unstable. Please check your network status and try again. [OK]Both
23k_EStoveCommonResultCode_ResponseErrorThe response does not contain a "code/message" field, or the server returned a business error (code != 0) (check ExternalError and try again)OThe network connection is unstable. Please check your network status and try again. [OK]Both
25k_EStoveCommonResultCode_ResponseValueIsNullThe value/data in the response is JSON null (check the server response)OThe network connection is unstable. Please check your network connection and try again. [OK]Both
26k_EStoveCommonResultCode_ResponseInvalidValueFormatThe decrypted response string failed JSON parsing (please try again; contact us if the issue persists)OThe network connection is unstable. Please check your network status and try again. [OK]Both
249k_EStoveCommonResultCode_NetworkTransportErrorNetwork transport layer error (WinHTTP, etc.) (Check network status and try again)xBoth
254k_EStoveCommonResultCode_ManagedExceptionPass an exception to the callback when an exception occurs in the rapper (log the exception message and retry)OA temporary issue has occurred. Please try again. [OK]Both

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.PCBang;

PCBang.Stove_PCBangLogin(
    (callbackResult, loginOutcome) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for the success case.
        }
        else
        {
            // Please implement the logic for when a failure occurs.
        }
    },
    (callbackResult, benefitInfo) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for processing the updated benefit information.
        }
        else
        {
            // Please implement the logic for when an error occurs.
        }
    });

Notes

  • onRefreshBenefit is called repeatedly every 4 minutes after a successful login, and it continues to be called not only when the user is in PC Bang Premium status but also when in Free status. Even if a single renewal fails, the repeated calls do not stop.
  • The exception callback for onUserLogin uses method code k_EStovePCBangMethodCode_Login (3000), while the exception callback for onRefreshBenefit uses k_EStovePCBangMethodCode_RefreshBenefit (3003) — please note that the two callbacks have different method codes.
  • The onRefreshBenefit registration remains active from the moment you successfully log in until you call Stove_PCBangLogout.

See Also


Stove_PCBangLogout

Kind Function · Module PCBang · Version 3.5.0

Description

Log out the user logged in as Stove_PCBangLogin from the PC Bang service. If successful, the recurring benefit renewal (onRefreshBenefit) initiated by Stove_PCBangLogin will be stopped.

This must be called after the SDK has been initialized.

Declaration

csharp
public static void Stove_PCBangLogout(OnPCBangLogoutCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnPCBangLogoutCallbackYCallback to receive the logout result

Returns

None

Callback

csharp
public delegate void OnPCBangLogoutCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results

It is executed once in the thread that called Stove_RunCallback().

The callback runs in the thread that called Stove_RunCallback(). It is not an internal SDK thread.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamonFinished is null (Check if a callback is registered)x
17k_EStoveCommonResultCode_NotInitializedPC Bang Function not initialized (check for Stove_Initialize preceding calls)x
22k_EStoveCommonResultCode_HttpErrorThe HTTP status code for the request is not 200 (Please check the network status and try again)OThe network connection is unstable. Please check your network status and try again. [OK]
23k_EStoveCommonResultCode_ResponseErrorThe response does not contain a "code/message" field, or the server returned a business error (code != 0) (check ExternalError and try again)OThe network connection is unstable. Please check your network status and try again. [OK]
25k_EStoveCommonResultCode_ResponseValueIsNullThe "value" or "data" in the response is JSON null (check the server response)OThe network connection is unstable. Please check your network status and try again. [OK]
249k_EStoveCommonResultCode_NetworkTransportErrorNetwork transport layer error (e.g., WinHTTP) (Please check the network status and try again)x
254k_EStoveCommonResultCode_ManagedExceptionPass an exception to the callback when an exception occurs in the rapper (log the exception message and retry)OA temporary issue has occurred. Please try again. [OK]

Since logging out does not involve the AES decryption step, k_EStoveCommonResultCode_ResponseInvalidValueFormat(26) does not occur.

Complete List: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.PCBang;

PCBang.Stove_PCBangLogout((callbackResult) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • When logout is successful, the recursive call starting at Stove_PCBangLogin and ending at onRefreshBenefit is terminated.
  • Although there is no need to call the logout function separately when the game ends, we recommend calling it during a flow that explicitly marks the end of PC Bang usage (such as returning to the character selection screen).

See Also


Stove_RestartAppIfNecessary

Kind Function · Module Base · Version 3.5.0

Description

This API checks whether the game executable was launched through the Stove launcher. If it was not launched through the launcher, the SDK internally launches the launcher to restart the app, and the current process is terminated.

This API must be called before Stove_Initialize(). Stove_Initialize() reuses the environment/gameId/appKey values cached by this API.

If a restart is required, the current process will terminate, so the code following this API call may not execute.

Declaration

csharp
public static void Stove_RestartAppIfNecessary(IStoveRestartAppIfNecessaryParam initParam, OnRestartAppIfNecessaryCallback onFinished)

Parameters

NameTypeRequiredDescription
initParamIStoveRestartAppIfNecessaryParamYParameters containing Environment, GameId, AppKey, WaitTimeMilliSec, LaunchStoveLauncher, and PlatformName
onFinishedOnRestartAppIfNecessaryCallbackYCallback to receive the results

Returns

None

Callback

csharp
public delegate void OnRestartAppIfNecessaryCallback(IStoveCallbackResult callbackResult, IStoveRestartAppIfNecessaryOutcome outcome);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
outcomeIStoveRestartAppIfNecessaryOutcomeUse the IsRestartRequired property to indicate whether a restart is required

This callback runs in the thread that called Stove_RunCallback(). It is a one-time callback, and the result is returned even if the process can continue without requiring a restart.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
29k_EStoveCommonResultCode_AsyncOperationInProgressThe previous asynchronous retry thread is still running (retry after the previous call completes)x
30k_EStoveCommonResultCode_BaseUninitializedThe IPC state in the waiting state has returned to its initial state (retry)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (Please check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass to the callback when an exception occurs in the Rapper (check the log and retry)OA temporary issue has occurred. Please try again. [OK]
307k_EStoveResultCode_IpcConnectFailedFailed to establish an IPC connection with the launcher (check if the launcher is running and try again)OThe game is closing because it is not running through the Stove PC client. Please launch the game again from the client. If you do not have the client installed, please install it from the Stove website. [OK]
308k_EStoveResultCode_IpcAesKeyNotReceivedUnable to receive the AES key via IPC (Check if the launcher is running, then try again)OThe game is closing because it is not running through the Stove PC client. Please launch the game again from the client. If you do not have the client installed, please install it from the Stove website.[OK]
309k_EStoveResultCode_IpcTimeoutCommunication with the launcher exceeded WaitTimeMilliSec (Increase the timeout and retry)OThe game is closing because it is not running through the Stove PC client. Please launch the game again from the client. If you do not have the client installed, please install it from the Stove website.[OK]

Complete list: EStoveCommonResultCode, EStoveResultCode

If you receive the code below, you must exit the game immediately. The game cannot proceed normally.

  • 307 k_EStoveResultCode_IpcConnectFailed — You'll need to restart the game after it closes.
  • 308 k_EStoveResultCode_IpcAesKeyNotReceived — You will need to restart the game after it closes.
  • 309 k_EStoveResultCode_IpcTimeout — You will need to restart the game after it closes.

Example

csharp
using static Stove.PCSDK.V3.Base;

var initParam = new IStoveRestartAppIfNecessaryParam
{
    Environment = "real",
    GameId = "your_game_id",
    AppKey = "your_app_key",
    WaitTimeMilliSec = 10000,
    LaunchStoveLauncher = true,
    PlatformName = "Stove"
};

Stove_RestartAppIfNecessary(initParam, (callbackResult, outcome) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        if (outcome.IsRestartRequired)
        {
            // Since the system is currently restarting via the launcher, no further action is required.
        }
        else
        {
            // Since it is already running via the launcher, please proceed with Stove_Initialize().
        }
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • With the separation of the old IStoveInitializeParam, the Environment/GameId/AppKey fields were moved to IStoveRestartAppIfNecessaryParam in this API. These fields are not included in the parameters of the new Stove_Initialize.
  • You must call this API before calling Stove_Initialize().

See Also


Stove_RunCallback

Kind Function · Module Base · Version 3.5.0

Description

This dispatches the results (callbacks) of asynchronous API calls. It must be called from the game's UI (main) thread.

Callbacks registered by the SDK are executed on the thread that called this function, not on an internal SDK thread.

This function must be called within the game loop (e.g., every frame or every tick). Do not use it by repeatedly calling this function alone in the form while(true).

Declaration

csharp
public static void Stove_RunCallback()

Parameters

None

Returns

None

Error Codes

None

Example

csharp
using static Stove.PCSDK.V3.Base;

// Example of a Game Loop
while (isGameRunning)
{
    // ... Game Logic ...

    Stove_RunCallback();

    // ... rendering and the rest of the loop logic ...
}

Notes

  • Callbacks for all asynchronous APIs are executed on the thread that called this function.
  • Callbacks must be called periodically within the game loop to ensure they are processed without delay.
  • To specify a wait time, use Stove_RunCallbackWithTimeout.

See Also


Stove_RunCallbackWithTimeout

Kind Function · Module Base · Version 3.5.0

Description

This is the timeout version of Stove_RunCallback. You can specify the wait time using timeoutMillisec.

This function must be called from the game's UI (main) thread, and any registered callbacks will execute on the thread that called this function.

Declaration

csharp
public static void Stove_RunCallbackWithTimeout(uint timeoutMillisec)

Parameters

NameTypeRequiredDescription
timeoutMillisecuintYWait Time (milliseconds)

Returns

None

Error Codes

None

Example

csharp
using static Stove.PCSDK.V3.Base;

// Game Loop Example (Maximum 10 ms Wait)
while (isGameRunning)
{
    // ... Game Logic ...

    Stove_RunCallbackWithTimeout(10);

    // ... rendering and the rest of the loop logic ...
}

Notes

  • Callbacks for all asynchronous APIs are executed on the thread that called this function.
  • Use Stove_RunCallback for general purposes, and use this function when you need to control the wait time.

See Also


Stove_SendLog

Kind Function · Module Log · Version 3.5.0

Description

Log entries are recorded in the local database and then sent to the Stove log backend.

This must be called after the SDK has been initialized.

A successful callback (onFinished) indicates that the log was successfully written to the local SQLite database (SUCCESS), but does not mean that the actual transmission to the server has been completed. Transmission to the server is handled asynchronously via a separate internal retransmission path, and any HTTP or network failures during that process are not reported to this callback.

Declaration

csharp
public static void Stove_SendLog(IStoveSendLogParam logSendParam, OnSendLogCallback onFinished)

Parameters

NameTypeRequiredDescription
logSendParamIStoveSendLogParamYContent of the log entries to be transmitted
onFinishedOnSendLogCallbackYCallback to receive the results of local DB logs

Returns

None

Callback

csharp
public delegate void OnSendLogCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results (Local DB Log Results)

It is executed once in the thread that called Stove_RunCallback().

The callback runs in the thread that called Stove_RunCallback(). It is not an internal SDK thread.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessRecord successfully saved to the local database (does not mean the data has been successfully transferred to the server)x
5k_EStoveCommonResultCode_InvalidParamonFinished is null (Check if a callback is registered)x
5k_EStoveCommonResultCode_InvalidParamlogSendParam.Contents is not empty, but it is not in a valid JSON format (check the JSON format of the Contents value)x
17k_EStoveCommonResultCode_NotInitializedLog functionality is not initialized (check for preceding call Stove_Initialize)x
44k_EStoveCommonResultCode_LocalDbWriteFailedFailed to write log records to the local database (check disk space/permissions)x
82k_EStoveCommonResultCode_PayloadSizeExceededLog content encoded in UTF-8 exceeds 50 KB (Contents size reduction)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred during execution (retry after logging the exception)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the exception to the callback when an exception occurs in the rapper (log the exception message and retry)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Log;

var logSendParam = new IStoveSendLogParam
{
    Auid = 123456789L,
    Cuid = 1L,
    LogGroupId = "login_flow",
    Contents = "{\"event\":\"login\"}",
};

Log.Stove_SendLog(logSendParam, (callbackResult) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when the operation fails.
    }
});

Notes

  • This callback only returns the results as of the time the data was written to the local database. Even if the transmission to the server actually fails (due to an HTTP error, network error, etc.), the game client is not notified, and the system is designed to retry sending the failed logs during the next transmission attempt.
  • Most string fields are optional. Fields for which you have not set a value should be left as null. Since null and an empty string ("") are sent to the server as different values, they should not be used interchangeably.
  • The SDK automatically populates and sends device information, GDS information, session ID, timestamp, game ID, and environment details. The game side only needs to fill in the fields listed in IStoveSendLogParam.
  • Except for local DB write failures (such as k_EStoveCommonResultCode_LocalDbWriteFailed), this callback almost always returns a success. We recommend that you do not design your game logic to branch based on the result of this callback.

See Also

  • None

Stove_SetGameProfile

Kind Function · Module Base · Version 3.5.0

Description

Set up your game profile information.

Declaration

csharp
public static IStoveResult Stove_SetGameProfile(IStoveSetGameProfileParam gameProfile)

Parameters

NameTypeRequiredDescription
gameProfileIStoveSetGameProfileParamYGame Profile Information (WorldId, CharacterNo)

Returns

TypeDescription
IStoveResultCall result. Check the success status at result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamgameProfileParams is null (surface-level validation) (check parameters)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK failed to initialize (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in the rapper (check the log and retry)OThere was a temporary issue. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

var gameProfile = new IStoveSetGameProfileParam
{
    WorldId = "world_01",
    CharacterNo = 12345
};

IStoveResult result = Stove_SetGameProfile(gameProfile);
if (result.IsSuccessful)
{
    // Please implement the logic for the success case.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • gameProfile.CharacterNo represents the character number. The field name "worldId Length" in the previous StoveGameProfileParams was a typographical error in the documentation.

Stove_SetLanguage

Kind Function · Module Base · Version 3.5.0 · Deprecated

Description

This API has been deprecated. Please use Stove_SetLanguageEx instead.

Sets the language used by PCSDK to the enumeration value EStoveLocale. Since the new flat C interface no longer provides an enumeration-based language configuration API, this function internally converts the enumeration value to a string and then delegates to the same native API used by Stove_SetLanguageEx.

Declaration

csharp
[Obsolete("Use Stove_SetLanguageEx(string language) instead.")]
public static IStoveResult Stove_SetLanguage(EStoveLocale language)

Parameters

NameTypeRequiredDescription
languageEStoveLocaleYThe language to set. It is internally converted to a string and passed to the native API.

Returns

TypeDescription
IStoveResultCall result. Check the success status using result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamDetected as an unsupported language (Check the list of supported languages)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs and try again)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in the rapper (check the log and retry)OThere was a temporary issue. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_SetLanguage(EStoveLocale.k_EStoveLocale_Ko);
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • This API is deprecated. You should use Stove_SetLanguageEx in new code.
  • This function is synchronous and does not accept callbacks.

See Also


Stove_SetLanguageEx

Kind Function · Module Base · Version 3.5.0

Description

Sets the language to be used by PCSDK as a string. Since the enumeration-based Stove_SetLanguage has been deprecated, you must use this function to set the language.

Declaration

csharp
public static IStoveResult Stove_SetLanguageEx(string language)

Parameters

NameTypeRequiredDescription
languagestringYLanguage Information String

Returns

TypeDescription
IStoveResultCall result. Check whether the call succeeded using result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamThis string has been identified as an unsupported language (check the list of supported languages)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs and try again)OA temporary problem has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in the rapper (check the log and retry)OA temporary issue has occurred. Please try again. [OK]

Complete List: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_SetLanguageEx("ko");
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • This function is synchronous and does not accept callbacks.
  • This function replaces the enumeration-based Stove_SetLanguage.

See Also


Stove_SetPopupDisallowed

Kind Function · Module View · Version 3.5.0

Description

Stove_SetPopupDisallowed stores the popup specified by disallowedParam.PopupId locally so that it will not be displayed again for the number of days specified by disallowedParam.Days.

This must be called after initializing the SDK (Stove_Initialize).

Declaration

csharp
public static void Stove_SetPopupDisallowed(IStoveSetPopupDisallowedParam disallowedParam, OnSetPopupDisallowedCallback onFinished);

Parameters

NameTypeRequiredDescription
disallowedParamIStoveSetPopupDisallowedParamYThis parameter contains the pop-up identifier to suppress (PopupId) and the suppression period (Days, in days).
onFinishedOnSetPopupDisallowedCallbackYThis is a callback that receives the processing results.

Returns

None (void function)

Callback

csharp
public delegate void OnSetPopupDisallowedCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultHere are the results of the call. Check callbackResult.Result.IsSuccessful to see if it was successful.

onFinished is called once. It runs in the thread that called Stove_RunCallback().

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessfully recorded suppression information in the local configuration filex
1k_EStoveCommonResultCode_FailFailed to write local configuration file (please retry or check the log)x
17k_EStoveCommonResultCode_NotInitializedThe pop-up feature is not initialized (check for a preceding call to Stove_Initialize)x
254k_EStoveCommonResultCode_ManagedExceptionPassed as a callback when an exception occurs in Rapper (check the callbackResult.Result.ExceptionMessage log)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var disallowedParam = new IStoveSetPopupDisallowedParam
{
    PopupId = 12345,
    Days = 7
};

Stove_SetPopupDisallowed(disallowedParam, (callbackResult) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This function is not an API that immediately closes the pop-up displayed on the screen, but rather an API that prevents that pop-up from reappearing for a specified period of time.
  • Blocking information is stored in a local file (popupConfig.json), which is then referenced when Stove_AutoPopup and others filter the pop-up list.
  • This API uses a single-callback structure without the onDestroy callback.

See Also


Stove_ShutdownNotification

Kind Function · Module Base · Version 3.5.0

Description

A shutdown notification is sent via callback to users subject to the shutdown.

This API is not limited to South Korea. It works for users outside of South Korea as well, provided their accounts are subject to the shutdown policy.

Declaration

csharp
public static void Stove_ShutdownNotification(OnShutdownNotificationCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnShutdownNotificationCallbackNCallback to receive the results

Returns

None

Callback

csharp
public delegate void OnShutdownNotificationCallback(IStoveCallbackResult callbackResult, IStoveShutdownInfo shutdown);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
shutdownIStoveShutdownInfoShutdown notification information. Provides the notification message (Msg), message display duration (ExposureTime, in seconds), and time remaining until shutdown (InadvanceMinutes, in minutes).

This callback runs in the thread that called Stove_RunCallback().

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamonFinished is null (an internal value that is not actually passed because there is no callback) (Check whether a callback has been registered)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK did not initialize (Check if Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass to the callback when an exception occurs in the rapper (check the log)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_ShutdownNotification((callbackResult, shutdown) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        string msg = shutdown.Msg;
        int inadvanceMinutes = shutdown.InadvanceMinutes;
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This API is not exclusive to South Korea. It works even overseas if the account is subject to the shutdown policy.
  • This callback is not a one-time event. Once registered, it will be called repeatedly—once at each of the advance notification times specified by the server (e.g., 30 minutes before shutdown, 10 minutes before shutdown, etc.), and once at the actual shutdown time—for the number of times specified by the server.

See Also


Stove_StartPurchase

Kind Function · Module IAP · Version 3.5.0

Description

We will begin the purchase process for the list of items in the order submitted via startPurchaseParam.Products. The procedure will vary depending on the value of startPurchaseParam.PurchaseParam.Operation (EStovePurchaseOperation).

  • k_EStovePurchaseOperation_Default: Do not use Stove Webview. The caller must open the payment page directly using the IStoveStartPurchaseOutcome.TempPaymentUrl passed to onFinished, and after payment, must call Stove_ConfirmPurchase to confirm the purchase.
  • k_EStovePurchaseOperation_WithWebView: Opens the Stove payment page within Stove Webview. In this case as well, once the payment is complete, the caller must call Stove_ConfirmPurchase to confirm the purchase.
  • k_EStovePurchaseOperation_WithWebViewAndConfirmResult: Open the Stove payment page within Stove Webview. Upon successful payment, the SDK automatically calls Stove_ConfirmPurchase and returns the confirmed purchase results (IsPurchased, PurchasedProducts, ChargeInfos) to onFinished. In this case, the caller does not need to call Stove_ConfirmPurchase separately.

This must be called after initializing the SDK (Stove_Initialize).

Declaration

csharp
public static void Stove_StartPurchase(IStoveStartPurchaseParam startPurchaseParam, OnStartPurchaseCallback onFinished, OnIAPPopupDestroyCallback onDestroy)

Parameters

NameTypeRequiredDescription
startPurchaseParamIStoveStartPurchaseParamYList of Ordered Items and Purchase Action Parameters
onFinishedOnStartPurchaseCallbackYCallback to receive purchase results
onDestroyOnIAPPopupDestroyCallbackNA callback that is triggered when all popups created by this call have been closed

Returns

None

Callback

csharp
public delegate void OnStartPurchaseCallback(IStoveCallbackResult callbackResult, IStoveStartPurchaseOutcome outcome);
public delegate void OnIAPPopupDestroyCallback(IStoveCallbackResult callbackResult);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
outcomeIStoveStartPurchaseOutcomePurchase results. Which fields are populated depends on the value of Operation (see Overview).

It runs in the thread that called Stove_RunCallback().

  • onFinished is passed only once per call.
  • onDestroy is passed after all pop-ups created by this call have been closed. It is also passed once along with PopupNotCreated (33) even if the WebView terminates without ever being created.

Error Codes

CallbackCodeNameDescriptionShow to UserIn-Game Message
onFinished0k_EStoveCommonResultCode_SuccessSuccessx
onFinished17k_EStoveCommonResultCode_NotInitializedPayment functionality is not initialized (preceding call to Stove_Initialize)x
onFinished5k_EStoveCommonResultCode_InvalidParamIf onFinished is null, it is set internally but is not actually passed because there is no callback (for reference only; no separate handling required)x
onFinished80k_EStoveCommonResultCode_ParameterLengthExceededServiceTxnNo exceeds 50 characters, or ExtraData exceeds 500 characters (adjust the values to meet the length limit)OThe payment information is invalid, so we cannot process the payment. Please try again. [OK]
onFinished81k_EStoveCommonResultCode_InvalidJsonStringExtraData is not empty, but the JSON is invalid (check the format of ExtraData)OThe payment information is invalid, so we cannot process the payment. Please try again. [OK]
onFinished503k_EStoveResultCode_InvalidOrderProductInformationThe order contains items with the codes Quantity <= 0 or SalePrice < 0 (Check the order items).OThe payment information is invalid, so we cannot process the payment. Please try again. [OK]
onFinished252k_EStoveCommonResultCode_NotImplementedPurchaseParam.Operation is an unknown value (specify one of the values listed in EStovePurchaseOperation)x
onFinished60k_EStoveCommonResultCode_ViewUiNotInitializedThe WebView payment window must be opened, but the View UI is not initialized (contact the SDK team)x
onFinished65k_EStoveCommonResultCode_WebviewCloseAllFailFailed to clear the existing web view before opening a new payment web view (retrying)x
onFinished62k_EStoveCommonResultCode_WebviewCreateFailFailed to create payment web view (Retrying)x
onFinished63k_EStoveCommonResultCode_WebviewLoadUrlFailFailed to load the URL in the payment web view (retrying)x
onFinished34k_EStoveCommonResultCode_WebviewClosedBeforeCompleteWithWebViewAndConfirmResult The web view closed before receiving the payment completion notification in the flow (prompt the user to make another purchase)OThe purchase was not completed successfully. Please try again. [OK]
onFinished254k_EStoveCommonResultCode_ManagedExceptionPass an exception to the callback when it occurs in the Rapper (logged as ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]
onFinished253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred (check the logs and contact the SDK team)OA temporary issue has occurred. Please try again. [OK]
onDestroy33k_EStoveCommonResultCode_PopupNotCreatedOne pass through all early failure paths where the WebView was never created and terminated (can be ignored)x
onDestroy66k_EStoveCommonResultCode_WebviewCloseFailFailure to close the WebView properly upon normal termination (logged for reference)x

Complete list: EStoveCommonResultCode, EStoveResultCode

Example

csharp
using static Stove.PCSDK.V3.IAP;

var startPurchaseParam = new IStoveStartPurchaseParam
{
    Products = new[]
    {
        new IStoveOrderProductParam { ProductId = productId, SalePrice = salePrice, Quantity = 1 }
    },
    PurchaseParam = new IStovePurchaseParam
    {
        Operation = EStovePurchaseOperation.k_EStovePurchaseOperation_Default
    }
};

Stove_StartPurchase(startPurchaseParam,
    (callbackResult, outcome) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
            // If Operation == Default, open the payment page at outcome.TempPaymentUrl, and
            // After completing the payment, you must call `Stove_ConfirmPurchase()` to finalize the purchase.
            long txnMasterNo = outcome.TxnMasterNo;
        }
        else
        {
            // Please implement the logic for when an error occurs.
        }
    },
    (callbackResult) =>
    {
        // Please implement logic that closes all pop-ups opened during the purchase process once they have all been closed.
    });

Notes

  • This function is asynchronous, and the result is passed only via the onFinished callback.
  • Purchases starting with Operation, Default, or WithWebView must be finalized by calling Stove_ConfirmPurchase. The SDK automatically handles the finalization of WithWebViewAndConfirmResult.
  • You can use the value outcome.PurchaseProgress(EStovePurchaseProgress) to determine whether to display the payment window directly.
  • The PopupNotCreated(33) value of onDestroy is passed through unchanged in the new C# interface (the old interface swallows this value and does not call onDestroy). If you receive a 33, you can ignore it without any further processing.
  • IStoveStartPurchaseOutcome was renamed from the PurchaseResult series of types in the old interface.

See Also


Stove_Uninitialize

Kind Function · Module Base · Version 3.5.0

Description

Exit the SDK. This must be called in conjunction with Stove_Initialize() when ending the game.

Declaration

csharp
public static IStoveResult Stove_Uninitialize()

Parameters

None

Returns

TypeDescription
IStoveResultCall result. Check whether the call was successful using result.IsSuccessful.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
16k_EStoveCommonResultCode_BaseNotInitializedCalled before initialization (the cleanup routine continues even in this case) (Check whether Stove_Initialize() was called)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass the return value when an exception occurs in Rapper (check the log)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

IStoveResult result = Stove_Uninitialize();
if (result.IsSuccessful)
{
    // Please implement the logic for a successful outcome.
}
else
{
    // Please implement the logic for when an error occurs.
}

Notes

  • While the termination is in progress, the callback queue that was waiting is drained in discard mode, and the waiting user delegate is not called.
  • The API name is Stove_Uninitialize, not Stove_UnInitialize (capital I).

See Also


Stove_VerifyIdentificationPopup

Kind Function · Module View · Version 3.5.0

Description

Stove_VerifyIdentificationPopup displays the identity verification pop-up in a web view. If popupParam.CompareIdentifier is true, it compares the verified identifier with the logged-in user.

This must be called after initializing the SDK (Stove_Initialize).

If the call is made from a GDS country other than South Korea (kr), it will fail with error code k_EStoveCommonResultCode_NotSupportedCountry (31). Since the web view is not created, k_EStoveCommonResultCode_PopupNotCreated (33) is also passed to onDestroy.

Declaration

csharp
public static void Stove_VerifyIdentificationPopup(IStoveVerifyIdentificationPopupParam popupParam, OnViewPopupCallback onFinished, OnVerifyIdentificationPopupDestroyCallback onDestroy);

Parameters

NameTypeRequiredDescription
popupParamIStoveVerifyIdentificationPopupParamYThese parameters specify the WebView display mode (WebViewMode) and whether to compare the authenticated identifier with the logged-in user (CompareIdentifier).
onFinishedOnViewPopupCallbackYThis is a callback that is called when the pop-up has finished displaying.
onDestroyOnVerifyIdentificationPopupDestroyCallbackNThis callback is invoked when the pop-up WebView is completely destroyed. It passes the issued SIM key along with it.

Returns

None (void function)

Callback

csharp
public delegate void OnViewPopupCallback(IStoveCallbackResult callbackResult);
public delegate void OnVerifyIdentificationPopupDestroyCallback(IStoveCallbackResult callbackResult, IStoveVerifyIdentificationPopupDestroyInfo info);
NameTypeDescription
callbackResultIStoveCallbackResultHere are the results of the call. Check callbackResult.Result.IsSuccessful to see if it was successful.
infoIStoveVerifyIdentificationPopupDestroyInfoIf authentication for info.SimKey is successful, the issued SIM key is stored here. If authentication fails, an empty string ("") is returned.

onFinished is called once when the popup is confirmed. onDestroy is called once when the web view has completely disappeared from the screen. Both callbacks run on the thread that called Stove_RunCallback().

Error Codes

onFinished

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
17k_EStoveCommonResultCode_NotInitializedThe pop-up feature is not initialized (check for a preceding call to Stove_Initialize)x
31k_EStoveCommonResultCode_NotSupportedCountryThe logged-in user's GDS country is not South Korea (kr) (This API should not be called from countries other than South Korea.)x
60k_EStoveCommonResultCode_ViewUiNotInitializedThe pop-up UI subsystem is not initialized (defensive code that does not occur during normal flow) (If this issue occurs, contact SDK Support)x
65k_EStoveCommonResultCode_WebviewCloseAllFailFailed to close all existing WebViews before creating a pop-up (check logs)x
62k_EStoveCommonResultCode_WebviewCreateFailFailed to create WebView (Please retry or check the logs)x
63k_EStoveCommonResultCode_WebviewLoadUrlFailWebView URL Load Failed (Please check your network connection and try again)x
67k_EStoveCommonResultCode_NoPopupDataThe server query returned 0 results to display in the pop-up (treated as a normal termination).OThere is no pop-up configuration information, so there is no window to display. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPassed as a callback when an exception occurs in Rapper (check log callbackResult.Result.ExceptionMessage)OA temporary issue has occurred. Please try again. [OK]

onDestroy

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessNormal Exit of WebViewx
66k_EStoveCommonResultCode_WebviewCloseFailFailed to close WebView (Check the log)x
33k_EStoveCommonResultCode_PopupNotCreatedThe WebView was not created and terminated prematurely (including due to country restrictions or an internal cleanup signal). In this case, info.SimKey is an empty string. (No special handling required.)x
254k_EStoveCommonResultCode_ManagedExceptionPass to the callback when an exception occurs in Rapper (check log callbackResult.Result.ExceptionMessage)OThere was a temporary issue. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.View;

var popupParam = new IStoveVerifyIdentificationPopupParam
{
    WebViewMode = EStoveWebViewMode.k_EStoveWebViewMode_Internal,
    CompareIdentifier = true
};

Stove_VerifyIdentificationPopup(popupParam,
    onFinished: (callbackResult) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please implement the logic for a successful outcome.
        }
        else
        {
            // Please implement the logic for when an error occurs.
        }
    },
    onDestroy: (callbackResult, info) =>
    {
        if (callbackResult.Result.IsSuccessful)
        {
            // Please use info.SimKey wherever needed.
        }
        else
        {
            // Please implement the logic for when an error occurs. (You may ignore Code 33.)
        }
    });

Notes

  • This API is for South Korea only. If the logged-in user's GDS country is not South Korea, the API will always return an error with code NotSupportedCountry(31).
  • 33(PopupNotCreated) is a code specific to onDestroy and is never passed to onFinished.
  • Unlike other popup APIs, the onDestroy callback type is OnVerifyIdentificationPopupDestroyCallback, and it passes an additional IStoveVerifyIdentificationPopupDestroyInfo argument.

See Also


Stove_VietnamAgeRatingNotification

Kind Function · Module Base · Version 3.5.0

Description

This API returns information on age ratings in Vietnam via a callback. It is an API specifically for Vietnam.

This is a one-time callback. It must be called after rendering is complete.

Declaration

csharp
public static void Stove_VietnamAgeRatingNotification(OnVietnamAgeRatingNotificationCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnVietnamAgeRatingNotificationCallbackNCallback to receive the results

Returns

None

Callback

csharp
public delegate void OnVietnamAgeRatingNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamAgeRatingInfo ageRatingInfo);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
ageRatingInfoIStoveVietnamAgeRatingInfoAge Rating Overlay Information. Overlay Display Status (OverlayMode), Overlay Color Type (OverlayType, 0=black·1=white), overlay size (OverlayScale, 0.0–1.0), overlay opacity (OverlayOpacity, 0.0–1.0), game rating (AgeRating, 0=All Ages·12=Ages 12·16=Ages 16·18=Ages 18), notification message (Msg), display position X and Y (DisplayPositionX / DisplayPositionY, 0.0–1.0 relative to the top-left corner of the screen), and language code for font selection (Language).

This callback runs in the thread that called Stove_RunCallback(). It is a one-time callback and must be called after the point at which rendering is possible.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamonFinished is null (an internal value that is not actually passed because there is no callback) (Check whether a callback has been registered)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
31k_EStoveCommonResultCode_NotSupportedCountryThe logged-in user's GDS country is not Vietnam (vn) (country-specific branch handling)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass to the callback when an exception occurs in the rapper (check the log)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_VietnamAgeRatingNotification((callbackResult, ageRatingInfo) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for the success case.
        int overlayMode = ageRatingInfo.OverlayMode;
        string msg = ageRatingInfo.Msg;
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This is an API specifically for Vietnam.
  • This is a one-time callback and must be called after rendering is complete.

See Also


Stove_VietnamOverimmersionNotification

Kind Function · Module Base · Version 3.5.0

Description

Information on preventing excessive gaming in Vietnam is delivered via callback. This is an API specific to Vietnam.

This is a one-time callback. It must be called after rendering is complete.

Declaration

csharp
public static void Stove_VietnamOverimmersionNotification(OnVietnamOverimmersionNotificationCallback onFinished)

Parameters

NameTypeRequiredDescription
onFinishedOnVietnamOverimmersionNotificationCallbackNCallback to receive the results

Returns

None

Callback

csharp
public delegate void OnVietnamOverimmersionNotificationCallback(IStoveCallbackResult callbackResult, IStoveVietnamOverimmersionInfo overimmersionInfo);
NameTypeDescription
callbackResultIStoveCallbackResultCall Results
overimmersionInfoIStoveVietnamOverimmersionInfoInformation on the anti-overuse overlay. Overlay display status (OverlayMode), overlay color type (OverlayType, 0=black·1=white), overlay size (OverlayScale, 0.0–1.0), overlay transparency (OverlayOpacity, 0.0–1.0), game rating (AgeRating, 0=All Ages·12=Ages 12·16=Ages 16·18=Ages 18), warning message (Msg), formatting tags (<b>, <color=#RRGGBBAA>, etc.) (StyledMsg), cumulative playtime (ElapsedMinutes, in minutes), message display duration (ExposureTime, in seconds), expansion animation duration (ExpandAnimationTime, in seconds), display position X and Y (DisplayPositionX / DisplayPositionY, 0.0 to 1.0 relative to the top-left corner of the screen), and language codes for font selection (Language).

This callback runs in the thread that called Stove_RunCallback(). It is a one-time callback and must be called after the point at which rendering is possible.

Error Codes

CodeNameDescriptionShow to UserIn-Game Message
0k_EStoveCommonResultCode_SuccessSuccessx
5k_EStoveCommonResultCode_InvalidParamonFinished is null (an internal value that is not actually passed because there is no callback) (Check whether a callback has been registered)x
16k_EStoveCommonResultCode_BaseNotInitializedSDK not initialized (Check if Stove_Initialize() was called)x
31k_EStoveCommonResultCode_NotSupportedCountryThe logged-in user's GDS country is not Vietnam (vn) (Country-specific branching)x
253k_EStoveCommonResultCode_UnmanagedExceptionAn unknown exception occurred within the SDK (check the logs)OA temporary issue has occurred. Please try again. [OK]
254k_EStoveCommonResultCode_ManagedExceptionPass to the callback when an exception occurs in the rapper (check the log)OA temporary issue has occurred. Please try again. [OK]

Complete list: EStoveCommonResultCode

Example

csharp
using static Stove.PCSDK.V3.Base;

Stove_VietnamOverimmersionNotification((callbackResult, overimmersionInfo) =>
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Please implement the logic for a successful outcome.
        string styledMsg = overimmersionInfo.StyledMsg;
        int elapsedMinutes = overimmersionInfo.ElapsedMinutes;
    }
    else
    {
        // Please implement the logic for when an error occurs.
    }
});

Notes

  • This is an API specifically for Vietnam.
  • This is a one-time callback and must be called after rendering is complete.

See Also


StoveReadOnlyArrayEnumerator

Kind Struct · Module Base · Version 3.5.0

Description

This is a boxing-free array enumerator shared by the SDK's read-only list wrapper structures (IStoveProductList, IStoveInventoryList, IStoveShopCategoryList, etc.). Implement IEnumerator<T> to support iteration over foreach.

class Base It is not declared inside a module, but rather namespace Stove.PCSDK.V3 at the top level (namespace level), so it does not belong to a specific module class and is shared by list types across multiple modules. It is not created directly by the game code; rather, GetEnumerator() of the list type returns it internally.

Declaration

csharp
public struct StoveReadOnlyArrayEnumerator<T> : IEnumerator<T>
{
    public T Current { get; }

    public bool MoveNext();
    public void Reset();
    public void Dispose();
}

Members

NameTypeAccessDescription
CurrentTRead (Property)This is the element currently pointed to by the iterator.
MoveNextboolMethodMoves to the next element. Returns true if the move is successful, and false if the end of the array is reached.
ResetvoidMethodResets the iterator to its initial position (before it points to any element).
DisposevoidMethodThis is the implementation of IDisposable. Since there are no resources to release separately, it does nothing.

Example

csharp
using static Stove.PCSDK.V3.Base;
using static Stove.PCSDK.V3.IAP;

void OnFetchProductsCallback(IStoveCallbackResult callbackResult, IStoveProductList products)
{
    if (callbackResult.Result.IsSuccessful)
    {
        // Since IStoveProductList.GetEnumerator() returns a StoveReadOnlyArrayEnumerator<IStoveProduct>,
        // In the game code, you can iterate through the list directly using a `foreach` loop.
        foreach (IStoveProduct product in products)
        {
            // Please implement the logic to handle each item.
        }
    }
    else
    {
        // Please implement the logic for when a failure occurs.
    }
}

Notes

  • Game code rarely deals with this type directly. When foreach is used with enumeration types that implement IReadOnlyList<T>—such as IStoveProductList, IStoveInventoryList, and IStoveShopCategoryList—this enumerator is used internally.
  • If the internal array is null, it is treated as an empty sequence (MoveNext() immediately returns false).
  • There is no corresponding EStoveBaseTypeKind value for this type. This is because it is a C#-specific helper shared by list types across multiple modules, rather than a data or parameter type for a specific feature.

See Also

  • None