/// <summary>
        /// Gets merchant account. Privatbank API reference: <https://api.privatbank.ua/#p24/balance>.
        /// </summary>
        /// <param name="password">Private merchant password.</param>
        /// <param name="merchantId">Merchant id.</param>
        /// <param name="cardNumber">Merchant assossiated card number.</param>
        /// <returns></returns>
        public async Task <PrivatbankAccount> GetMerchantAccountAsync(string password, string merchantId, string cardNumber)
        {
            AccountBalanceRequest request  = new AccountBalanceRequest(password, merchantId, cardNumber);
            HttpResponseMessage   response = await _privatbankClient.GetMerchantDataAsync("balance", request.Xml);

            string xml = await response.Content.ReadAsStringAsync();

            AccountParser     parser  = new AccountParser();
            PrivatbankAccount account = parser.Parse(xml);

            return(account);
        }
        /// <summary>
        /// Get Account Balance
        /// </summary>
        /// <returns></returns>
        public async Task <ClientResponse <AccountBalanceResponse> > AccountBalance()
        {
            var token = await GetToken();

            var accountBalanceRquest = new AccountBalanceRequest
            {
                SubscriptionKey = remittanceConfig.SubscriptionKey,
                RequestUri      = RemittanceRequestUri.AccountBalance,
                Token           = token?.AccessToken
            };

            return(await accountBalanceClient.AccountBalance(accountBalanceRquest));
        }
