public static bool IsRestoringNeeded()
    {
        FGLEnhance.InitializeEnhance();

#if UNITY_EDITOR
        return(FGLEditorInternals.IsRestoringNeeded());
#elif UNITY_ANDROID
        return(FGLAndroidInternals.IsRestoringNeeded());
#elif UNITY_IOS
        return(FGLiOSInternals.IsRestoringNeeded());
#else
        return(false);
#endif
    }
    public static void RestorePurchases(Action onRestoreSuccessCallback, Action onRestoreFailedCallback)
    {
        if (GameObject.Find(FGLEnhance_Callbacks.CallbackObjectName) == null)
        {
            string     newName        = "__FGLEnhance_Callback_" + UnityEngine.Random.Range(0, int.MaxValue);
            GameObject callbackObject = new GameObject(newName);
            callbackObject.AddComponent <FGLEnhance_Callbacks>();
        }

        FGLEnhance_Callbacks.OnRestoreSuccessCallback = onRestoreSuccessCallback;
        FGLEnhance_Callbacks.OnRestoreFailedCallback  = onRestoreFailedCallback;

        FGLEnhance.InitializeEnhance();
#if UNITY_EDITOR
        FGLEditorInternals.RestorePurchases(FGLEnhance_Callbacks.CallbackObjectName);
#elif UNITY_ANDROID
        FGLAndroidInternals.RestorePurchases(FGLEnhance_Callbacks.CallbackObjectName);
#elif UNITY_IOS
        FGLiOSInternals.ManuallyRestorePurchases(FGLEnhance_Callbacks.CallbackObjectName);
#endif
    }