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); }
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, }); }
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 }); }
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, }); }
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, }); }
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 }); }
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, }); }