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