Пример #1
0
        public async Task <IActionResult> MpesaOnlineTransactionStatus(LipaNaMpesaOnlinePushStkResponse response)
        {
            LipaNaMpesaQueryStkResponse queryResult;

            try
            {
                var LipaNaMpesaOnlineQuery = new LipaNaMpesaQuery
                                             (
                    businessShortCode: _mpesaApiConfiguration.LNMOshortCode,
                    passkey: _mpesaApiConfiguration.PassKey,
                    timeStamp: DateTime.Now,
                    checkoutRequestId: response.CheckoutRequestID
                                             );

                queryResult = await _mpesaClient.QueryLipaNaMpesaTransactionAsync(LipaNaMpesaOnlineQuery, await RetrieveAccessToken(), MpesaRequestEndpoint.QueryLipaNaMpesaOnlineTransaction);
            }
            catch (MpesaAPIException ex)
            {
                _logger.LogError(ex, ex.Message);
                return(View().WithDanger("Error", ex.Message));
            }

            var LNMOQueryResponse = queryResult;

            LNMOQueryResponse.PhoneNumber = response.PhoneNumber;

            return(RedirectToAction(nameof(MpesaPaymentConfirmation), LNMOQueryResponse));
        }
        private async Task ExecuteMpesaStkQueryCommand(LipaNaMpesaOnlinePushStkResponse response)
        {
            try
            {
                var LipaNaMpesaOnlineQuery = new LipaNaMpesaQuery
                                             (
                    businessShortCode: mpesaAPIConfiguration.LNMOshortCode,
                    timeStamp: DateTime.Now,
                    passkey: mpesaAPIConfiguration.PassKey,
                    checkoutRequestId: response.CheckoutRequestID
                                             );

                var stkQueryResults = await _mpesaClient.QueryLipaNaMpesaTransactionAsync(LipaNaMpesaOnlineQuery, await RetrieveAccessToken(), MpesaRequestEndpoint.QueryLipaNaMpesaOnlineTransaction);

                if (stkQueryResults.ResultCode.Equals("0"))
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        _dialogs.Alert(new AlertConfig()
                                       .SetMessage("Thank you for your payment!")
                                       .SetTitle(stkQueryResults.ResponseDescription)
                                       .SetAction(async() => await _navigationService.NavigateAsync("/NavigationPage/MpesaPushStkPage")));
                    });
                }
                else
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        _dialogs.Alert(new AlertConfig()
                                       .SetMessage("Something went wrong with the transaction. Please try again")
                                       .SetTitle(stkQueryResults.ResponseDescription)
                                       .SetAction(async() => await _navigationService.NavigateAsync("/NavigationPage/MpesaPushStkPage")));
                    });
                }
            }
            catch (MpesaAPIException ex)
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    _dialogs.Alert(new AlertConfig()
                                   .SetMessage(ex.Message.ToString())
                                   .SetTitle(ex.StatusCode.ToString()));
                });
            }
            catch (Exception ex)
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    _dialogs.Alert(new AlertConfig()
                                   .SetMessage(ex.Message.ToString())
                                   .SetTitle("Error"));
                });
            }
        }
Пример #3
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"] }));
        }