Ejemplo n.º 1
0
        public static string Authenticate(string consumerKey, string consumersecret, bool isSandbox)
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            string baseurl = "https://sandbox.safaricom.co.ke";

            if (isSandbox == false)
            {
                baseurl = "https://api.safaricom.co.ke";
            }
            string appkey  = $"{consumerKey}:{consumersecret}";
            string auth    = ToBase64String(appkey);
            var    client  = new RestClient(baseurl);
            var    request = new RestRequest("oauth/v1/generate?grant_type=client_credentials", Method.GET);

            request.Parameters.Clear();
            request.AddHeader("authorization", "Basic " + auth);
            request.AddHeader("cache-control", "no-cache");
            IRestResponse response = client.Execute(request);

            if (response.Content.Contains("error"))
            {
                return(response.Content);
            }
            RootObj test = JsonConvert.DeserializeObject <RootObj>(response.Content);

            return(test.access_token);
        }
Ejemplo n.º 2
0
        public static string[] B2B(string consumerKey, string consumersecret, bool isSandbox, string initiatorName,
                                   string password, decimal amount,
                                   string Business, string ReceivingBusiness, string remarks, string queueTimeUrl, string resultUrl,
                                   string accountRef, int SenderIdentifierType, int RecieverIdentifierType)
        {
            ServicePointManager.SecurityProtocol =
                SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            string  security = Encryption(password.Trim());
            JObject simulate = new JObject
            {
                { "Initiator", initiatorName },
                { "SecurityCredential", security },
                { "CommandID", "BusinessToBusinessTransfer" },
                { "SenderIdentifierType", SenderIdentifierType },
                { "RecieverIdentifierType", RecieverIdentifierType },
                { "Amount", amount },
                { "PartyA", Business },
                { "PartyB", ReceivingBusiness },
                { "AccountReference", accountRef },
                { "Remarks", remarks },
                { "QueueTimeOutURL", queueTimeUrl },
                { "ResultURL", resultUrl }
            };
            string auth    = Authenticate(consumerKey, consumersecret, isSandbox);
            string baseurl = "https://sandbox.safaricom.co.ke";

            if (!isSandbox)
            {
                baseurl = "https://api.safaricom.co.ke";
            }
            var client = new RestClient(baseurl);

            var request = new RestRequest("mpesa/b2b/v1/paymentrequest", Method.POST);

            request.Parameters.Clear();
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", $"Bearer " + auth);
            request.AddParameter("application/json", simulate, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);

            if (response.Content.Contains("error"))
            {
                return(response.Content.Split(':'));
            }

            RootObj test = JsonConvert.DeserializeObject <RootObj>(response.Content);

            return(new string[]
            {
                "ConversationID:" + test.ConversationID,
                "OriginatorConversationId:" + test.OriginatorConversationId,
                "ResponseDescription:" + test.ResponseDescription,
            });
        }
Ejemplo n.º 3
0
        public static string[] LipaNaMpesaOnlineInitiate(string consumerKey, string consumersecret, string password,
                                                         bool isSandbox, DateTime TimeOfTransaction, decimal amount, string customerPhone, string BusinessPaybillOrTill,
                                                         string callbackUrl, string accountRef, string transactionDescription)
        {
            ServicePointManager.SecurityProtocol =
                SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            string  key      = BusinessPaybillOrTill + password + TimeStamp(TimeOfTransaction);
            JObject simulate = new JObject
            {
                { "BusinessShortCode", BusinessPaybillOrTill },
                { "Password", ToBase64String(key.Trim()) },
                { "Timestamp", TimeStamp(TimeOfTransaction) },
                { "TransactionType", "CustomerPayBillOnline" },
                { "Amount", (int)amount },
                { "PartyA", customerPhone },
                { "PartyB", BusinessPaybillOrTill },
                { "PhoneNumber", customerPhone },
                { "CallBackURL", callbackUrl },
                { "AccountReference", accountRef },
                { "TransactionDesc", transactionDescription }
            };
            string auth    = Authenticate(consumerKey, consumersecret, isSandbox);
            string baseurl = "https://sandbox.safaricom.co.ke";

            if (!isSandbox)
            {
                baseurl = "https://api.safaricom.co.ke";
            }
            var client = new RestClient(baseurl);

            var request = new RestRequest("mpesa/stkpush/v1/processrequest", Method.POST);

            request.Parameters.Clear();
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", $"Bearer " + auth);
            request.AddParameter("application/json", simulate, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);

            if (response.Content.Contains("error"))
            {
                return(response.Content.Split(':'));
            }
            RootObj test = JsonConvert.DeserializeObject <RootObj>(response.Content);

            return(new string[]
                   { "CheckoutRequestID:" + test.CheckoutRequestID,
                     "MerchantRequestID:" + test.MerchantRequestID,
                     "ResponseDescription:" + test.ResponseDescription,
                     "CustomerMessage:" + test.CustomerMessage,
                     "ResponseCode:" + test.ResponseCode });
        }
