예제 #1
0
        public async void LoadMoney_ThrowsException_OnInvalidCardNumber()
        {
            await this.SignIn();

            var request = new LoadMoneyRequest();

            request.PaymentDetails = new CardPayment()
            {
                PaymentType = PaymentType.Card,
                Card        = new Card()
                {
                    AccountHolderName = "Pearson Charles",
                    CVV        = "123",
                    ExpiryDate =
                        new CardExpiry()
                    {
                        Month = 12,
                        Year  = 2018
                    },
                    CardNumber = "123456789123",
                    CardType   = CardType.Debit
                }
            };

            Assert.Throws <ArgumentException>(async() => await Wallet.LoadMoneyAsync(request));
        }
예제 #2
0
        public async void LoadMoney_ReturnsSuccess_OnValidNetBanking()
        {
            await this.SignIn();

            var request = new LoadMoneyRequest();

            request.BillAmount  = amount;
            request.RedirectUrl = "http://yourwebsite.com/return_url.php";
            request.UserDetails = userDetails;

            request.PaymentDetails = new NetBankingPayment()
            {
                PaymentType = PaymentType.NetBanking,
                NetBanking  = new NetBanking()
                {
                    Code = "CID002"
                }
            };

            var result = await Wallet.LoadMoneyAsync(request);

            Assert.IsNotNull(result);

            Assert.IsNotNullOrEmpty(result.Code);

            Assert.IsNotNullOrEmpty(result.Status);
        }
예제 #3
0
        private async void NetBanking_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                LoadingBar.Visibility = Visibility.Visible;
                string BankCode    = txtLoadBankCode.Text;
                Int32  orderAmount = 1;

                var request = new LoadMoneyRequest();
                this.amount.Value      = orderAmount;
                request.BillAmount     = this.amount;
                request.RedirectUrl    = ReturnURL;
                request.UserDetails    = this.UserDetails;
                request.PaymentDetails = new NetBankingPayment()
                {
                    PaymentType = PaymentType.NetBanking,
                    NetBanking  = new NetBanking()
                    {
                        Code = BankCode
                    }
                };

                var result = await Wallet.LoadMoneyAsync(request);

                if (result != null && !string.IsNullOrEmpty(result.RedirectUrl))
                {
                    LoadWebView(result.RedirectUrl);
                    MessageBox.Show("Result Code:" + result.Code + ", Status: " + result.Status);
                }
                else
                {
                    MessageBox.Show("Something went wrong");
                }
            }
            catch (ServiceException exception)
            {
                MessageBox.Show(exception.Message);
            }
            catch (ArgumentException exception)
            {
                MessageBox.Show(exception.Message);
            }
            catch (UnauthorizedAccessException exception)
            {
                MessageBox.Show(exception.Message);
            }
            finally
            {
                LoadingBar.Visibility = Visibility.Collapsed;
            }
        }
예제 #4
0
        private async void Token_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                LoadingBar.Visibility = Visibility.Visible;
                var request = new LoadMoneyRequest();
                this.amount.Value      = 1;
                request.BillAmount     = this.amount;
                request.RedirectUrl    = ReturnURL;
                request.UserDetails    = this.UserDetails;
                request.PaymentDetails = new TokenPayment()
                {
                    PaymentType = PaymentType.Token,
                    CVV         = "000",
                    TokenId     = "acdb59d66d55bc95dc76a86b1b99387c"
                };

                var result = await Wallet.LoadMoneyAsync(request);

                if (result != null && !string.IsNullOrEmpty(result.RedirectUrl))
                {
                    LoadWebView(result.RedirectUrl);
                    MessageBox.Show("Result Code:" + result.Code + ", Status: " + result.Status);
                }
                else
                {
                    MessageBox.Show("Something went wrong");
                }
            }
            catch (ServiceException exception)
            {
                MessageBox.Show(exception.Message);
            }
            catch (ArgumentException exception)
            {
                MessageBox.Show(exception.Message);
            }
            catch (UnauthorizedAccessException exception)
            {
                MessageBox.Show(exception.Message);
            }
            finally
            {
                LoadingBar.Visibility = Visibility.Collapsed;
            }
        }
예제 #5
0
        public static async Task <Transaction> LoadMoneyAsync(LoadMoneyRequest request)
        {
            await Session.GetTokenIfEmptyAsync(AuthTokenType.SignIn);

            if (Session.signInToken == null || string.IsNullOrEmpty(Session.signInToken.AccessToken))
            {
                throw new UnauthorizedAccessException("User is not logged to perform this operation");
            }

            var cardPayment = request.PaymentDetails as CardPayment;

            if (cardPayment != null && !Utility.PassesLuhnTest(cardPayment.Card.CardNumber))
            {
                throw new ArgumentException("Invalid card number, Please provide a valid card detail");
            }

            var prepaidBill = await GetPrepaidBillAsync(
                request.BillAmount.Value,
                request.BillAmount.CurrencyType,
                request.RedirectUrl);

            if (prepaidBill != null)
            {
                request.ReturnUrl             = prepaidBill.ReturnUrl;
                request.NotifyUrl             = prepaidBill.NotifyUrl;
                request.BillAmount            = prepaidBill.BillAmount;
                request.MerchantAccessKey     = prepaidBill.MerchantAccessKey;
                request.MerchantTransactionId = prepaidBill.MerchantTransactionId;
                request.Signature             = prepaidBill.Signature;
            }

            RestWrapper rest   = new RestWrapper();
            var         result = await rest.Post <Transaction>(Service.LoadMoney, AuthTokenType.SignIn, request, true);

            if (!(result is Error))
            {
                return((Transaction)result);
            }

            Utility.ParseAndThrowError(((Error)result).Response);
            return(null);
        }
