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"] })); }
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)); }