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]; }
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; } }
/// <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); }
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)); }
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}"); }