Exemple #1
0
        static void Main(string[] args)
        {
            MollieClient mollieClient = new MollieClient(ConfigurationManager.AppSettings["mollie_api_key"]);

            Console.WriteLine("Loading iDeal issuers ...");
            Issuers issuers = mollieClient.ListIssuers();

            foreach (Issuer issuer in issuers.data)
            {
                Console.WriteLine(issuer.name);
            }

            Console.WriteLine("Starting payment without method ...");

            Payment payment = new Payment
            {
                amount      = 99.99M,
                description = "Test payment",
                redirectUrl = "http://www.foxip.net/completed/?orderId=1245",
            };

            PaymentStatus status = mollieClient.CreatePayment(payment);

            Console.WriteLine("The status is: " + status.status);
            Console.WriteLine("Please follow this link to start the payment:");
            Console.WriteLine(status.links.paymentUrl);

            Console.WriteLine("Press [enter] to continue ...");
            Console.ReadLine();

            Console.WriteLine("Getting status ...");
            status = mollieClient.GetPayment(status.id);
            Console.WriteLine("The status is now: " + status.status);

            //Refunds only for iDEAL, Bancontact/Mister Cash, SOFORT Banking, creditcard and banktransfer
            Console.WriteLine("Refunding ...");
            try
            {
                RefundStatus refundStatus = mollieClient.CreateRefund(status.id);
                Console.WriteLine("The status is now: " + refundStatus.payment.status);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: " + ex.Message);
            }

            Console.WriteLine("Starting payment with a specific method ...");
            status = mollieClient.CreatePayment(new Payment
            {
                amount      = 1.99M,
                method      = Method.mistercash,
                description = "Test payment",
                redirectUrl = "http://www.foxip.net/completed/?orderId=12345"
            });
            Console.WriteLine("The status is: " + status.status);
            Console.WriteLine("Please follow this link to start the payment:");
            Console.WriteLine(status.links.paymentUrl);
            Console.WriteLine("Press [enter] to continue ...");
            Console.ReadLine();
        }
        public static String GetTemplateMollieData(String templatename, NBrightInfo pluginInfo)
        {
            var templ = GetTemplateData(templatename, pluginInfo);

            #region "Get Mollie options from API"

            var info = ProviderUtils.GetProviderSettings("DnnCMolliepayment");

            var testMode   = info.GetXmlPropertyBool("genxml/checkbox/testmode");
            var testApiKey = info.GetXmlProperty("genxml/textbox/testapikey");
            var liveApiKey = info.GetXmlProperty("genxml/textbox/liveapikey");


            // Check to see if the test api keys is filled in, stops the error with the settings in the backoffice
            if (testApiKey != "")
            {
                var apiKey = testApiKey;

                if (!testMode)
                {
                    apiKey = liveApiKey;
                }

                MollieClient mollieClient = new MollieClient();
                mollieClient.setApiKey(apiKey);

                var            strPayOptions = "";
                PaymentMethods methods       = mollieClient.GetPaymentMethods();
                Issuers        issuers       = mollieClient.GetIssuers();

                foreach (PaymentMethod method in methods.data)
                {
                    strPayOptions += "<tr>";
                    strPayOptions += "<td><input type='radio' id='" + method.id + "' value='" + method.id + "' name='group1' class='rdoBanks' /></td>";
                    strPayOptions += "<td><img src='" + method.image.normal + "' /></td>";
                    strPayOptions += "<td><strong>" + method.description + "</strong></td>";

                    strPayOptions += "</tr>";
                    if (method.id == "ideal")
                    {
                        strPayOptions += "<tr><td colspan='3'><div id='bank-holder' class='hidden'>";
                        strPayOptions += "<select id='mollieidealgatewaybankselectordropdown' name='mollieidealgatewaybankselectordropdown' class='bankSelector'>";
                        strPayOptions += "<option>" + info.GetXmlProperty("genxml/textbox/bankdropdowntext") + "</option>";
                        foreach (Issuer issuer in issuers.data)
                        {
                            strPayOptions += string.Format("<option value=\"{0}\">{1}</option>", issuer.id, issuer.name);
                        }
                        strPayOptions += "</select>";
                        strPayOptions += "</div></td></tr>";
                    }


                    strPayOptions += "<tr><td colspan='3'><hr/></td></tr>";
                }
                templ = templ.Replace("[PAYMENTMETHODS]", strPayOptions);
            }
            #endregion

            return(templ);
        }
