internal IDeviceMessage BuildReportTransaction(TerminalReportBuilder builder) { var requestId = builder.SearchBuilder.ReferenceNumber; if (requestId == default(string) && RequestIdProvider != null) { requestId = RequestIdProvider.GetRequestId().ToString(); } var doc = new JsonDoc(); doc.Set("message", "MSG"); var baseRequest = doc.SubElement("data"); baseRequest.Set("command", MapReportType(builder.ReportType)); if (!(builder.SearchBuilder.EcrId == null)) { baseRequest.Set("EcrId", builder.SearchBuilder.EcrId); } baseRequest.Set("requestId", requestId.ToString()); if (builder.ReportType == TerminalReportType.GetOpenTabDetails) { return(TerminalUtilities.BuildUpaRequest(doc.ToString())); } var txnData = baseRequest.SubElement("data"); var txnParams = txnData.SubElement("params"); txnParams.Set("reportOutput", builder.SearchBuilder.ReportOutput); txnParams.Set("batch", builder.SearchBuilder.Batch); return(TerminalUtilities.BuildUpaRequest(doc.ToString())); }
internal override ITerminalReport ProcessReport(TerminalReportBuilder builder) { var response = Send(BuildReportTransaction(builder)); switch (builder.ReportType) { case TerminalReportType.LocalDetailReport: return(new LocalDetailReport(response)); default: return(null); } }
internal IDeviceMessage BuildReportTransaction(TerminalReportBuilder builder) { if (!IsObjectNullOrEmpty(builder.Type)) { string message = INGENICO_REQ_CMD.REPORT.FormatWith(builder.Type); return(TerminalUtilities.BuildRequest(message, settings: _settings.ConnectionMode)); } else { throw new BuilderException("Type of report is missing in request."); } }
internal IDeviceMessage BuildReportTransaction(TerminalReportBuilder builder) { string messageId = MapReportType(builder.ReportType); IDeviceMessage request = null; switch (builder.ReportType) { case TerminalReportType.LocalDetailReport: { var criteria = builder.SearchBuilder; // additional data var additionalData = new ExtDataSubGroup(); if (criteria.MerchantId.HasValue) { additionalData[EXT_DATA.MERCHANT_ID] = criteria.MerchantId.ToString(); } if (!string.IsNullOrEmpty(criteria.MerchantName)) { additionalData[EXT_DATA.MERCHANT_NAME] = criteria.MerchantName; } request = TerminalUtilities.BuildRequest( messageId, "00", // EDC TYPE SET TO ALL ControlCodes.FS, criteria.TransactionType.HasValue ? ((int)criteria.TransactionType.Value).ToString().PadLeft(2, '0') : string.Empty, ControlCodes.FS, criteria.CardType.HasValue ? ((int)criteria.CardType.Value).ToString().PadLeft(2, '0') : string.Empty, ControlCodes.FS, criteria.RecordNumber.HasValue ? criteria.RecordNumber.ToString() : string.Empty, ControlCodes.FS, criteria.TerminalReferenceNumber.HasValue ? criteria.TerminalReferenceNumber.ToString() : string.Empty, ControlCodes.FS, criteria.AuthCode ?? string.Empty, ControlCodes.FS, criteria.ReferenceNumber ?? string.Empty, ControlCodes.FS, additionalData ); } break; default: { throw new UnsupportedTransactionException(string.Format("Unsupported report type: {0}", builder.ReportType.ToString())); }; } return(request); }
internal override ITerminalReport ProcessReport(TerminalReportBuilder builder) { IDeviceMessage request; if (builder.Type != null) { request = BuildReportTransaction(builder); return(ReportRequest(request)); } else { request = TerminalUtilities.BuildRequest(INGENICO_REQ_CMD.RECEIPT.FormatWith(builder.ReceiptType), settings: _settings.ConnectionMode); return(XmlRequest(request)); } }
internal override ITerminalReport ProcessReport(TerminalReportBuilder builder) { var response = Send(BuildReportTransaction(builder)); string jsonObject = Encoding.UTF8.GetString(response); var jsonParse = JsonDoc.Parse(jsonObject); switch (builder.ReportType) { case TerminalReportType.GetSAFReport: return(new SafReportResponse(jsonParse)); case TerminalReportType.GetBatchReport: return(new BatchReportResponse(jsonParse)); case TerminalReportType.GetOpenTabDetails: return(new OpenTabDetailsResponse(jsonParse)); default: return(null); } }
internal abstract byte[] SerializeRequest(TerminalReportBuilder builder);
internal abstract ITerminalReport ProcessReport(TerminalReportBuilder builder);
internal override byte[] SerializeRequest(TerminalReportBuilder builder) { return(BuildReportTransaction(builder).GetSendBuffer()); }
internal override byte[] SerializeRequest(TerminalReportBuilder builder) { throw new NotImplementedException(); }
internal override ITerminalReport ProcessReport(TerminalReportBuilder builder) { throw new NotImplementedException(); }