async Task GetWePayAccountInfoAsync() { try { if (!string.IsNullOrEmpty(Settings.WePayAccessToken)) { IsBusy = true; var accountResponse = await WePayApiManager.GetWePayAccounts($"Bearer {Settings.WePayAccessToken}"); if (accountResponse.IsSuccessStatusCode) { var accountResponseString = await accountResponse.Content.ReadAsStringAsync(); var accountList = JsonConvert.DeserializeObject <IList <WePayAccountResponse> >(accountResponseString); if (accountList.Count > 0) { WePayAccount = accountList.FirstOrDefault(); Settings.AccountId = WePayAccount.AccountId; } } } } catch (Exception) { } finally { IsBusy = false; } }
async Task Done(string code) { if (!string.IsNullOrEmpty(code)) { var responseMessage = await WePayApiManager.GetWePayAccessToken(new WePayTokenRequest() { ClientId = Config.WePayClientId, ClientSecret = Config.WePayClientSecret, RedirectUri = Config.WePayRedirectUri, Code = code }); if (responseMessage != null && responseMessage.IsSuccessStatusCode) { var message = await responseMessage.Content.ReadAsStringAsync(); WePayUserResponse userResponse = JsonConvert.DeserializeObject <WePayUserResponse>(message); Settings.WePayAccessToken = userResponse.AccessToken; Settings.WePayUserId = userResponse.UserId; //TODO: Handle navigation await App.Current.MainPage.Navigation.PopAsync(); } } }
async Task CreateCreditCard() { try { IsBusy = true; var createMessage = await WePayApiManager.CreateCreditCard(WePayCreditCard); var cMessage = await createMessage.Content.ReadAsStringAsync(); if (createMessage.IsSuccessStatusCode) { var creditCardResponse = JsonConvert.DeserializeObject <WePayCreditCardResponse>(cMessage); await DoCheckOutAsync(creditCardResponse.CreditCardId); } else { IsBusy = false; var wepayResponse = JsonConvert.DeserializeObject <WePayErrorResponse>(cMessage); await App.Current.MainPage.DisplayAlert("Error", $"{wepayResponse.ErrorDescription}", "Ok"); } } catch (Exception ex) { IsBusy = false; await App.Current.MainPage.DisplayAlert("Error", "Error processing payment", "Ok"); } }
async Task <bool> SendEmailAsync(WePayUserResponse data) { var sendMessage = await WePayApiManager.SendWePayConfirmationEmail($"Bearer {data.AccessToken}", new WePayEmailConfirmation() { Message = "Welcome to my App Payments" }); return(sendMessage.IsSuccessStatusCode); }
async Task <bool> OnCreateDefaultWePayAccountAsync(WePayUserResponse data) { var wePayRequestModel = new WePayAccountRequest { ReferenceId = $"Test Account: {AccountData.Email}", Name = "My App", Description = "This is a test App description" }; var createMessage = await WePayApiManager.CreateWePayAccount($"Bearer {data.AccessToken}", wePayRequestModel); return(createMessage != null && createMessage.IsSuccessStatusCode); }
async Task DoCheckOutAsync(long creditCardId) { WePayCheckout WePayCheckout = new WePayCheckout() { Type = "goods", ShortDescription = $"Items purchased using My App.", Fee = new Fee() { AppFee = 1, FeePayer = "payer" } }; WePayCheckout.DeliveryType = "point_of_sale"; WePayCheckout.AccountId = Settings.AccountId; WePayCheckout.AutoRelease = true; WePayCheckout.Amount = Amount; WePayCheckout.Currency = "USD"; WePayCheckout.HostedCheckout = null; WePayCheckout.PaymentMethod = new WePayPaymentMethod() { Type = "credit_card", CreditCardIdentifier = new CreditCardIdentifier() { Id = creditCardId } }; var response = await WePayApiManager.WePayCheckout($"Bearer {Settings.WePayAccessToken}", WePayCheckout); var message = await response.Content.ReadAsStringAsync(); IsBusy = false; if (response.IsSuccessStatusCode) { var checkoutResponse = JsonConvert.DeserializeObject <WePayCheckoutResponse>(message); await App.Current.MainPage.DisplayAlert("Yayyy", $"Payment proceessed succesfully", "Ok"); await App.Current.MainPage.Navigation.PopAsync(); } else { var wepayResponse = JsonConvert.DeserializeObject <WePayErrorResponse>(message); await App.Current.MainPage.DisplayAlert("Error", $"{wepayResponse.ErrorDescription}", "Ok"); } }
async Task RegisterUser() { try { IsBusy = true; var createMessage = await WePayApiManager.RegisterWePayUser(AccountData); if (createMessage.IsSuccessStatusCode) { var cMessage = await createMessage.Content.ReadAsStringAsync(); var accountResponse = JsonConvert.DeserializeObject <WePayUserResponse>(cMessage); var result = await OnCreateDefaultWePayAccountAsync(accountResponse); if (result) { Settings.WePayAccessToken = accountResponse.AccessToken; Settings.WePayUserId = accountResponse.UserId; Settings.UserEmail = AccountData.Email; //Handle navigation await App.Current.MainPage.Navigation.PopAsync(); await SendEmailAsync(accountResponse); } } else { IsBusy = false; await App.Current.MainPage.DisplayAlert("Error", "Unable to create account", "Ok"); } } catch (Exception) { IsBusy = false; await App.Current.MainPage.DisplayAlert("Error", "Unable to create account", "Ok"); } }