Пример #1
0
        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;
            }
        }
Пример #2
0
        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");
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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");
            }
        }
Пример #7
0
        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");
            }
        }