public async Task <string> Charge(ChargeCardRequest request, MoneyDriver moneyDriver) { if (String.IsNullOrEmpty(moneyDriver.Token)) { throw new Exception("Money Driver Token is required"); } string resource = this.resources[moneyDriver.Environment].ChargeCard; List <KeyValuePair <string, string> > headers = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string> (Headers.Authorization, moneyDriver.Token) }; var response = await new ApiRequest(resource).MakeRequest(data: request, method: Verbs.POST, headers: headers); return(response); }
public async Task Send() { try { if (!CanSend()) { return; } if (!connectivity.IsConnected) { await View.DisplayAlert("...", "Internet connection required", "Ok"); return; } var amount = decimal.Parse(Amount.Value); var request = new ChargeCardRequest { Amount = amount, }; using (WorkingScope.Enter()) { var response = await cardsService.ChargeCard(secureStorage.GetUserId().Value, appData.Cards.First().Id, request); appData.Cards.First().Balance = response.NewCardBalance; appData.BucketAmount = response.NewBucketAmount; await cardData.SaveCards(appData.Cards); await bucketData.SaveBucketInfo(new BucketInfo { Amount = appData.BucketAmount }); } await View.DisplayAlert("Done", "Card charged successfully!", "Ok"); } catch (Exception ex) { Crashes.TrackError(ex, new Dictionary <string, string> { { "page", "send bucket to card" }, { "operation", $"{nameof(BucketHomeViewModel)}.{nameof(Send)}" } }); await View.DisplayAlert("Error", "An error occurred while processing your request" + ex, "Ok"); } }