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); })); }
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); }
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); }
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)))); }