Exemple #3
0
 public virtual Response <object> AccountBalance(AccountBalanceRequest body, CancellationToken cancellationToken = default)
 {
     using var scope = _clientDiagnostics.CreateScope("RosettaClient.AccountBalance");
     scope.Start();
     try
     {
         return(RestClient.AccountBalance(body, cancellationToken));
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }
Exemple #4
0
 public virtual async Task <Response <object> > AccountBalanceAsync(AccountBalanceRequest body, CancellationToken cancellationToken = default)
 {
     using var scope = _clientDiagnostics.CreateScope("RosettaClient.AccountBalance");
     scope.Start();
     try
     {
         return(await RestClient.AccountBalanceAsync(body, cancellationToken).ConfigureAwait(false));
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }
Exemple #5
0
        public AccountBalanceDataPackage Query(int beginYear, int beginPeriod, int endYear, int endPeriod)
        {
            var request = new AccountBalanceRequest
            {
                BeginPeriod = beginPeriod,
                BeginYear   = beginYear,
                EndPeriod   = endPeriod,
                EndYear     = endYear
            };
            AccountBalanceResponse    rsp     = Execute(request);
            AccountBalanceDataPackage package = new AccountBalanceDataPackage();

            package.ListBeginBalnace  = rsp.ListBeginBalnace;
            package.ListCurrentOccurs = rsp.ListCurrentOccurs;
            return(package);
        }
Exemple #6
0
        public void GetFromJson_WhenRequestIsNotValid_ThrowsInvalidOperationException()
        {
            var    json = "validJson";
            var    accountBalanceRequest = new AccountBalanceRequest();
            string reason;

            accountRequestParser.Setup(p => p.GetAccountBalanceRequestFromString(json))
            .Returns(accountBalanceRequest);
            validator.Setup(v => v.IsValid(It.IsAny <AccountBalanceRequest>(), out reason)).Returns(false);

            TestDelegate act = () => service.GetFromJson(json);

            Assert.That(act, Throws.InvalidOperationException);
            accountRequestParser.Verify(p => p.GetAccountBalanceRequestFromString(json), Times.Once);
            validator.Verify(v => v.IsValid(It.IsAny <AccountBalanceRequest>(), out reason), Times.Once);
            reportGenerator.Verify(r => r.Generate(It.IsAny <Account>(), It.IsAny <DateTime>()), Times.Never);
        }
Exemple #7
0
        public async Task <IActionResult> GetAccountBalance()
        {
            Mpesa mpesa = new Mpesa();
            AccountBalanceRequest accountBalanceRequest = new AccountBalanceRequest
            {
                Initiator       = "testapi",
                Password        = "******",
                PartyA          = "600214",
                Remarks         = "Test",
                QueueTimeOutURL = "https://testurl.co.ke",
                ResultURL       = "https://testurl.co.ke"
            };

            var response = await mpesa.AccountBalanceAsync(_options.ConsumerKey, _options.ConsumerSecret, accountBalanceRequest);

            return(Json(response));
        }
Exemple #8
0
        public void IsValid_WhenRequestIsValid_ReturnsTrue()
        {
            var request = new AccountBalanceRequest
            {
                Accounts = new List <Account>
                {
                    new Account {
                        CurrencyCode = "GBP"
                    },
                }
            };

            var result = validator.IsValid(request, out string reason);

            Assert.That(result, Is.True);
            Assert.That(reason, Is.Null);
        }
Exemple #9
0
        public void IsValid_WhenRequestContainsMultipleCurrencies_ReturnsFalse()
        {
            var request = new AccountBalanceRequest
            {
                Accounts = new List <Account>
                {
                    new Account {
                        CurrencyCode = "GBP"
                    },
                    new Account {
                        CurrencyCode = "HUF"
                    },
                }
            };

            var result = validator.IsValid(request, out string reason);

            Assert.That(result, Is.False);
            Assert.That(reason, Is.EqualTo("Accounts using different currency."));
        }
        /// <summary>
        /// Get account balance for Product
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ClientResponse <AccountBalanceResponse> > AccountBalance(AccountBalanceRequest request)
        {
            if (string.IsNullOrEmpty(request.Token))
            {
                return(new ClientResponse <AccountBalanceResponse> {
                    Status = Status.Failed.ToString(), StatusCode = HttpStatusCode.Unauthorized
                });
            }

            var headers = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>(Constants.SubKeyHeader, request.SubscriptionKey),
                new KeyValuePair <string, string>(Constants.AuthHeader, $"Bearer {request.Token}"),
            };

            var response = await baseClient.GetAsync <AccountBalanceResponse>(request.RequestUri, Constants.MtnClient, headers);

            response.Status = response.StatusCode == HttpStatusCode.OK ? Status.Successful.ToString() : Status.Failed.ToString();

            return(response);
        }
Exemple #11
0
        public void GetFromFile_ReturnsReport()
        {
            var filePath = "validFilePath";
            var accountBalanceRequest = new AccountBalanceRequest {
                Accounts = new List <Account> {
                    new Account()
                }
            };
            string reason;

            accountRequestParser.Setup(p => p.GetAccountBalanceRequestFromFile(filePath))
            .Returns(accountBalanceRequest);
            validator.Setup(v => v.IsValid(It.IsAny <AccountBalanceRequest>(), out reason)).Returns(true);

            TestDelegate act = () => service.GetFromFile(filePath);

            Assert.That(act, Throws.Nothing);
            accountRequestParser.Verify(p => p.GetAccountBalanceRequestFromFile(It.IsAny <string>()), Times.Once);
            validator.Verify(v => v.IsValid(It.IsAny <AccountBalanceRequest>(), out reason), Times.Once);
            reportGenerator.Verify(r => r.Generate(It.IsAny <Account>(), It.IsAny <DateTime>()), Times.Once);
        }
Exemple #12
0
        public FinanceResponse Query(AccountBalanceRequest request)
        {
            if (request == null)
            {
                throw new FinanceException(FinanceResult.NULL);
            }
            var beginYear   = request.BeginYear;
            var beginPeriod = request.BeginPeriod;
            var endYear     = request.EndYear;
            var endPeriod   = request.EndPeriod;

            var prevPeriod = CommonUtils.CalcPrevPeriod(new PeridStrunct {
                Year = beginYear, Period = beginPeriod
            });
            List <AccountAmountItem> lstBegin   = service.QuerySettled(prevPeriod.Year, prevPeriod.Period);
            List <AccountAmountItem> lstCurrent = service.QueryOccurs(beginYear, beginPeriod, endYear, endPeriod);

            return(new AccountBalanceResponse {
                ListBeginBalnace = lstBegin, ListCurrentOccurs = lstCurrent
            });
        }
        static async Task <AccountBalanceResponse> AccountBalanceAsync()
        {
            AccountBalanceRequest _accountBalanceRequest = new AccountBalanceRequest()
                                                           .AsSecurityCredential("Safaricom474!")
                                                           .AsEntity("testapi474", "600474")
                                                           .AsCommandID("AccountBalance")
                                                           .AsEndpoints("https://safaricom.api", "https://safaricom.api")
                                                           .AsComments("Test")
                                                           .AsIdentifierType(4);

            AccountBalanceResponse _response = await _safaricomApiClient.PostPaymentRequestAsync(_accountBalanceRequest);

            if (_response.ErrorCode == null)
            {
                Console.WriteLine("===========================================");
                Console.WriteLine("=====Account Balance Success Response======");
                Console.WriteLine("===========================================");

                Console.WriteLine(Environment.NewLine);
                Console.WriteLine(_response.OriginatorConversationID + Environment.NewLine + _response.ConversationID + Environment.NewLine + _response.ResponseDescription);
                Console.WriteLine(Environment.NewLine);
            }

            else
            {
                Console.WriteLine("===========================================");
                Console.WriteLine("======Account Balance Error Response=======");
                Console.WriteLine("===========================================");

                Console.WriteLine(Environment.NewLine);
                Console.WriteLine(_response.ErrorCode + Environment.NewLine + _response.ErrorMessage + Environment.NewLine + _response.ErrorRequestId);
                Console.WriteLine(Environment.NewLine);
            }

            return(_response);
        }
Exemple #14
0
        public async Task <string[]> AccountBalanceAsync(string consumerKey, string consumersecret, AccountBalanceRequest accountBalance, bool isSandbox = true)
        {
            string security = Encryption(accountBalance.Password.Trim());

            accountBalance.SecurityCredential = security;
            accountBalance.IdentifierType     = IdentifierType.OrganizationShortCode;
            accountBalance.CommandID          = "AccountBalance";

            JObject jObject = JObject.FromObject(accountBalance);

            string auth    = Authenticate(consumerKey, consumersecret, isSandbox);
            string baseUrl = getBaseUrl(isSandbox);

            return(await SendApiRequestAsync(auth, baseUrl, "mpesa/accountbalance/v1/query", jObject));
        }
 private void HandleBalanceRequest(AccountBalanceRequest msg)
 {
     Sender.Tell(_balance);
 }
        public void GetAccountRequestFromString_WhenInputIsGood_ReturnsAccountRequest(string input, AccountBalanceRequest expected)
        {
            var result = parser.GetAccountBalanceRequestFromString(input);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.BrandName, Is.EqualTo(expected.BrandName));
            Assert.That(result.DataSourceName, Is.EqualTo(expected.DataSourceName));
            Assert.That(result.RequestDate, Is.EqualTo(expected.RequestDate));
            Assert.That(result.Accounts.Count, Is.EqualTo(expected.Accounts.Count));
            //...
        }