public async Task <IHttpActionResult> Post(string vatAmount, string subAmount, string payerName, string payerEmail, string payerPhone, ERPRequest request) { try { if (request == null && payerPhone != null) { request = new ERPRequest(); request.payerEmail = payerEmail.Trim(); request.payerPhone = payerPhone.Trim(); request.payerName = payerName.Trim(); int v1 = (int)Convert.ToDecimal(vatAmount.Trim().ToString()); int v2 = (int)Convert.ToDecimal(subAmount.Trim().ToString()); request.vatAmount = v1.ToString(); request.subAmount = v2.ToString(); } if (request == null) { return(BadRequest()); } RRRRepository _repository = new RRRRepository(); RemitaResponse response = await _repository.GetRRRNumber(request); if (response.Statuscode == "025") { return(Created <RemitaResponse>(Request.RequestUri, response)); } return(BadRequest()); } catch (Exception) { return(InternalServerError()); } }
public async Task <RemitaResponse> GetRRRNumber(ERPRequest request) { _handler = new MyHttpClientHandler.MyHandler(); Client = new HttpClient(); var byteArray = Encoding.ASCII.GetBytes("ADDA:test"); string url = "vatAmount=" + request.vatAmount + "&subAmount=" + request.subAmount + "&payerName=" + request.payerName + "&payerEmail=" + request.payerEmail + "&payerPhone=" + request.payerPhone; url = url.Trim(); Client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); var response = new RemitaResponse(); var result = await Client.GetAsync("http://35.185.72.232/PAYMENT_CODE_GENERATOR/api/generate_split_payment_rrr?" + "vatAmount=" + request.vatAmount + "&subAmount=" + request.subAmount + "&payerName=" + HttpUtility.UrlEncode(request.payerName) + "&payerEmail=" + request.payerEmail + "&payerPhone=" + request.payerPhone); if (result.IsSuccessStatusCode) { var resultasstring = await result.Content.ReadAsStringAsync(); response = JsonConvert.DeserializeObject <RemitaResponse>(resultasstring); if (response.Statuscode != "025") { // response = DummyResponse(); //"vatAmount=26.00&subAmount=324.00&payerName=Mr.Stephen%20Kershaw&[email protected]&payerPhone=07019813547" } } else { response = DummyResponse(); } return(response); }
private RemitaResponse DummyResponse() { RemitaResponse response = new RemitaResponse(); response.status = "Payment Reference generated"; response.Statuscode = "025"; response.RRR = "310007680995"; response.orderID = "310007680995"; return(response); }
/// <summary> /// Confirm Remita Payment /// </summary> /// <param name="RRR"></param> /// <param name="orderID"></param> /// <returns></returns> public ActionResult ConfrimPayment(string RRR, string orderID) { RemitaResponse result = new RemitaResponse(); //if you persit the transaction //Find the transaction with either the RRR or orderID var validate = RemitaTransaction.Validate(orderID, RemitaConfigParam.APIKEY, RemitaConfigParam.MERCHANTID, RemitaConfigParam.CHECKSTATUSURL); // this will hash and validate the orderId, ApiKey and MerchantId are optional if (validate.Item1.Equals(true)) { result = validate.Item2; if (result.Status.Equals("00") || result.Status.Equals("01")) { // Update your transaction for successful payment //TODO // and redirect to payment status page return(View(result)); } else { // Update your transaction for unsuccessful payment // TODO //and retry payment return(RedirectToAction("RetryPayment", new { rrr = result.Rrr })); } } else { ViewBag.ErrorInfo = $"Check your internet connection and try again"; ViewBag.ErrorMessage = "Remita is currently unreachable"; return(View("RemitaErrorPage")); } return(View()); }
private async Task ProcessMembershipFee(string RRR, string orderID) { MembershipFee membershipRegistration; if (string.IsNullOrEmpty(orderID)) { membershipRegistration = await _db.MembershipFee.AsNoTracking() .Where(x => x.ReferenceNo.Equals(RRR)) .FirstOrDefaultAsync(); } else { membershipRegistration = await _db.MembershipFee.AsNoTracking() .Where(x => x.OrderId.Equals(orderID.Trim())) .FirstOrDefaultAsync(); } if (membershipRegistration != null) { if (membershipRegistration.Status.Equals(true)) { } else { var log = await _db.RemitaPaymentLog.AsNoTracking() .Where(x => x.OrderId.Equals(membershipRegistration.OrderId)) .FirstOrDefaultAsync(); var hashed = _query.HashRemitedValidate(membershipRegistration.OrderId, RemitaConfigParam.APIKEY, RemitaConfigParam.MERCHANTID); string url = RemitaConfigParam.CHECKSTATUSURL + "/" + RemitaConfigParam.MERCHANTID + "/" + orderID + "/" + hashed + "/" + "orderstatus.reg"; string jsondata = new WebClient().DownloadString(url); RemitaResponse result = JsonConvert.DeserializeObject <RemitaResponse>(jsondata); if (result.Status.Equals("00") || result.Status.Equals("01")) { membershipRegistration.Status = true; membershipRegistration.PaymentStatus = result.Message; membershipRegistration.ReferenceNo = result.Rrr; _db.Entry(membershipRegistration).State = EntityState.Modified; log.Rrr = result.Rrr; log.StatusCode = result.Status; log.TransactionMessage = result.Message; _db.Entry(log).State = EntityState.Modified; await _db.SaveChangesAsync(); } else { membershipRegistration.Status = false; membershipRegistration.PaymentStatus = result.Message; membershipRegistration.ReferenceNo = result.Rrr; _db.Entry(membershipRegistration).State = EntityState.Modified; log.Rrr = result.Rrr; log.StatusCode = result.Status; log.TransactionMessage = result.Message; _db.Entry(log).State = EntityState.Modified; await _db.SaveChangesAsync(); } } } }