private void Start()
    {
        SetStoreActiveState(false);
        m_Connect.onClick.AddListener(() =>
        {
            var observer = new UM_TransactionObserverExample();
            UM_InAppService.Client.SetTransactionObserver(observer);

            UM_InAppService.Client.Connect((connectionResult) => {
                if (connectionResult.IsSucceeded)
                {
                    //You are now connected to the payment service.
                    //Also all product's info are updated at this point from according to server values.
                    SetStoreActiveState(true);
                    PrintAvailableProductsInfo();
                    UM_DialogsUtility.ShowMessage("Connection Succeeded", "In App Service is now connected and ready to use!");
                }
                else
                {
                    //Connection failed.
                    UM_DialogsUtility.ShowMessage("Connection Failed", connectionResult.Error.FullMessage);
                }
            });
        });

        m_PurchaseConsumable.onClick.AddListener(() => { StartPayment(UM_ProductType.Consumable); });
        m_PurchaseNonConsumable.onClick.AddListener(() => { StartPayment(UM_ProductType.NonConsumable); });
        m_TestFailedPurchase.onClick.AddListener(() => { UM_InAppService.Client.AddPayment("non_existed_product_id"); });

        m_RestoreTransactions.onClick.AddListener(() =>
        {
            Restore();
        });

        m_CheckAccess.onClick.AddListener(() =>
        {
            AN_LicenseChecker.CheckAccess((result) => {
                if (result.IsSucceeded)
                {
                    UM_DialogsUtility.ShowMessage("Policy Code", result.PolicyCode.ToString());
                }
                else
                {
                    UM_DialogsUtility.ShowMessage("AN_LicenseChecker error", result.Error.FullMessage);
                }
            });
        });

        m_SubscriptionReplace.onClick.AddListener(SubscriptionReplace);
    }
    private void Awake()
    {
        UpdateStatusBar();
        var observer = new UM_TransactionObserverExample();

        observer.OnProductUnlock += UpdateStatusBar;

        UM_InAppService.Client.SetTransactionObserver(observer);

        m_ConnectButton.onClick.AddListener(() =>
        {
            m_ConnectButton.interactable = false;
            UM_InAppService.Client.Connect(result =>
            {
                if (result.IsSucceeded)
                {
                    foreach (var purchaseButton in m_PurchaseButtons)
                    {
                        purchaseButton.UpdateButtonView();
                    }
                }
                else
                {
                    m_ConnectButton.interactable = true;
                    UM_DialogsUtility.ShowMessage("Error", result.Error.FullMessage);
                }
            });
        });

        m_ClearPlayerPrefs.onClick.AddListener(() =>
        {
            UM_RewardManager.Reset();
            UpdateStatusBar();
        });


        m_RestorePurchases.onClick.AddListener(UM_InAppService.Client.RestoreCompletedTransactions);
        m_RestorePurchases.gameObject.SetActive(Application.platform == RuntimePlatform.IPhonePlayer ||
                                                Application.isEditor);

        foreach (var purchaseButton in m_PurchaseButtons)
        {
            purchaseButton.Button.onClick.AddListener(() =>
            {
                UM_InAppService.Client.AddPayment(purchaseButton.ProductId);
            });
        }
    }