Exemplo n.º 1
0
        protected void ProcessResponse()
        {
            var trxRef    = Request.QueryString["trxRef"];
            var trxToken  = Request.QueryString["trxToken"];
            var SecretKey = ConfigurationManager.AppSettings["SecretKey"];
            TransactionalInformation trans;

            try
            {
                dynamic obj = new JObject();
                obj.trxRef   = trxRef.Trim();
                obj.trxToken = trxToken.Trim();
                var json = obj.ToString();
                // string url = "http://www.paytrx.org/api/web/GetTransactionRecord";
                // string url = "http://paytrx.net/api/web/GetTransactionRecord";
                string url = ConfigurationManager.AppSettings["FlutterWave_Requery"];
                //re-query payment gateway for the transaction.
                var reqData = "{\"TrxRef\":\"" + trxRef + "\"" + ",\"TrxToken\":\"" + trxToken + "\"}";
                //  var url = ConfigurationManager.AppSettings["FlutterWave_Requery"];
                //var url = FlutteWaveEngine.FlutterWaveRequery;
                string serverResponse = string.Empty;

                var plainText = (trxRef + trxToken + SecretKey);

                var hash   = new CryptographyManager().ComputeHash(plainText, HashName.SHA256);
                var isPaid = PaymentRequery(reqData, url, hash, out serverResponse, out trans);
                var jvalue = JObject.Parse(serverResponse);

                dynamic jvalues = JObject.Parse(serverResponse);
                if (jvalue != null && $"{jvalues?.data?.resp_code}".ToLower() == "00" && isPaid == true)
                {
                    WebLog.Log("1");
                    TempData["ErrMsg"] = "Transaction successful ! Thank You";
                    string refNum = jvalues?.data?.trxref;
                    // var id = UpdateTransaction(jvalues);
                    bool checkTrxtoken = _dr.CheckTranToken(refNum);
                    // if (id != null && checkTrxtoken == false)
                    if (checkTrxtoken == false)
                    {
                        WebLog.Log("2");
                        // string refNum = jvalues?.data?.trxref;

                        var     PayRes = paySubscribtion(refNum);
                        dynamic Pay    = JObject.Parse(PayRes);
                        //  if (Pay?.returnCode == 1)
                        if (Pay?.respCode == "00")
                        {
                            _tL.ReferenceNumber = refNum;
                            _tL.PatnerRefNumber = Pay?.tranNum;
                            var val    = _dr.GetRecord(refNum);
                            int userid = Convert.ToInt16(val.Customer_FK);
                            MyUtility.insertWallet(userid, val);
                            CalculateDiscount(userid, val);
                            _ct.Merchant_FK     = val.Merchant_FK;
                            _ct.ReferenceNumber = val.ReferenceNumber;
                            _ct.ServiceCharge   = val.ServiceCharge;
                            _ct.ServiceDetails  = val.ServiceDetails;
                            _ct.TransactionType = val.TransactionType;
                            _ct.TrnDate         = val.TrnDate;
                            _ct.ValueDate       = val.ValueDate;
                            _ct.ValueTime       = val.ValueTime;
                            _ct.Amount          = val.Amount;
                            _ct.CustomerID      = val.CustomerID;
                            _ct.Customer_FK     = val.Customer_FK;
                            _ct.CusPay2response = Convert.ToString(PayRes);
                            _dc.InitiateCustomerTransaction(_ct);
                            _dc.UpdateTransac(_tL);
                            var id = UpdateTransaction(jvalues);
                            TempData["ErrMsg"] = "Transaction successful ! Thank You";
                            Receipt(Pay, refNum);
                        }
                        else if (Pay?.returnCode != "00")
                        {
                            TempData["ErrMsg"] = "Payment Successful! Please Contact our Customer Care";
                            Receipt(Pay, refNum);
                        }
                    }
                }
                else
                if (jvalue != null && $"{jvalues?.data?.resp_code}".ToLower() != "00" || isPaid == false)
                {
                    TempData["ErrMsg"] = "Transaction Failed ! Please Try Again";
                    var id = UpdateTransaction(jvalues);
                    if (id != null)
                    {
                        string  refNum  = jvalues?.data?.trxref;
                        dynamic payObjx = new JObject();
                        payObjx.returnCode = jvalues?.data?.resp_code;
                        payObjx.returnMsg  = jvalues?.data?.resp_desc;
                        payObjx.tranNum    = jvalues?.data?.trxref;
                        dynamic Pay = JObject.Parse(payObjx);
                        TempData["ErrMsg"] = "Transaction Failed ! Please Try Again";
                        Receipt(Pay, refNum);
                    }
                }
            }
            catch (Exception ex)
            {
                WebLog.Log(ex.Message.ToString());
                //lblStatusMsg.Text = ex.Message.ToString();
            }
        }