Ejemplo n.º 4
0
        public static string[] TransactionStatus(string consumerKey, string consumersecret, bool isSandbox, string initiatorName,
                                                 string password, string transactionId, string Business, string remarks, string queueTimeUrl, string resultUrl, string occassion)
        {
            ServicePointManager.SecurityProtocol =
                SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            string  security = Encryption(password.Trim());
            JObject simulate = new JObject
            {
                { "Initiator", initiatorName },
                { "SecurityCredential", security },
                { "CommandID", "TransactionStatusQuery" },
                { "TransactionID", transactionId },
                { "PartyA", Business },
                { "IdentifierType", "1" },
                { "ResultURL", resultUrl },
                { "QueueTimeOutURL", queueTimeUrl },
                { "Remarks", remarks },
                { "Occasion", occassion }
            };
            string auth    = Authenticate(consumerKey, consumersecret, isSandbox);
            string baseurl = "https://sandbox.safaricom.co.ke";

            if (!isSandbox)
            {
                baseurl = "https://api.safaricom.co.ke";
            }
            var client = new RestClient(baseurl);

            var request = new RestRequest("mpesa/transactionstatus/v1/query", Method.POST);

            request.Parameters.Clear();
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", $"Bearer " + auth);
            request.AddParameter("application/json", simulate, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);

            if (response.Content.Contains("error"))
            {
                return(response.Content.Split(':'));
            }
            RootObj test = JsonConvert.DeserializeObject <RootObj>(response.Content);

            return(new string[]
            {
                "OriginatorConverstionID:" + test.OriginatorConverstionID,
                "ConversationID:" + test.ConversationID,
                "ResponseDescription:" + test.ResponseDescription,
            });
        }
Ejemplo n.º 5
0
        public static string[] AccountBalance(string consumerKey, string consumersecret, bool isSandbox, string initiatorName,
                                              string password, string Business, string remarks,
                                              string queueTimeUrl, string resultUrl)
        {
            string  security = Encryption(password.Trim());
            JObject simulate = new JObject
            {
                { "Initiator", initiatorName },
                { "SecurityCredential", security },
                { "CommandID", "AccountBalance" },
                { "PartyA", Business },
                { "IdentifierType", "4" },
                { "Remarks", remarks },
                { "QueueTimeOutURL", queueTimeUrl },
                { "ResultURL", resultUrl }
            };
            string auth    = Authenticate(consumerKey, consumersecret, isSandbox);
            string baseurl = "https://sandbox.safaricom.co.ke";

            if (isSandbox == false)
            {
                baseurl = "https://api.safaricom.co.ke";
            }
            var client = new RestClient(baseurl);

            var request = new RestRequest("mpesa/accountbalance/v1/query", Method.POST);

            request.Parameters.Clear();
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", $"Bearer " + auth);
            request.AddParameter("application/json", simulate, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);

            if (response.Content.Contains("error"))
            {
                return(response.Content.Split(':'));
            }

            RootObj test = JsonConvert.DeserializeObject <RootObj>(response.Content);

            return(new string[]
            {
                "ConversationId:" + test.ConversationID,
                "OriginatorConversationID:" + test.OriginatorConversationID,
                " ResponseDescription:" + test.ResponseDescription,
            });
        }
Ejemplo n.º 6
0
        public static string[] LiLipaNaMpesaOnlineStatus(string consumerKey, string consumersecret, string password,
                                                         bool isSandbox, DateTime TimeOfTransaction, string BusinessShortcode, string checkoutRequestID)
        {
            ServicePointManager.SecurityProtocol =
                SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            JObject simulate = new JObject
            {
                { "BusinessShortCode", BusinessShortcode },
                { "Password", ToBase64String(password.Trim()) },
                { "Timestamp", TimeOfTransaction },
                { "CheckoutRequestID", checkoutRequestID }
            };
            string auth    = Authenticate(consumerKey, consumersecret, isSandbox);
            string baseurl = "https://sandbox.safaricom.co.ke";

            if (!isSandbox)
            {
                baseurl = "https://api.safaricom.co.ke";
            }
            var client = new RestClient(baseurl);

            var request = new RestRequest("mpesa/stkpushquery/v1/query", Method.POST);

            request.Parameters.Clear();
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", $"Bearer " + auth);
            request.AddParameter("application/json", simulate, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);

            if (response.Content.Contains("error"))
            {
                return(response.Content.Split(':'));
            }

            RootObj test = JsonConvert.DeserializeObject <RootObj>(response.Content);

            return(new string[]
            {
                "CheckoutRequestID:" + test.CheckoutRequestID,
                "MerchantRequestID:" + test.MerchantRequestID,
                "ResponseDescription:" + test.ResponseDescription,
                "CustomerMessage:" + test.CustomerMessage,
                "ResponseCode:" + test.ResponseCode
            });
        }
Ejemplo n.º 7
0
        public static string[] C2B(string consumerKey, string consumersecret,
                                   bool isSandbox, string paybill, decimal amount, string phone, string reference)
        {
            ServicePointManager.SecurityProtocol =
                SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            JObject simulate = new JObject
            {
                { "ShortCode", paybill },
                { "CommandID", "CustomerPayBillOnline" },
                { "Amount", amount },
                { "Msisdn", phone },
                { "BillRefNumber", reference }
            };
            string auth    = Authenticate(consumerKey, consumersecret, isSandbox);
            string baseurl = "https://sandbox.safaricom.co.ke";

            if (!isSandbox)
            {
                baseurl = "https://api.safaricom.co.ke";
            }
            var client = new RestClient(baseurl);

            var request = new RestRequest("mpesa/c2b/v1/simulate", Method.POST);

            request.Parameters.Clear();
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", $"Bearer " + auth);
            request.AddParameter("application/json", simulate, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);

            if (response.Content.Contains("error"))
            {
                return(response.Content.Split(':'));
            }

            RootObj test = JsonConvert.DeserializeObject <RootObj>(response.Content);

            return(new string[]
            {
                "ConversationId:" + test.ConversationID,
                "OriginatorConverstionID:" + test.OriginatorConverstionID,
                "ResponseDescription:" + test.ResponseDescription,
            });
        }