public async Task <BaseResponse <VoidRefund> > VoidOrRefund(IVoidRefundRequest request)
        {
            var generatedGuid = Guid.NewGuid();
            var baseRequest   = _baseRequestFactory.CreateBaseRequest(generatedGuid, DateTime.Now, Utilities.Constants.RequestTypes.VoidOrRefund,
                                                                      new VoidOrRefundRequestMessage(request, generatedGuid));

            return(await _requestHandlerRepository.SendRequestAsync <BaseResponse <VoidRefund> >(baseRequest._requestMessage.GetResponseRootName(), baseRequest));
        }
 public VoidOrRefundRequestMessage(IVoidRefundRequest request, Guid generatedGuid)
 {
     MerchantCode        = request.MerchantCode;
     MerchantAccountCode = request.MerchantAccountCode;
     Amount                      = request.Amount;
     ReferenceNumber             = request.ReferenceNumber;
     TransactionType             = request.TransactionType;
     TransactionCode             = generatedGuid.ToString();
     PurchaseToken               = request.PurchaseToken;
     OriginatingTechnologySource = request.OriginatingTechnologySource;
     SoftwareVendor              = request.SoftwareVendor;
     SecurityTechnology          = request.SecurityTechnology;
     CustomerAccountCode         = request.CustomerAccountCode;
     InvoiceNum                  = request.InvoiceNum;
     DeviceMake                  = request.DeviceMake;
     DeviceModel                 = request.DeviceModel;
     DeviceSerial                = request.DeviceSerial;
     DeviceFirmware              = request.DeviceFirmware;
     RegistrationKey             = request.RegistrationKey;
     AppHostMachineId            = request.AppHostMachineId;
     IntegrationMethod           = request.IntegrationMethod;
     EMVTags                     = request.EMVTags;
     VoidReasonCode              = request.VoidReasonCode;
 }