Exemple #3
0
        public void CreatesCorrectPolicy(string issuer1, string issuer2)
        {
            var basePolicy = new Issuers(new [] { issuer1, issuer2 });
            var xml        = basePolicy.GetXml().ToString();

            xml.Should().Be(
                @$ "<issuers>
  <issuer>{issuer1}</issuer>
        public IActionResult IssuersEdit(string id)
        {
            ObjectId oId = new ObjectId(id);

            Issuers issuers = collection.Find(e => e.IssuerId
                                              == oId).FirstOrDefault();

            return(View(issuers));                                     //in order to render object which we wants to edit
        }
Exemple #5
0
        public void IDEAL_CanGetIssuers()
        {
            Issuers issuers = mollieClient.GetIssuers();

            Assert.IsTrue(issuers.count > 0, "Found 0 issuers");
            foreach (Issuer issuer in issuers.data)
            {
                Assert.IsTrue(issuer.name != "");
                Assert.IsTrue(issuer.id != "");
                Assert.IsTrue(issuer.method != "");
            }
        }
Exemple #6
0
        public IActionResult Issuers()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            /*var claim = claimsIdentity.FindFirst(ClaimTypes.Email);*/
            var      claim              = claimsIdentity.Claims.ToArray();
            var      email              = claim[1].Value;
            var      userid             = User.Claims.FirstOrDefault(c => c.Type == AppUtility.UserId).Value; //claim[3].Value;
            var      issuer             = collection.Find(FilterDefinition <Issuers> .Empty).ToList();
            var      userSpecificIssuer = issuer.Where(e => e.UserId == new ObjectId(userid)).FirstOrDefault();
            ObjectId oId = userSpecificIssuer.IssuerId;
            Badge    b   = badgeCollection.Find(e => e.IssuerId
                                                == oId).FirstOrDefault();
            int     count   = 0;
            Issuers issuers = collection.Find(e => e.IssuerId
                                              == oId).FirstOrDefault();
            IEnumerable <Badge> badge = badgeCollection.Find(e => e.IssuerId == oId).ToList();

            if (b == null)
            {
                count = 0;
            }
            else
            {
                #region test
                var usr          = _u.FindById(userid.ToString());
                var isser        = _i.AsQueryable().ToList();
                var actualIssuer = isser.Where(e => e.UserId == usr.Id).FirstOrDefault();
                var bdg          = _b.AsQueryable().ToList();
                var totalBadg    = bdg.Where(e => e.IssuerId == actualIssuer.Id).ToList();

                for (int l = 0; l < totalBadg.Count; l++)
                {
                    var earnerBadge = earnerBadgeDetails.Find(e => e.BadgeId == new ObjectId(totalBadg[l].Id.ToString())).ToList();
                    count = count + earnerBadge.Count();
                }

                #endregion



                //IEnumerable<EarnerBadgeDetails> earnerBadge = earnerBadgeDetails.Find(e => e.BadgeId == b.BadgeId).ToList();
                //count = earnerBadge.Count();
            }
            IssuerBadge issuerBadge = new IssuerBadge()
            {
                Id          = oId.ToString(),
                issuer      = issuers,
                badge       = badge,
                Badge_Count = count
            };
            return(View(issuerBadge));
        }
        public void CanGetIssuers()
        {
            Issuers issuers = mollieClient.ListIssuers();

            Assert.IsTrue(issuers.count > 0, "Found 0 issuers");
            foreach (Issuer issuer in issuers.data)
            {
                Assert.IsTrue(issuer.name != "");
                Assert.IsTrue(issuer.id != "");
                Assert.IsTrue(issuer.method != "");
                var issuerDetails = mollieClient.GetIssuer(issuer.id);
                Assert.AreEqual(issuerDetails.id, issuer.id);
            }
        }
        public void CanMakePaymentWithIssuer()
        {
            Issuers issuers = mollieClient.ListIssuers();

            Payment payment = new Payment
            {
                amount      = 99.99M,
                description = "Test payment",
                redirectUrl = "http://www.foxip.net/test/12345",
                method      = Method.ideal,
                issuer      = issuers.data[0].id
            };

            PaymentStatus status = mollieClient.CreatePayment(payment);

            Assert.AreEqual(status.method, Method.ideal);
        }
Exemple #9
0
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            var results = new List <ValidationResult>();

            if (UpdateState == PartyUpdateStates.Manual)
            {
                if (Issuers?.Count(i => !string.IsNullOrWhiteSpace(i)) <= 0)
                {
                    results.Add(new ValidationResult($"Require at least one issuer in '{nameof(Issuers)}'. If '{nameof(UpdateState)}' is '{PartyUpdateStates.Manual}'.",
                                                     new[] { nameof(Issuers) }));
                }

                if (Keys?.Count <= 0)
                {
                    results.Add(new ValidationResult($"Require at least one key in '{nameof(Keys)}'. If '{nameof(UpdateState)}' is '{PartyUpdateStates.Manual}'.",
                                                     new[] { nameof(Keys) }));
                }

                if (Client.AuthorizeUrl.IsNullOrEmpty())
                {
                    results.Add(new ValidationResult($"Require '{nameof(Client)}.{nameof(Client.AuthorizeUrl)}'. If '{nameof(UpdateState)}' is '{PartyUpdateStates.Manual}'.",
                                                     new[] { $"{nameof(Client)}.{nameof(Client.AuthorizeUrl)}" }));
                }

                if (Client.ResponseType?.Contains(IdentityConstants.ResponseTypes.Code) == true)
                {
                    if (Client.TokenUrl.IsNullOrEmpty())
                    {
                        results.Add(new ValidationResult($"Require '{nameof(Client)}.{nameof(Client.TokenUrl)}' to execute '{IdentityConstants.ResponseTypes.Code}' response type. If '{nameof(UpdateState)}' is '{PartyUpdateStates.Manual}'.",
                                                         new[] { $"{nameof(Client)}.{nameof(Client.TokenUrl)}" }));
                    }
                }
            }
            else
            {
                if (!OidcDiscoveryUpdateRate.HasValue)
                {
                    results.Add(new ValidationResult($"Require '{nameof(OidcDiscoveryUpdateRate)}'. If '{nameof(UpdateState)}' is different from '{PartyUpdateStates.Manual}'.",
                                                     new[] { nameof(OidcDiscoveryUpdateRate) }));
                }
            }
            return(results);
        }
