public async Task <ProcessorResponse> ExecuteAsync(AuthoriseRequest request) { var acquirerRequest = _Mapper.Map <AuthoriseRequest, AcquirerRequest>(request); var acquirerResponse = await _acquirerHandler.ProcessAsync(acquirerRequest); var payment = new Payment { Id = Guid.NewGuid().ToString(), MerchantAccount = request.MerchantAccount, AcquirerReference = acquirerResponse.Id, AcquirerStatus = acquirerResponse.Status, Amount = request.Amount, Currency = request.CurrencyCode, CardDetails = _cardDetailsMasker.Mask(new CardDetails { CardNumber = request.CardDetails.CardNumber, ExpiryDate = request.CardDetails.ExpiryDate }) }; //paymentParameters.MerchantAccount, could use merchant id to isolate data //event sourcing to keep record of all interactions and its sequence await _repository.SaveAsync(payment); return(_Mapper.Map <Payment, ProcessorResponse>(payment)); }
public async Task <AcquirerResponse> ProcessAsync(AcquirerRequest request) { //_monitor.AddParameter(request.PaymentOperation); //_monitor.AddParameter(request.DesignatedAccount); //_monitor.AddParameter(request.CurrencyCode); //_monitor.AddParameter(request.Amount); //_monitor.AddParameter(request.CardDetails.CardNumber); //_monitor.AddParameter(request.CardDetails.ExpiryDate); AcquirerResponse acquirerResponse; //using (_monitor.Timer(nameof(IAcquirerHandler))) //{ acquirerResponse = await _inner.ProcessAsync(request); //} //_monitor.AddParameter(_acquirerResponse.Id); //_monitor.AddParameter(_acquirerResponse.Status); return(acquirerResponse); }