public void Send(string client, string message, string connID)
        {
            while (true)
            {
                int pmtCount = db.PaymentTrailMessages.Where(v => v.CheckoutRequestID.Equals(message.Trim())).Count();
                if (pmtCount > 1)
                {
                    PaymentTrailMessage pmt = db.PaymentTrailMessages.Where(v => v.CheckoutRequestID.Equals(message.Trim())).OrderByDescending(v => v.OnlinePaymentTrailID).First();
                    if (pmt.ResponseCode != "0")
                    {
                        Clients.Client(connID).addNewMessageToPage(pmt.CustomerMessage, message.Trim(), pmt.ResponseCode);
                    }
                    else
                    {
                        ConfirmedPayment cpTime = db.ConfirmedPayments.Where(v => v.CheckoutRequestID.Equals(message.Trim())).First();
                        Clients.Client(connID).addNewMessageToPage(pmt.CustomerMessage, cpTime.ReceiptNumber, pmt.ResponseCode);
                    }

                    break;
                }
                else
                {
                }
            }
        }
示例#2
0
        public ActionResult Edit([Bind(Include = "BuildingID,LandRefNo,BuildingType,BuildingName,BuildingOwner,PaymentStatus,Arrears")] Building building, string payout)
        {
            oathAccount accYetu = new oathAccount(consumeKey, consumeSec);

            if (ModelState.IsValid)
            {
                db.Entry(building).State = EntityState.Modified;
                db.Entry(building).Property(uco => uco.BuildingAddress).IsModified = false;
                db.Entry(building).Property(uco => uco.BuildingFloors).IsModified  = false;

                string val = payout;
                string annualAmount;

                //Get building owner number
                PersonTable payer = db.PersonTables.Where(v => v.PersonID.Equals(building.BuildingOwner)).First();

                //send MPesa Request
                MPesaExpressRequest requestSend = new MPesaExpressRequest();

                //Record DateTime
                DateTime wakati = DateTime.Now;

                string pwd = createPassword(bsc, pKey, wakati);

                var tf = requestSend.send(int.Parse(bsc), pwd, wakati, int.Parse(payout), payer.PhoneNumber, parB, "Express", "Building Payment", accYetu.Token, building);

                if (tf.Contains("errorCode"))
                {
                    ErrorInfo           ef  = JsonConvert.DeserializeObject <ErrorInfo>(tf);
                    PaymentTrailMessage ptm = new PaymentTrailMessage
                    {
                        ResponseCode        = ef.errorCode,
                        ResponseDescription = ef.errorMessage,
                        CheckoutRequestID   = ef.requestId,
                        IDNumber            = building.LandRefNo.ToString(),
                        PaymentStamp        = DateTime.Now
                    };
                    db.PaymentTrailMessages.Add(ptm);

                    return(RedirectToAction("Edit"));
                }
                else
                {
                    TokenInfo x = JsonConvert.DeserializeObject <TokenInfo>(tf);
                    //Insert Payment Trail Messages
                    PaymentTrailMessage ptm = new PaymentTrailMessage
                    {
                        ResponseCode        = x.ResponseCode.ToString(),
                        ResponseDescription = x.ResponseDescription,
                        CheckoutRequestID   = x.CheckoutRequestID,
                        MerchantRequestID   = x.MerchantRequestID,
                        CustomerMessage     = x.CustomerMessage,
                        IDNumber            = building.LandRefNo.ToString(),
                        PaymentStamp        = DateTime.Now
                    };

                    db.PaymentTrailMessages.Add(ptm);

                    //Update DB
                    db.SaveChanges();


                    TempData["CheckOutID"] = x.CheckoutRequestID;

                    return(RedirectToAction("PaymentConfirmation", "Intermediate"));
                }
            }

            return(RedirectToAction("Edit"));
        }