Exemple #10
0
        public async Task <IActionResult> Award(string id, AwardBadge awardBadge)
        {
            if (ModelState.IsValid)
            {
                var claimsIdentity = (ClaimsIdentity)User.Identity;
                /*var claim = claimsIdentity.FindFirst(ClaimTypes.Email);*/
                var      claim  = claimsIdentity.Claims.ToArray();
                var      email  = claim[1].Value;
                var      userid = User.Claims.FirstOrDefault(c => c.Type == AppUtility.UserId).Value;
                ObjectId oid    = new ObjectId(id);
                Badge    badge  = badgeCollection.Find(e => e.BadgeId
                                                       == oid).FirstOrDefault();

                ObjectId issuerId = badge.IssuerId;
                Issuers  issuer   = collection.Find(e => e.IssuerId
                                                    == issuerId).FirstOrDefault();
                DateTime           d   = DateTime.Now;
                DateTime           d1  = DateTime.Today.AddDays(badge.ExpiryDuration);
                EarnerBadgeDetails buc = new EarnerBadgeDetails()
                {
                    BadgeId        = badge.BadgeId,
                    RecipientName  = awardBadge.EarnerBadgeDetails.RecipientName,
                    RecipientEmail = awardBadge.EarnerBadgeDetails.RecipientEmail,
                    AwardedDate    = d,
                    ExpirationDate = d1,
                    UserId         = new ObjectId(userid.ToString())
                };
                earnerBadgeDetails.InsertOne(buc);

                /*await _emailSender.SendEmailAsync(buc.RecipientEmail, "Congratulation, you earned a Badge",
                 *
                 *  $"<div class='p-6 m-3 border rounded row' style='background-color:beige'><div class='col-3'></div><div class='col-6' style='background-color:white'><div class='row text-center m-2'><h3 style = 'color:blueviolet' >Congratulation, you earned a badge</h3></div><hr /><div class='text-center'><img src = 'https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2014/11/1415490092badge.png' width='200px' height='200px' alt='image' /></div><hr /><br /><div class='row text-left'><h4 class='m-2'>{HtmlEncoder.Default.Encode(badge.BadgeName)}</h4></div><div class='row text-left'><p class='m-2'>{HtmlEncoder.Default.Encode(badge.EarningCriteriaDescription)}</p></div><hr /><hr /><div class='row text-left m-2'><p>Issued by :</p></div><div class='row text-left m-2'><p><b>{HtmlEncoder.Default.Encode(issuer.Name)}</b></p></div><hr /><div class='text-center'><a class='btn btn-secondary' href='https://localhost:44326/'>Create Account</a></div><br /><br/></div><div class='col-3'></div></div>"
                 * );*/
                return(RedirectToAction("ViewBadge", new { id = badge.BadgeId }));
            }

            return(View());
        }
 public JwtValidationPolicy(IDictionary <string, string> attributes, string openIdConfigUrl = null, IEnumerable <string> issuers = null, ISectionPolicy requiredClaims = null) : base("validate-jwt", attributes)
 {
     _openIdConfig   = openIdConfigUrl != null ? new OpenIdConfig(openIdConfigUrl) : null;
     _issuers        = issuers != null ? new Issuers(issuers) : null;
     _requiredClaims = requiredClaims as SectionPolicy;
 }
