Beispiel #1
0
        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());
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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());
        }
Beispiel #5
0
        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();
                    }
                }
            }
        }