public static void BuyStickersPack(StockItemHeader stockItemHeader, string referrer = "", Action successCallback = null, Action errorCallback = null)
        {
            StoreBuyProductParams buyParams = new StoreBuyProductParams(StoreProductType.stickers, stockItemHeader.ProductId)
            {
                StickerReferrer = referrer
            };
            FullscreenLoader loader = new FullscreenLoader();

            loader.Show(null, true);
            StoreService.Instance.BuyProduct(buyParams, (Action <BackendResult <StoreBuyProductResult, ResultCode> >)(result =>
            {
                loader.Hide(false);
                Action action = successCallback;
                if (action != null)
                {
                    action();
                }
                stockItemHeader.SetPurchasedState();
                EventAggregator.Current.Publish((object)new StickersPurchaseFunnelEvent(StickersPurchaseFunnelAction.success));
                EventAggregator.Current.Publish((object)new StickersPackPurchasedEvent(stockItemHeader));
            }), (Action <BackendResult <StorePurchaseResult, ResultCode> >)(result =>
            {
                loader.HiddenCallback = (Action <FullscreenLoaderHiddenEventArgs>)(args => StorePurchaseManager.HandleStorePurchaseError(result, errorCallback));
                loader.Hide(false);
            }));
        }
Esempio n. 2
0
 public void BuyProduct(StoreBuyProductParams buyParams, Action <BackendResult <StoreBuyProductResult, ResultCode> > successCallback, Action <BackendResult <StorePurchaseResult, ResultCode> > errorCallback)
 {
     if (buyParams == null || buyParams.ProductType != StoreProductType.stickers)
     {
         return;
     }
     this.FulfillPurchases(null, (Action)(() => this.DoBuyProduct(buyParams, successCallback, errorCallback)), errorCallback);
 }
Esempio n. 3
0
 private void BuyVotes(StoreBuyProductParams buyParams, Action <BackendResult <StorePurchaseResult, ResultCode> > callback)
 {
     VKRequestsDispatcher.DispatchRequestToVK <StorePurchaseResult>("store.buyVotes", new Dictionary <string, string>()
     {
         {
             "product_id",
             buyParams.ProductId.ToString()
         },
         {
             "guid",
             buyParams.RandomId.ToString()
         }
     }, callback, null, false, true, new CancellationToken?(), null);
 }
Esempio n. 4
0
        private void DoBuyProduct(StoreBuyProductParams buyParams, Action <BackendResult <StoreBuyProductResult, ResultCode> > successCallback, Action <BackendResult <StorePurchaseResult, ResultCode> > errorCallback)
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>()
            {
                {
                    "type",
                    buyParams.ProductType.ToString()
                },
                {
                    "product_id",
                    buyParams.ProductId.ToString()
                },
                {
                    "guid",
                    buyParams.RandomId.ToString()
                },
                {
                    "privacy",
                    ((int)buyParams.Privacy).ToString()
                }
            };

            if (buyParams.UserIds != null)
            {
                parameters["user_ids"] = string.Join <long>(",", (IEnumerable <long>)buyParams.UserIds);
            }
            if (!string.IsNullOrEmpty(buyParams.Message))
            {
                parameters["message"] = buyParams.Message;
            }
            if (AppGlobalStateManager.Current.GlobalState.PaymentType == AccountPaymentType.money)
            {
                parameters["no_inapp"] = "1";
            }
            if (!string.IsNullOrEmpty(buyParams.StickerReferrer))
            {
                parameters["sticker_referrer"] = buyParams.StickerReferrer;
            }
            VKRequestsDispatcher.DispatchRequestToVK <StoreBuyProductResult>("store.buyProduct", parameters, (Action <BackendResult <StoreBuyProductResult, ResultCode> >)(result =>
            {
                if (result.ResultCode == ResultCode.Succeeded)
                {
                    Action <BackendResult <StoreBuyProductResult, ResultCode> > action = successCallback;
                    if (action == null)
                    {
                        return;
                    }
                    BackendResult <StoreBuyProductResult, ResultCode> backendResult = result;
                    action(backendResult);
                }
                else
                {
                    Action <BackendResult <StorePurchaseResult, ResultCode> > action = errorCallback;
                    if (action == null)
                    {
                        return;
                    }
                    BackendResult <StorePurchaseResult, ResultCode> backendResult = new BackendResult <StorePurchaseResult, ResultCode>(result.ResultCode, StorePurchaseResult.GetForFailedPurchaseState());
                    action(backendResult);
                }
            }), null, false, true, new CancellationToken?(), (Action)(() => EventAggregator.Current.Publish(new StickersPurchaseFunnelEvent(StickersPurchaseFunnelAction.purchase_window))));
        }