Exemple #12
0
        public IActionResult ViewBadge(string id, int productPage = 1, string recipientEmail = null, string OID = null)
        {
            int      PageSize = 2;
            ObjectId oId;

            if (id == null)
            {
                oId             = new ObjectId(TempData["OID"].ToString());
                TempData["OID"] = oId.ToString();
            }

            else
            {
                oId             = new ObjectId(id);
                TempData["OID"] = id;
            }

            StringBuilder param = new StringBuilder();

            param.Append("/Issuer/Issuers/ViewBadge?productPage=:");
            param.Append("&recipientEmail=");
            if (recipientEmail != null)
            {
                param.Append(recipientEmail);
            }



            Badge badge = badgeCollection.Find(e => e.BadgeId
                                               == oId).FirstOrDefault();
            ObjectId iid     = badge.IssuerId;
            Issuers  issuers = collection.Find(e => e.IssuerId
                                               == iid).FirstOrDefault();

            IEnumerable <EarnerBadgeDetails> badgeEarner = earnerBadgeDetails.Find(e => e.BadgeId
                                                                                   == oId).ToList();

            if (badge != null)
            {
                TempData["badgetest"] = badge.FacebookId;
            }

            var  earner        = _ed.AsQueryable().ToList();
            var  badgeInEarner = earner.Where(e => e.BadgeId == oId).ToList();
            bool earnerCheck   = false;

            if (badgeInEarner.Count > 0)
            {
                earnerCheck = true;
            }
            else
            {
                earnerCheck = false;
            }

            IssuerBadge i = new IssuerBadge()
            {
                badge1                   = badge,
                issuer                   = issuers,
                EarnerBadgeDetails       = badgeEarner,
                IsBadgeAvailableInEarner = earnerCheck
            };



            if (recipientEmail != null)
            {
                i.EarnerBadgeDetails = i.EarnerBadgeDetails.Where(a => a.RecipientEmail.ToLower().Contains(recipientEmail.ToLower())).ToList();
            }
            var count = i.EarnerBadgeDetails.Count();

            i.EarnerBadgeDetails = i.EarnerBadgeDetails.OrderBy(p => p.AwardedDate)
                                   .Skip((productPage - 1) * PageSize)
                                   .Take(PageSize).ToList();


            i.PagingInfo = new PagingInfo
            {
                CurrentPage  = productPage,
                ItemsPerPage = PageSize,
                TotalItems   = count,
                urlParam     = param.ToString(),
            };
            return(View(i));
        }
        public async Task <IActionResult> CreateAsync(Issuers issuers)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var claimsIdentity = (ClaimsIdentity)User.Identity;
                    var claim          = claimsIdentity.Claims.ToArray();
                    var useid          = User.Claims.FirstOrDefault(c => c.Type == AppUtility.UserId).Value;    //to get userId of loggedIn user
                    var userRole       = _userRoles.AsQueryable().ToList();                                     //to get userRoleList
                    var issuerRoles    = userRole.Where(e => e.Role == AppUtility.IssuerRole).FirstOrDefault(); //find the object of issuer role

                    string webRootPath = _hostEnvironment.WebRootPath;
                    var    files       = HttpContext.Request.Form.Files;
                    if (files.Count > 0)
                    {
                        string fileName   = Guid.NewGuid().ToString();
                        var    uploads    = Path.Combine(webRootPath, @"Images\issuers");
                        var    extenstion = Path.GetExtension(files[0].FileName);
                        using (var filesStreams = new FileStream(Path.Combine(uploads, fileName + extenstion), FileMode.Create))
                        {
                            files[0].CopyTo(filesStreams);
                        }
                        issuers.Image = @"\images\issuers\" + fileName + extenstion;
                    }
                    DateTime today = DateTime.Now;
                    var      isEmailExistInUser   = _user.FilterBy(e => e.Email == issuers.Email).ToList();
                    var      isEmailExistInIssuer = collection.Find(e => e.Email == issuers.Email).ToList();
                    if (isEmailExistInIssuer.Count() > 0 || isEmailExistInUser.Count() > 0)
                    {
                        ModelState.AddModelError(string.Empty, "User with this email already exist");     //show popup if same email exists
                        return(View());
                    }

                    DigiBadges.DataAccess.Users user = new DigiBadges.DataAccess.Users()
                    {
                        CreatedBy      = claim[0].Value,
                        CreatedDate    = today,
                        Email          = issuers.Email,
                        FirstName      = issuers.Name,
                        IsUserVerified = true,
                        Password       = AppUtility.Encrypt(AppUtility.IssuerPassword),
                        RoleId         = issuerRoles.Id.ToString()
                    };
                    _user.InsertOne(user);                                             //Inserting object in issuer table

                    DigiBadges.Models.Users users = new DigiBadges.Models.Users()
                    {
                        CreatedBy      = claim[0].Value,
                        CreatedDate    = today,
                        Email          = issuers.Email,
                        FirstName      = issuers.Name,
                        IsUserVerified = true,
                        Password       = AppUtility.Encrypt(AppUtility.IssuerPassword),
                        RoleId         = issuerRoles.Id.ToString(),
                        UserId         = user.Id
                    };

                    SolrUsersModel su = new SolrUsersModel(users);
                    _solr.Add(su);                                     //Adding data in solr
                    _solr.Commit();

                    var userIdInUserTable = _user.AsQueryable().ToList();
                    var uid = userIdInUserTable.Where(e => e.Email == issuers.Email).FirstOrDefault();
                    if (user.Id != null)
                    {
                        issuers.UserId      = user.Id;     //setting the userId which we got after inserting the above data in user collection
                        issuers.CreatedDate = today;
                    }

                    collection.InsertOne(issuers);         //To post the issuer object

                    SolrIssuersModel sissuser = new SolrIssuersModel(issuers);
                    _solrIssuer.Add(sissuser);             //Adding data in solr
                    _solrIssuer.Commit();

                    await _emailSender.SendEmailAsync(issuers.Email,                     //to send email to new issuer
                                                      "Congatulations you are invited as a issuer",
                                                      $"<h4 class='m-2'>Your Email id is -{HtmlEncoder.Default.Encode(issuers.Email)}</h4></div>" +
                                                      "Your password is - Welcome@123");
                }
                catch (Exception)
                {
                    ModelState.AddModelError(string.Empty, "Please try again later.");
                    return(View());
                }
                return(RedirectToAction("Index"));
            }

            return(View());
        }
        public IActionResult IssuersEdit(string id, Issuers issuer)
        {
            if (ModelState.IsValid)
            {
                string webRootPath = _hostEnvironment.WebRootPath;
                var    files       = HttpContext.Request.Form.Files;

                ObjectId oId = new ObjectId(id);

                Issuers issuers = collection.Find(e => e.IssuerId
                                                  == oId).FirstOrDefault();



                if (files.Count > 0)
                {
                    string fileName   = Guid.NewGuid().ToString();
                    var    uploads    = Path.Combine(webRootPath, @"images/issuers");
                    var    extenstion = Path.GetExtension(files[0].FileName);

                    if (issuer.Image != null)
                    {
                        //this is an edit and we need to remove old image
                        var imagePath = Path.Combine(webRootPath, issuer.Image.TrimStart('\\'));
                        if (System.IO.File.Exists(imagePath))
                        {
                            System.IO.File.Delete(imagePath);
                        }
                    }
                    using (var filesStreams = new FileStream(Path.Combine(uploads, fileName + extenstion), FileMode.Create))
                    {
                        files[0].CopyTo(filesStreams);
                    }
                    issuer.Image = @"\images/issuers\" + fileName + extenstion;
                }
                else
                {
                    //update when they do not change the image
                    if (issuer.IssuerId != null)
                    {
                        issuer.Image = issuers.Image;
                    }
                }

                var usr = _user.FindById(issuers.UserId.ToString());
                usr.Email     = issuer.Email;
                usr.FirstName = issuer.Name;

                _user.ReplaceOne(usr);                                     //updating data in user collection



                var filter = Builders <Issuers> .Filter.Eq("IssuerId", oId);

                var updateDef = Builders <Issuers> .Update.
                                Set("Name", issuer.Name);

                updateDef = updateDef.Set("Email", issuer.Email);
                updateDef = updateDef.Set("WebsiteUrl", issuer.WebsiteUrl);                    //updating data in Issuer collection
                updateDef = updateDef.Set("Image", issuer.Image);
                updateDef = updateDef.Set("Description", issuer.Description);
                var result = collection.UpdateOne(filter, updateDef);

                DigiBadges.Models.Users users = new DigiBadges.Models.Users()
                {
                    CreatedBy      = usr.CreatedBy,
                    Email          = issuer.Email,
                    FirstName      = issuer.Name,
                    IsUserVerified = usr.IsUserVerified,
                    Password       = usr.Password,
                    RoleId         = usr.RoleId,
                    UserId         = usr.Id
                };

                SolrUsersModel su = new SolrUsersModel(users);
                _solr.Add(su);
                _solr.Commit();

                issuer.IssuerId = oId;
                issuer.UserId   = usr.Id;
                SolrIssuersModel sissuser = new SolrIssuersModel(issuer);
                _solrIssuer.Add(sissuser);
                _solrIssuer.Commit();

                return(RedirectToAction("Index"));
            }

            return(View());
        }
