示例#1
0
        public MpesaResponse MnauriRequest(MpesaRequest req)
        {
            MpesaResponse resp = new MpesaResponse();

            try
            {
                if (req == null)
                {
                    return(new MpesaResponse
                    {
                        message = "Request cannt be empty!!!!!!!!!!!"
                    });
                }
                string data = "";

                resp = makeRequest(req);
                //string data =  new StreamReader(HttpContext.Request.Body);// Request.Content.ReadAsStringAsync();
                using (StreamReader stream = new StreamReader(HttpContext.Request.Body))
                {
                    data = stream.ReadToEnd();
                    // body = "param=somevalue&param2=someothervalue"
                }
                Util.LogError("MpesaResponse", new Exception(data), false);
                if (!string.IsNullOrEmpty(data))
                {
                    Util.LogError("MpesaResponse", new Exception(data));
                }
                if (resp.ResponseCode == "0")
                {
                    resp.message = "wahala!!!";
                }

                return(resp);
            }
            catch (Exception ex)
            {
                Util.LogError("MpesaResponse", ex);
            }
            return(resp);
        }
示例#2
0
        public MpesaResponse makeRequest(MpesaRequest req)
        {
            //this url,consumer key , secret key should be fetched from a db for easier management
            string authUrl        = "https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials";
            string consumerkey    = "9HUN5NOlioAZdjhEofAyFD0nr4j69xQv";
            string consumersecret = "LK2iIjCN3a4G4a6P";
            String timeStamp      = "20181101101948";// format to generate DateTime.Now.ToString("yyyyMMddHHmmss");

            string   Password = "";
            Encoding iso      = Encoding.GetEncoding("ISO-8859-1");
            Encoding utf8     = Encoding.UTF8;

            byte[] utfBytes  = utf8.GetBytes(consumerkey + consumersecret);
            byte[] isoBytes  = Encoding.Convert(Encoding.UTF8, iso, utfBytes);
            string d         = Convert.ToBase64String(isoBytes);
            string authToken = GetMPesaAuthToken(authUrl, consumerkey, consumersecret);

            if (string.IsNullOrEmpty(authToken))
            {
                return new MpesaResponse
                       {
                           ResultCode = "1",
                           message    = "Failed to get auth token!"
                       }
            }
            ;
            //password
            string pass = req.BusinessShortCode + "bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919" + "20181101101948";

            byte[] passutfBytes = utf8.GetBytes(pass);
            byte[] passisoBytes = Encoding.Convert(Encoding.UTF8, iso, passutfBytes);
            Password = Convert.ToBase64String(passisoBytes);

            MpesaResponse resp = new MpesaResponse();

            //----- Post main transaction -- add record to db --ones posted update txn status --
            MpesaRequest postModel = new MpesaRequest
            {
                PostUrl           = "https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest",
                BusinessShortCode = req.BusinessShortCode,
                Password          = Password,
                Timestamp         = timeStamp,
                TransactionType   = "CustomerPayBillOnline",
                Amount            = "310",
                PartyA            = "254707318620",
                PartyB            = req.BusinessShortCode,
                PhoneNumber       = "254707318620",
                CallBackURL       = "http://8ba878d9.ngrok.io/Mpesa/api/v1/Mpesa/LipaOnline",
                AccountReference  = "MN2018",
                TransactionDesc   = "this is a test"
            };
            var jsonData = JsonConvert.SerializeObject(postModel);

            //=============================================
            Util.LogError("PostMnauri mpesa request:Data ", new Exception(jsonData), false);
            //===============================================
            var postResp = DoPost(jsonData, authToken, postModel.PostUrl);

            //=============================================
            Util.LogError("PostMnauri mpesa request >> ", new Exception(postResp), false);
            //===============================================


            if (postResp.StartsWith("Error!"))
            {
                return(new MpesaResponse
                {
                    ResponseCode = "140",
                    ResponseDescription = postResp
                });
            }
            else
            {
                var respData = JsonConvert.DeserializeObject <MpesaResponse>(postResp);

                return(respData);
            }
        }