/// <summary> /// Registers Customer to Business Confirmation and Validation URLs. /// </summary> /// <param name="customerToBusinessRegisterUrl">C2B Register URLs data transfer object.</param> /// <param name="accesstoken">Acccesstoken retrieved by the <c>GetAuthTokenAsync</c> method.</param> /// <param name="mpesaRequestEndpoint">Set to <c>MpesaRequestEndpoint.RegisterC2BUrl</c></param> /// <param name="cancellationToken">Cancellation Token</param> /// <returns>A JSON string containing data from MPESA API reposnse.</returns> public async Task <MpesaResponse> RegisterC2BUrlAsync(CustomerToBusinessRegisterUrl customerToBusinessRegisterUrl, string accesstoken, string mpesaRequestEndpoint, CancellationToken cancellationToken = default) { var validator = new CustomerToBusinessRegisterUrlValidator(); var results = await validator.ValidateAsync(customerToBusinessRegisterUrl, cancellationToken); return(!results.IsValid ? throw new MpesaAPIException(HttpStatusCode.BadRequest, string.Join(Environment.NewLine, results.Errors.Select(x => x.ErrorMessage.ToString()))) : await MpesaPostRequestAsync <MpesaResponse>(customerToBusinessRegisterUrl, accesstoken, mpesaRequestEndpoint, cancellationToken)); }
public async Task <object> RegisterURLs1(CustomerToBusinessRegisterUrl 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/registerurl", httpContent).Result; stringData = resWithToken.Content.ReadAsStringAsync().Result; var response = JsonConvert.DeserializeObject <URLRegisterResponse>(stringData); return(response); }
public void RegisterURLs(CustomerToBusinessRegisterUrl 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 <IActionResult> C2BRegister(CustomerToBusinessRegisterViewModel customerToBusinessRegisterViewModel) { MpesaResponse c2BRegisterResults; try { var c2BRegisterCallback = new CustomerToBusinessRegisterUrl ( shortCode: _mpesaApiConfiguration.C2BShortCode, responseType: customerToBusinessRegisterViewModel.customerToBusinessResponse.ToString(), confirmationUrl: customerToBusinessRegisterViewModel.ConfirmationUrl, validationUrl: customerToBusinessRegisterViewModel.ValidationUrl ); c2BRegisterResults = await _mpesaClient.RegisterC2BUrlAsync(c2BRegisterCallback, await RetrieveAccessToken(), MpesaRequestEndpoint.RegisterC2BUrl); } catch (MpesaAPIException ex) { _logger.LogError(ex, ex.Message); return(View().WithDanger("Error", ex.Message)); } return(View().WithSuccess("Success", "Successfully added C2B confirmation and validation URLs")); }