예제 #1
0
        public async Task <IActionResult> MpesaOnlineTransactionStatus(IFormCollection formcollection)
        {
            var accesstoken = await _mpesaClient.GetAuthTokenAsync(ConsumerKey, ConsumerSecret, RequestEndPoint.AuthToken);

            var LNMOQuery = new LipaNaMpesaQueryDto
                            (
                "174379",
                PassKey,
                DateTime.Now,
                formcollection["checkoutRequestId"]
                            );

            var queryResult = await _mpesaClient.QueryLipaNaMpesaTransactionAsync(LNMOQuery, accesstoken, RequestEndPoint.QueryLipaNaMpesaOnlieTransaction);


            return(RedirectToAction("ConfirmMpesaPayment", new { response = queryResult, customerNumber = formcollection["phone_number"] }));
        }
예제 #2
0
        private async Task <string> RetrieveAccessToken()
        {
            var cacheKey = "MpesaAccessToken";

            if (_memoryCache.TryGetValue(cacheKey, out string mpesaAccessToken))
            {
                _logger.LogInformation("Getting token from memory...");
                return(mpesaAccessToken);
            }
            else
            {
                _logger.LogInformation("Getting token from Mpesa Server...");
                mpesaAccessToken = await _mpesaClient.GetAuthTokenAsync(_mpesaApiConfiguration.ConsumerKey, _mpesaApiConfiguration.ConsumerSecret, MpesaRequestEndpoint.AuthToken);

                // Set cache options
                var cacheEntryOptions = new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(59));

                // Save data in cache
                _memoryCache.Set(cacheKey, mpesaAccessToken, cacheEntryOptions);

                return(mpesaAccessToken);
            }
        }
 // To-Do refresh access token after every one hour
 private async Task <string> RetrieveAccessToken()
 {
     return(await _mpesaClient.GetAuthTokenAsync(mpesaAPIConfiguration.ConsumerKey, mpesaAPIConfiguration.ConsumerSecret, MpesaRequestEndpoint.AuthToken));
 }