public async Task <IActionResult> SimulateC2B() { C2BRequest c2BRequest = new C2BRequest { Amount = "10", Msisdn = "254712345678", BillRefNumber = "UDF9FDKJ98", ShortCode = "600214" }; Mpesa mpesa = new Mpesa(); var response = await mpesa.C2BAsync(_options.ConsumerKey, _options.ConsumerSecret, c2BRequest); return(Json(response)); }
public async Task <Object> ProcessTransaction1(C2BRequest mpesaRequest, string token) { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Clear(); client.BaseAddress = new Uri("https://sandbox.safaricom.co.ke"); client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}"); var json = JsonConvert.SerializeObject(mpesaRequest); var httpContent = new StringContent(json, Encoding.UTF8, "application/json"); var resWithToken = client.PostAsync("/mpesa/c2b/v1/simulate", httpContent).Result; stringData = resWithToken.Content.ReadAsStringAsync().Result; var response = JsonConvert.DeserializeObject <C2BResponse>(stringData); return(response); }
public void ProcessTransaction(C2BRequest mpesaRequest, string b2cUrl, string token) { if (mpesaRequest == null) { //return null; } string serializedBodyRequest = JsonConvert.SerializeObject(mpesaRequest); HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(b2cUrl); httpRequest.ContentType = "application/json"; httpRequest.Method = "POST"; httpRequest.Headers.Add("Authorization", "Bearer" + token); using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream())) { streamWriter.Write(serializedBodyRequest); streamWriter.Flush(); streamWriter.Close(); } try { HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse(); var result = ""; using (var responseStream = new StreamReader(httpResponse.GetResponseStream())) { result = responseStream.ReadToEnd(); } var b2CResponse = JsonConvert.DeserializeObject <String>(result); if (b2CResponse == null) { // return null; } //return b2CResponse; } catch (Exception Ex) { //return null; } }
public async Task <string[]> C2BAsync(string consumerKey, string consumersecret, C2BRequest c2BRequest, bool isSandbox = true) { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; c2BRequest.CommandID = "CustomerPayBillOnline"; JObject jObject = JObject.FromObject(c2BRequest); string auth = Authenticate(consumerKey, consumersecret, isSandbox); string baseUrl = getBaseUrl(isSandbox); return(await SendApiRequestAsync(auth, baseUrl, "mpesa/c2b/v1/simulate", jObject)); }