Exemple #15
0
        public async Task <IActionResult> UpdateIssuer()
        {
            try
            {
                // var userdetail = await _userRepository.GetUserInfoById(ProgramId);

                using (var client = new HttpClient())
                {
                    var jposSettingsForUserBalance = (await _setting.GetGeneratSettingValueByKeyGroup(Constants.GeneralSettingsKeyGroup.JPOS_Staging)).ToList();
                    if (jposSettingsForUserBalance.Count > 0)
                    {
                        foreach (var itemForJPOS in jposSettingsForUserBalance)
                        {
                            switch (itemForJPOS.KeyName)
                            {
                            case Constants.JPOSConstants.JPOS_Version:
                                version = itemForJPOS.Value;
                                break;

                            case Constants.JPOSConstants.JPOS_ConsumerId:
                                consumerId = itemForJPOS.Value;
                                break;

                            case Constants.JPOSConstants.JPOS_HostURL:
                                url = itemForJPOS.Value;
                                break;

                            case Constants.JPOSConstants.JPOS_N:
                                n = itemForJPOS.Value;
                                break;

                            default:
                                break;
                            }
                        }
                    }


                    if (!string.IsNullOrEmpty(consumerId) && !string.IsNullOrEmpty(url))
                    {
                        client.DefaultRequestHeaders.Add("version", version);
                        client.DefaultRequestHeaders.Add("consumer-id", consumerId);
                        client.DefaultRequestHeaders.Add("nonce", n);

                        var hostURLIssuerProperties = new Uri($"" + url + "issuers");
                        var response = await client.GetAsync(hostURLIssuerProperties);

                        string jsonIssuerProperties;
                        using (var content = response.Content)
                        {
                            jsonIssuerProperties = await content.ReadAsStringAsync();

                            dynamic serviceresponse = JsonConvert.DeserializeObject(jsonIssuerProperties.ToString());

                            Issuers issuerDetails = serviceresponse.ToObject <Issuers>();
                            foreach (var issuer in issuerDetails.issuer)
                            {
                                await _programRepository.RefreshPrograms(issuer.organizationName, int.Parse(issuer.id),
                                                                         int.Parse(issuer.id), int.Parse(issuer.id), 1, issuer.name, issuer.startDate, issuer.endDate);
                            }


                            return(Ok(new ApiResponse(StatusCodes.Status200OK, true, MessagesConstants.JPOSIssuredPropertiesReturnedSuccessfully, serviceresponse)));
                        }
                    }
                    return(Ok(new ApiResponse(StatusCodes.Status200OK, false, MessagesConstants.JPOSIssuredPropertiesReturnedUnsuccessfully, null)));
                }
            }
            catch (Exception ex)
            {
                HttpContext.RiseError(new Exception(string.Concat("API := (JPOS := JPOSUserBalance)", ex.Message, " Stack Trace : ", ex.StackTrace, " Inner Exception : ", ex.InnerException)));
                return(Ok(new ApiResponse(Microsoft.AspNetCore.Http.StatusCodes.Status200OK, false, MessagesConstants.SomeIssueInProcessing)));
            }
        }
        /// <summary>
        /// Retrieves both the short list and the long list of issuers.
        /// </summary>
        /// <returns><see cref="Issuers" /> containing the long list and short list of issuers, and the datetime stamp of the last change to the lists.</returns>
        /// <exception cref="XmlSchemaValidationException">Request Xml does not comply with schema.</exception>
        /// <exception cref="IDealException">Respons from iDEAL contains an error.</exception>
        /// <exception cref="ConfigurationErrorsException">Errors in configuration file.</exception>
        /// <exception cref="WebException">Error getting reply from acquirer.</exception>
        /// <exception cref="CryptographicException">Error using client certificate.</exception>
        public Issuers GetIssuerList()
        {
            if (traceSwitch.TraceInfo)
            {
                TraceLine("Start of GetIssuerList()");
            }

            DirectoryReq request = CreateRequest <DirectoryReq>();

            request.Merchant = CreateMerchant <DirectoryReqMerchant>();

            // Serialize the request to an XML string
            string xmlRequest = SerializationHelper.SerializeObject <DirectoryReq>(request);

            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(xmlRequest);

            var signatureElement = XmlSignature.XmlSignature.Sign(ref xmlDoc, GetMerchantRSACryptoServiceProvider(), merchantConfig.ClientCertificate.Thumbprint);

            xmlRequest = xmlDoc.OuterXml;

            // Validate the request before sending it to the service
            ValidateXML(xmlRequest);

            // Send request / get respons
            string xmlResponse = GetReplyFromAcquirer(xmlRequest, merchantConfig.acquirerUrlDIR);

            // Validate respons
            ValidateXML(xmlResponse);

            if (!XmlSignature.XmlSignature.CheckSignature(xmlResponse, (RSA)merchantConfig.aquirerCertificate.PublicKey.Key))
            {
                if (traceSwitch.TraceInfo)
                {
                    TraceLine("Xml response was not well signed " + xmlResponse);
                }
                throw new ArgumentException("Response from server is not well signed");
            }

            if (traceSwitch.TraceInfo)
            {
                TraceLine("Response from get issuer list was : " + xmlResponse);
            }

            // Check respons for errors
            CheckError(xmlResponse, Resources.iDealUnavailable);

            DirectoryRes response = (DirectoryRes)SerializationHelper.DeserializeObject <DirectoryRes>(xmlResponse);

            // Create the return object and initialze it with the iDEAL respons Directory
            var issuers = new Issuers(response.Directory);

            if (traceSwitch.TraceInfo)
            {
                TraceLine("End of GetIssuerList()");
            }
            if (traceSwitch.TraceVerbose)
            {
                TraceLine(Format("Returnvalue: {0}", issuers.ToString()));
            }

            return(issuers);
        }