示例#1
0
        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()));
        }
示例#2
0
        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.");
     }
 }
示例#4
0
        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));
            }
        }
示例#6
0
        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);
            }
        }
示例#7
0
 internal abstract byte[] SerializeRequest(TerminalReportBuilder builder);
示例#8
0
 internal abstract ITerminalReport ProcessReport(TerminalReportBuilder builder);
示例#9
0
 internal override byte[] SerializeRequest(TerminalReportBuilder builder)
 {
     return(BuildReportTransaction(builder).GetSendBuffer());
 }
 internal override byte[] SerializeRequest(TerminalReportBuilder builder)
 {
     throw new NotImplementedException();
 }
示例#11
0
 internal override ITerminalReport ProcessReport(TerminalReportBuilder builder)
 {
     throw new NotImplementedException();
 }