예제 #6
0
        public async void LoadMoney_ReturnsSuccess_OnValidCard()
        {
            await this.SignIn();

            var request = new LoadMoneyRequest();

            request.BillAmount  = amount;
            request.RedirectUrl = "http://yourwebsite.com/return_url.php";
            request.UserDetails = userDetails;

            request.PaymentDetails = new CardPayment()
            {
                PaymentType = PaymentType.Card,
                Card        = new Card()
                {
                    AccountHolderName = "Pearson Charles",
                    CVV        = "123",
                    ExpiryDate =
                        new CardExpiry()
                    {
                        Month = 12,
                        Year  = 2018
                    },
                    CardNumber = "4242424242424242",
                    CardType   = CardType.Debit
                }
            };

            var result = await Wallet.LoadMoneyAsync(request);

            Assert.IsNotNull(result);

            Assert.IsNotNullOrEmpty(result.Code);

            Assert.IsNotNullOrEmpty(result.Status);
        }
예제 #7
0
        public async void LoadMoney_ReturnsSuccess_OnValidToken()
        {
            await this.SignIn();

            var request = new LoadMoneyRequest();

            request.BillAmount     = amount;
            request.RedirectUrl    = "http://yourwebsite.com/return_url.php";
            request.UserDetails    = userDetails;
            request.PaymentDetails = new TokenPayment()
            {
                PaymentType = PaymentType.Token,
                CVV         = "000",
                TokenId     = "acdb59d66d55bc95dc76a86b1b99387c"
            };

            var result = await Wallet.LoadMoneyAsync(request);

            Assert.IsNotNull(result);

            Assert.IsNotNullOrEmpty(result.Code);

            Assert.IsNotNullOrEmpty(result.Status);
        }
예제 #8
0
        private async void Card_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                string   AccountHolderName = txtcardAccountHolderName.Text;
                string   CVV         = txtcardCVV.Text;
                Int32    ExpiryMonth = Convert.ToInt32(txtcardExpiryMM.Text);
                Int32    ExpiryYear  = Convert.ToInt32(txtcardExpiryYYYY.Text);
                string   CardNumber  = txtcardCardNumber.Text;
                string   strCardType = txtcardCardType.Text;
                CardType objCardType;
                if (strCardType.ToLower() == "debit")
                {
                    objCardType = CardType.Debit;
                }
                else if (strCardType.ToLower() == "credit")
                {
                    objCardType = CardType.Credit;
                }
                else if (strCardType.ToLower() == "prepaid")
                {
                    objCardType = CardType.Prepaid;
                }
                else
                {
                    objCardType = CardType.UnKnown;
                }

                this.amount.Value         = Convert.ToInt32(txtcardAmount.Text);
                this.UserDetails.Email    = txtcardemailid.Text;
                this.UserDetails.MobileNo = txtcardmobile.Text;

                LoadingBar.Visibility = Visibility.Visible;
                var request = new LoadMoneyRequest();
                request.BillAmount     = this.amount;
                request.RedirectUrl    = ReturnURL;
                request.UserDetails    = this.UserDetails;
                request.PaymentDetails = new CardPayment()
                {
                    PaymentType = PaymentType.Card,
                    Card        = new Card()
                    {
                        AccountHolderName = AccountHolderName,
                        CVV        = CVV,
                        ExpiryDate =
                            new CardExpiry()
                        {
                            Month = ExpiryMonth,
                            Year  = ExpiryYear
                        },
                        CardNumber = CardNumber,
                        CardType   = objCardType
                    }
                };

                var result = await Wallet.LoadMoneyAsync(request);

                if (result != null && !string.IsNullOrEmpty(result.RedirectUrl))
                {
                    OpenWebView(result.RedirectUrl, "");
                    new MessageDialog("Result Code:" + result.Code + ", Status: " + result.Status).ShowAsync();
                }
                else
                {
                    new MessageDialog("Something went wrong").ShowAsync();
                }
            }
            catch (ServiceException exception)
            {
                new MessageDialog(exception.Message).ShowAsync();
            }
            catch (ArgumentException exception)
            {
                new MessageDialog(exception.Message).ShowAsync();
            }
            catch (UnauthorizedAccessException exception)
            {
                new MessageDialog(exception.Message).ShowAsync();
            }
            finally
            {
                LoadingBar.Visibility = Visibility.Collapsed;
            }
        }