public async Task<MerchantResponse> CreateMerchantAsync(MerchantRequest request)
 {
     var requestDict = new Dictionary<string, object>();
     var requestList = new List<MerchantRequest>();
     requestList.Add(request);
     requestDict.Add("merchants", requestList);
     var response = await SendPostAsync("/provider/merchant", JsonConvert.SerializeObject(requestDict));
     var rawResponseBody = await response.Content.ReadAsStringAsync();
     var dictData = JsonConvert.DeserializeObject<Dictionary<string, object>>(rawResponseBody);
     var rawResponseDataBody = Convert.ToString(dictData["response"]);
     var listResponse = JsonConvert.DeserializeObject<List<MerchantResponse>>(rawResponseDataBody);
     return listResponse[0];
 }
예제 #2
0
        private SearchMerchantByAttribute_Request GetRequest(MerchantRequest merchant)
        {
            var request = new SearchMerchantByAttribute_Request();

            request.CommunityCode = config.VisaCommunityCode;
            request.MerchantName  = merchant.Name;
            //country code hard coded to US - should change if we go international
            request.MerchantCountryCode = CountryCodeUS;

            request.MerchantAddress    = merchant.Address;
            request.MerchantCity       = merchant.City;
            request.MerchantPostalCode = merchant.Zip;
            request.MerchantState      = merchant.State;

            return(request);
        }
        /// <summary>
        /// Creates a new merchant.
        /// </summary>
        /// <param name="model">Merchant Request</param>
        /// <returns></returns>
        public async Task <IActionResult> Post([FromBody] MerchantRequest model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var command = new CreateMerchantCommand()
            {
                Merchant = model
            };
            int result = await _mediator.Send(command);


            return(Ok(result));
        }
 public MerchantResponse ProcessMerchantTransaction(MerchantRequest objRequest)
 {
     try
     {
         objMerchantResponse.MerchantGrid = objclsDashboard.GetMerchantData(objRequest.MerchantTab, objRequest.Sdattime, objRequest.Edattime, objRequest.UserID);
         return(objMerchantResponse);
     }
     catch (Exception)
     {
         return(objMerchantResponse);
     }
     finally
     {
         objMerchantResponse = null;
         objclsDashboard     = null;
     }
 }
예제 #5
0
        /// <summary>
        /// Creates a new merchants.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancelletionToken"></param>
        /// <returns></returns>
        public async Task <Data.Entities.Merchant> CreateMerchant(MerchantRequest request, CancellationToken cancelletionToken)
        {
            Data.Entities.Merchant merchant = new Data.Entities.Merchant();
            var check = _globalStoreDbContext.Merchants.FirstOrDefault(x => x.Name.Equals(request.Name));

            if (check == null)
            {
                merchant.Name        = request.Name;
                merchant.Logo        = request.Logo;
                merchant.Website     = request.Website;
                merchant.Description = request.Description;
                merchant.MerchantClassificationId = request.MerchantClassificationId;

                _globalStoreDbContext.Add(merchant);
                await _globalStoreDbContext.SaveChangesAsync();
            }
            else
            {
                merchant = check;
            }

            return(merchant);
        }
예제 #6
0
 private string GetMerchantInfo(MerchantRequest merchant)
 {
     return(string.Format("Merchant Name:{0} Address:{1} City:{2} State:{3} Zip:{4}", merchant.Name, merchant.Address, merchant.City, merchant.State, merchant.Zip));
 }
예제 #7
0
        private async Task CallVisaToGetMids(Provider provider, IEnumerable <Merchant> merchants)
        {
            var merchantsWithoutVisaIds = from merchant in merchants
                                          where (merchant.Payments == null) ||
                                          !(merchant.Payments.Any(payment => payment.Processor == PaymentProcessor.Visa))
                                          select merchant;

            int  totalLookups      = 0;
            int  successfulLookups = 0;
            int  failedLookups     = 0;
            long totalTimeTaken    = 0;

            foreach (var merchant in merchantsWithoutVisaIds)
            {
                if (ShoudDoVisaLookup(merchant))
                {
                    totalLookups++;
                    MerchantRequest merchantRequest = new MerchantRequest
                    {
                        Address     = merchant.Location.Address,
                        City        = merchant.Location.City,
                        Name        = provider.IsNational ? provider.Name : merchant.Name,
                        PhoneNumber = merchant.PhoneNumber,
                        State       = merchant.Location.State,
                        Zip         = merchant.Location.Zip,
                        Payments    = merchant.Payments
                    };

                    Log.Info("Call Visa to look up MID for {0}", merchantRequest.Name);
                    long      timeTaken = 0;
                    Stopwatch sw        = new Stopwatch();
                    try
                    {
                        ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
                        sw.Start();
                        await VisaInvoker.Instance.SearchMerchantDetailsByAttributeAsync(merchant);

                        sw.Stop();
                        timeTaken       = sw.ElapsedMilliseconds;
                        totalTimeTaken += timeTaken;
                        successfulLookups++;
                        merchant.Payments = merchantRequest.Payments;
                        Log.Info($"Successfully looked up Visa MID for Merchant : {merchant.Name} in {timeTaken} ms");

                        Log.Info("About to update the merchant : {0} in db ", merchantRequest.Name);
                        await EarnRepository.Instance.UpdateAsync(new List <Merchant> {
                            merchant
                        });

                        Log.Info("Successfully updated the merchant : {0} in db ", merchantRequest.Name);
                    }
                    catch (Exception ex)
                    {
                        sw.Stop();
                        timeTaken       = sw.ElapsedMilliseconds;
                        totalTimeTaken += timeTaken;
                        Log.Error(ex, $"Error while looking up visa MID for {merchant.Name}, Time taken : {timeTaken} ms");
                        failedLookups++;
                    }
                }
                else
                {
                    Log.Warn($"Skipping visa lookup for {merchant.Name} as zip code is not available");
                }
            }

            long avgTimeForVisaCall = totalLookups > 0 ? (totalTimeTaken / totalLookups) : 0;

            Log.Info(
                $"Finished lookups. Total Merchants : {merchantsWithoutVisaIds.Count()}, Total Lookups : {totalLookups} successful lookups : {successfulLookups}, failed lookups : {failedLookups}, Avg lookup time : {avgTimeForVisaCall}");
        }