示例#1
0
        public CancelDirectDebitResponse CancelDirectDebit(CancelDirectDebitRequest payload)
        {
            var    _client = new RestActions(_contentRootPath);
            string url     = _configSettingManager.ArmBaseUrl + "/Payment/CancelDirectDebit";

            return(_client.CallRestAction <CancelDirectDebitResponse, CancelDirectDebitRequest>(payload, url));
        }
示例#2
0
        public IActionResult CancelDirectDebit(int id)
        {
            var decrypt = new SecureCredentials();

            //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",
            };
            var vendorUserName = decrypt.DecryptCredentials(_configSettingManager.ArmServiceUsername);
            var mackey         = _configSettingManager.ArmMacKey;

            try
            {
                var directDebit = db.DDebit
                                  .Where(s => s.CustomerId == _user.MembershipKey.ToString() && s.Id == id)
                                  .FirstOrDefault <DDebit>();

                var notifyUrl = Url.Action("TransactionStatus", "Buy", new { type = 1 }, Request.Scheme);
                if (directDebit != null)
                {
                    var HashData = $@"{_user.MembershipKey}{vendorUserName}{directDebit.CardMask}{mackey}";
                    var ArmHash  = _client.GetHashString(HashData);

                    var cRequest = new CancelDirectDebitRequest
                    {
                        ArmDdRef          = directDebit.DirectDebitReference,
                        ArmVendorUsername = vendorUserName,
                        ArmHash           = ArmHash,
                        ArmCcMask         = directDebit.CardMask,
                        ArmCcType         = directDebit.CardType,
                        ArmCustId         = directDebit.CustomerId
                    };
                    var cResponse = _clientService.CancelDirectDebit(cRequest);

                    if (cResponse.ArmDdStatusCode == "0" || cResponse.ArmDdStatusCode == "00")
                    {
                        //delete record from the DB
                        db.DDebit.Remove(directDebit);
                        db.SaveChanges();

                        return(Json(cResponse));
                    }
                    else if (cResponse.ArmDdStatusCode == "Z2")
                    {
                        return(Json(cResponse));
                    }
                    else
                    {
                        return(StatusCode((int)HttpStatusCode.ExpectationFailed, cResponse.ArmDdStatusCode + " There was a problem processing your request."));
                    }
                }
                else
                {
                    return(NotFound("No direct debit mandate found for the provided information."));
                }
            }
            catch (Exception ex)
            {
                HttpContext.Session.Set("error", ex.Message);
                TempData["message"] = ViewBag.Message = ex.Message;
                Utilities.ProcessError(ex, _contentRootPath);
                _logger.LogError(null, ex, ex.Message);
            }
            return(View());
        }