Пример #1
0
        public string DebitHashString(string mackey, DirectDebitTransactionModel transact)
        {
            string hashstring = $@"{transact.ArmCustomerID}{transact.ArmVendorUserName}
                                    {transact.ArmDdAmt}{transact.ArmDdNotiUrl}" + mackey;

            return(hashstring);
        }
Пример #2
0
        //[ValidateAntiForgeryToken]
        public IActionResult ProcessDirectDebit([FromBody] SetUp model)
        {
            ////var _user = HttpContext.Session.Get<AuthenticateResponse>("ArmUser");
            var _user = new AuthenticateResponse
            {
                MembershipKey = 1006979,                   //1007435,
                EmailAddress  = "*****@*****.**", //"*****@*****.**",
                FirstName     = "Tolulope",
                LastName      = "Olusakin",
                FullName      = "Olusakin Tolulope S" //"Funmilayo Ruth Adeyemi",
                                                      //MembershipKey = 1007435,
                                                      //EmailAddress = "*****@*****.**",
                                                      //FirstName = "Funmilayo",
                                                      //LastName = "Adeyemi",
                                                      //FullName = "Funmilayo Ruth Adeyemi",
            };

            try
            {
                var decrypt = new SecureCredentials();

                string MacKey  = _configSettingManager.ArmMacKey;
                var    XmlData = string.Empty;

                if (ModelState.IsValid)
                {
                    var product   = model.ProductCode;
                    var amount    = Decimal.Parse(model.Amount) * 100;
                    var startdate = model.StartDate;
                    var frequency = model.Frequency;

                    if (amount <= 0)
                    {
                        return(StatusCode((int)HttpStatusCode.ExpectationFailed, "Invalid Transaction."));
                    }
                    else
                    {
                        XmlData = $@"<paymentitemxml>
                                       <payment_items> 
                                            <payment_item>
                                               <item_code>{product}</item_code>
                                               <item_amt>{amount}</item_amt>
                                            </payment_item>
                                       </payment_items>
                                   </paymentitemxml>";
                    }

                    var userdetails    = JsonConvert.SerializeObject(_user, Formatting.Indented);
                    var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(userdetails);
                    var userprofile    = System.Convert.ToBase64String(plainTextBytes);

                    var TransactionReference = _client.GenerateUniqueID(_user.MembershipKey);
                    var transactionDebit     = new DirectDebitTransactionModel
                    {
                        ArmVendorUserName = decrypt.DecryptCredentials(_configSettingManager.ArmServiceUsername),
                        ArmCustomerID     = _user.MembershipKey,
                        ArmCustomerName   = _user.FullName,
                        ArmDdAmt          = amount,
                        ArmStartDate      = startdate,
                        ArmFrequency      = frequency,
                        ArmDdNotiUrl      = string.Format("{0}://{1}{2}", Request.Scheme, Request.Host.ToUriComponent(), Request.PathBase.ToUriComponent()) + "/Client/Buy/DebitStatus?au=" + userprofile,
                        ArmPaymentParams  = TransactionReference,
                        ArmXmlData        = XmlData
                    };

                    var HashData = _client.DebitHashString(MacKey, transactionDebit);

                    var hashString = String.Concat(transactionDebit.ArmCustomerID, transactionDebit.ArmVendorUserName,
                                                   transactionDebit.ArmDdAmt, transactionDebit.ArmDdNotiUrl, MacKey);

                    var ArmHash = _client.GetHashString(hashString);
                    transactionDebit.ArmHash = ArmHash;

                    DirectDebitTransactions debit = new DirectDebitTransactions();
                    debit.Action            = _configSettingManager.ArmAggregatorBaseUrl + "/Aggregator/DirectDebit/";
                    debit.ArmVendorUsername = transactionDebit.ArmVendorUserName;
                    debit.ArmCustomerId     = transactionDebit.ArmCustomerID.ToString();
                    debit.ArmCustomerName   = transactionDebit.ArmCustomerName;
                    debit.ArmDdAmt          = transactionDebit.ArmDdAmt;
                    debit.ArmStartDate      = transactionDebit.ArmStartDate;
                    debit.ArmFrequency      = transactionDebit.ArmFrequency;
                    debit.ArmDdNotiUrl      = transactionDebit.ArmDdNotiUrl;
                    debit.ArmPaymentParams  = transactionDebit.ArmPaymentParams;
                    debit.ArmXmlData        = transactionDebit.ArmXmlData;
                    debit.ArmHash           = transactionDebit.ArmHash;

                    db.DirectDebitTransactions.Add(debit);
                    db.SaveChanges();

                    return(Json(debit));
                }
            }
            catch (Exception ex)
            {
                TempData["message"] = ViewBag.Message = ex.Message;
                Utilities.ProcessError(ex, _contentRootPath);
                _logger.LogError(null, ex, ex.Message);
            }
            return(View());
        }