Commit 27b95f35 authored by Brayan Sarmiento's avatar Brayan Sarmiento
Browse files

Mi primer commit

parents
{
"Version": 1,
"WorkspaceRootPath": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|d:\\discod\\selfcheckout\\proyecto difare\\integration_pinpad_difare\\integration_pinpad_difare\\app_datafono_difare\\services\\transactionservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|solutionrelative:services\\transactionservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|d:\\discod\\selfcheckout\\proyecto difare\\integration_pinpad_difare\\integration_pinpad_difare\\app_datafono_difare\\entities\\transaccionresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|solutionrelative:entities\\transaccionresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|d:\\discod\\selfcheckout\\proyecto difare\\integration_pinpad_difare\\integration_pinpad_difare\\app_datafono_difare\\helpers\\rgvalidatorhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|solutionrelative:helpers\\rgvalidatorhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|d:\\discod\\selfcheckout\\proyecto difare\\integration_pinpad_difare\\integration_pinpad_difare\\app_datafono_difare\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 3,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{f4e46f1e-cf83-40aa-b568-a627394bc994}"
},
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Bookmark",
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "TransactionService.cs",
"DocumentMoniker": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Services\\TransactionService.cs",
"RelativeDocumentMoniker": "Services\\TransactionService.cs",
"ToolTip": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Services\\TransactionService.cs",
"RelativeToolTip": "Services\\TransactionService.cs",
"ViewState": "AgIAALwAAAAAAAAAAAAqwMwAAABAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-25T22:21:36.126Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "TransaccionResponse.cs",
"DocumentMoniker": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Entities\\TransaccionResponse.cs",
"RelativeDocumentMoniker": "Entities\\TransaccionResponse.cs",
"ToolTip": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Entities\\TransaccionResponse.cs",
"RelativeToolTip": "Entities\\TransaccionResponse.cs",
"ViewState": "AgIAABEAAAAAAAAAAAD4vxkAAAAtAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-26T16:54:58.703Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "RgValidatorHelper.cs",
"DocumentMoniker": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Helpers\\RgValidatorHelper.cs",
"RelativeDocumentMoniker": "Helpers\\RgValidatorHelper.cs",
"ToolTip": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Helpers\\RgValidatorHelper.cs",
"RelativeToolTip": "Helpers\\RgValidatorHelper.cs",
"ViewState": "AgIAABcAAAAAAAAAAADwvzoAAAAFAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-26T14:56:17.589Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "Program.cs",
"DocumentMoniker": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Program.cs",
"RelativeToolTip": "Program.cs",
"ViewState": "AgIAABMAAAAAAAAAAAAQwCYAAABBAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-25T16:25:34.028Z",
"EditorCaption": ""
}
]
}
]
}
]
}
\ No newline at end of file
{
"Version": 1,
"WorkspaceRootPath": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|d:\\discod\\selfcheckout\\proyecto difare\\integration_pinpad_difare\\integration_pinpad_difare\\app_datafono_difare\\services\\transactionservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|solutionrelative:services\\transactionservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|d:\\discod\\selfcheckout\\proyecto difare\\integration_pinpad_difare\\integration_pinpad_difare\\app_datafono_difare\\entities\\transaccionresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|solutionrelative:entities\\transaccionresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|d:\\discod\\selfcheckout\\proyecto difare\\integration_pinpad_difare\\integration_pinpad_difare\\app_datafono_difare\\helpers\\rgvalidatorhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|solutionrelative:helpers\\rgvalidatorhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|d:\\discod\\selfcheckout\\proyecto difare\\integration_pinpad_difare\\integration_pinpad_difare\\app_datafono_difare\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{69CBCEFD-99F8-1A42-AC75-B3D94256EE37}|app_datafono_difare.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 3,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{f4e46f1e-cf83-40aa-b568-a627394bc994}"
},
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Bookmark",
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "TransactionService.cs",
"DocumentMoniker": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Services\\TransactionService.cs",
"RelativeDocumentMoniker": "Services\\TransactionService.cs",
"ToolTip": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Services\\TransactionService.cs",
"RelativeToolTip": "Services\\TransactionService.cs",
"ViewState": "AgIAALwAAAAAAAAAAAAqwMwAAABAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-25T22:21:36.126Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "TransaccionResponse.cs",
"DocumentMoniker": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Entities\\TransaccionResponse.cs",
"RelativeDocumentMoniker": "Entities\\TransaccionResponse.cs",
"ToolTip": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Entities\\TransaccionResponse.cs",
"RelativeToolTip": "Entities\\TransaccionResponse.cs",
"ViewState": "AgIAABEAAAAAAAAAAAD4vxkAAAAtAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-26T16:54:58.703Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "RgValidatorHelper.cs",
"DocumentMoniker": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Helpers\\RgValidatorHelper.cs",
"RelativeDocumentMoniker": "Helpers\\RgValidatorHelper.cs",
"ToolTip": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Helpers\\RgValidatorHelper.cs",
"RelativeToolTip": "Helpers\\RgValidatorHelper.cs",
"ViewState": "AgIAABcAAAAAAAAAAADwvzoAAAAFAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-26T14:56:17.589Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "Program.cs",
"DocumentMoniker": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "D:\\Discod\\SelfCheckout\\Proyecto DIFARE\\Integration_pinpad_difare\\Integration_pinpad_difare\\app_datafono_difare\\Program.cs",
"RelativeToolTip": "Program.cs",
"ViewState": "AgIAABMAAAAAAAAAAAAQwCYAAABBAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-25T16:25:34.028Z",
"EditorCaption": ""
}
]
}
]
}
]
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace app_datafono_difare.Config
{
public class AppSettings
{
public RutasConfig Rutas { get; set; }
}
public class RutasConfig
{
public string ArchivoBines { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace app_datafono_difare.Entities
{
public class TransaccionResponse
{
public bool Success { get; set; }
public string AuthorizationCode { get; set; }
public string TransactionId { get; set; }
public string CardNumber { get; set; }
public string CardType { get; set; }
public string ResponseCode { get; set; }
public string ResponseMessage { get; set; }
public decimal Amount { get; set; }
public DateTime Timestamp { get; set; }
public string CommerceCode { get; set; }
public string TerminalId { get; set; }
//Campos adicionales
public string CodRed { get; set; }
public string Metodo { get; set; }
public string Lote { get; set; }
public string Promocion { get; set; }
public string codigoAdquiriente { get; set; }
public string idAdquiriente { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace app_datafono_difare.Helpers
{
public static class DateHelper
{
public static DateTime ParseDate(string fecha, string hora)
{
try
{
if (string.IsNullOrEmpty(fecha) || string.IsNullOrEmpty(hora))
return DateTime.Now;
int year = int.Parse(fecha.Substring(0, 4));
int month = int.Parse(fecha.Substring(4, 2));
int day = int.Parse(fecha.Substring(6, 2));
int hour = int.Parse(hora.Substring(0, 2));
int min = int.Parse(hora.Substring(2, 2));
int sec = int.Parse(hora.Substring(4, 2));
return new DateTime(year, month, day, hour, min, sec);
}
catch
{
return DateTime.Now;
}
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace app_datafono_difare.Helpers
{
public static class ObtenerTipoTarjetaHelper
{
public static string ObtenerTipoTarjetaPorBin(string cardNumber,string ruta)
{
if (string.IsNullOrWhiteSpace(cardNumber) || cardNumber.Length < 6)
return null;
string bin = cardNumber.Substring(0, 6);
if (!File.Exists(ruta))
return null;
var lineas = File.ReadAllLines(ruta);
foreach (var linea in lineas)
{
if (linea.Length < 8)
continue;
string binArchivo = linea.Substring(0, 6);
if (binArchivo == bin)
{
string tipo = linea.Substring(linea.Length - 2);
return tipo;
}
}
return null;
//Manejo de bines
//if (string.IsNullOrWhiteSpace(cardNumber) || cardNumber.Length < 6)
// return null;
//string primeros6 = cardNumber.Substring(0, 6);
//string path = @"C:\RUTALOGPINPADADEFINIR\BINES.TXT";
//if (!File.Exists(path))
// return null;
//var lineas = File.ReadAllLines(path);
//foreach (var linea in lineas)
//{
// if (linea.Length < 18)
// continue; // línea inválida
// string binInicio = linea.Substring(0, 6);
// string binFin = linea.Substring(6, 6);
// string tipo = linea.Substring(linea.Length - 2); // Últimos 2 caracteres "TC" o "TD"
// // Convertir a número para comparar rangos
// if (int.TryParse(binInicio, out int inicio) &&
// int.TryParse(binFin, out int fin) &&
// int.TryParse(primeros6, out int bin))
// {
// if (bin >= inicio && bin <= fin)
// {
// return tipo; // Encontrado
// }
// }
//}
//return null; // No encontrado
}
}
}
using System;
using System.IO;
using System.Threading.Tasks;
using Serilog;
using Microsoft.Extensions.Configuration;
using app_datafono_difare.Services;
namespace app_datafono_difare
{
class Program
{
static async Task Main(string[] args)
{
var appConfig = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false)
.Build();
var serilogConfig = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.serilog.json", optional: false)
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(serilogConfig)
.CreateLogger();
Console.SetOut(new SerilogTextWriter(Log.Logger));
Console.SetError(new SerilogTextWriter(Log.Logger));
try
{
var rgService = RgService.Instance;
string rutaBines = appConfig["ArchivoBines"];
string url = appConfig["UrlServicio"];
string estacion = appConfig["Estacion"];
var ventaService = new TransactionService(rgService, rutaBines);
await ventaService.ProcesarVenta(url, estacion, 5.00m, 0);
}
catch (Exception ex)
{
Log.Error(ex, "Error ejecutando la aplicación");
}
finally
{
Log.CloseAndFlush();
}
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ClsRgFunciones;
using Serilog;
namespace app_datafono_difare.Services
{
public class RgService
{
private static readonly Lazy<RgService> _instance =
new Lazy<RgService>(() => new RgService());
public static RgService Instance => _instance.Value;
public RgFunciones Rg { get; }
private RgService()
{
Log.Information("Inicializando RgFunciones...");
Rg = RgFunciones.Instancia;
}
}
}
using app_datafono_difare.Entities;
using app_datafono_difare.Helpers;
using ClsRgFunciones;
using com.sun.xml.@internal.ws.util.xml;
using Newtonsoft.Json;
using org.omg.CosNaming;
using Serilog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using System.Xml;
using static app_datafono_difare.Program;
namespace app_datafono_difare.Services
{
public class TransactionService
{
private readonly RgService _rg;
private readonly string _rutaBines;
public TransactionService(RgService rgService, string rutaBines)
{
_rg = rgService;
_rutaBines = rutaBines;
}
public async Task ProcesarVenta(string url, string estacion, decimal monto, int cuotas)
{
Log.Information("Configurando servicio...");
_rg.Rg.EstablecerServicio(url);
_rg.Rg.EstablecerEstacion(estacion);
_rg.Rg.ConfigurarTerminal(estacion);
_rg.Rg.ConfigurarPinpad();
Log.Information("Datos configurados. Ejecutando venta...");
await EnviarVenta(monto, cuotas);
}
public async Task EnviarVenta(decimal monto, int cuotas)
{
string codigo = string.Empty;
int numeroCuotas = cuotas;
bool tieneCuotas = numeroCuotas > 0;
string tipoTran = tieneCuotas ? "02" : "01";
string tipoCompra = tieneCuotas ? "02" : "00";
string cuotaStr = numeroCuotas.ToString("00");
int montoTotal = (int)(monto * 100);
string montoTotalStr = montoTotal.ToString();
int base12 = (int)(monto * 100 / 1.12m);
int iva = montoTotal - base12;
string base12Str = base12.ToString();
string base0Str = "0";
string ivaStr = iva.ToString();
string servicioStr = "0";
string propinaStr = "0";
string secuenciaStr = "0";
string aprobacion = "";
string fechaAnul = "";
string horaAnul = "";
string respuesta = "";
try
{
//TODO - Delay para que la DLL funcione correctamente
Log.Information("Esperando inicialización de la pinpad...");
await Task.Delay(1000);
Log.Information("Preparando venta...");
await Task.Delay(1000);
Log.Information("Enviando comando AUTORIZAR...");
// Delay justo antes del comando crítico
await Task.Delay(1500);
//Parsear valores
string resultado = _rg.Rg.Autorizar(
ref codigo,
int.Parse(tipoTran),
int.Parse(tipoCompra),
int.Parse(cuotaStr),
double.Parse(montoTotalStr) / 100.0,
double.Parse(base12Str) / 100.0,
double.Parse(base0Str) / 100.0,
double.Parse(ivaStr) / 100.0,
double.Parse(servicioStr) / 100.0,
double.Parse(propinaStr) / 100.0,
int.Parse(secuenciaStr),
aprobacion,
ref fechaAnul,
ref horaAnul,
ref respuesta
);
Log.Information("Respuesta cruda: " + resultado);
if (resultado.IndexOf("FALLO", StringComparison.OrdinalIgnoreCase) >= 0 ||
resultado.IndexOf("CONNECTION", StringComparison.OrdinalIgnoreCase) >= 0)
{
Log.Error("ERROR DE CONEXIÓN: La pinpad o el servicio remoto no respondió correctamente. Respuesta: " + respuesta);
return;
}
var response = ProcesarRespuesta(resultado, monto);
Log.Information($"Transacción procesada: {response.ResponseMessage}");
}
catch (Exception ex)
{
Log.Error(ex, "Error de validación o error en Autorizar");
throw;
}
}
private TransaccionResponse ProcesarRespuesta(string respuesta, decimal amount)
{
string iCodigo = string.Empty;
string iCodigoRed = string.Empty;
string iCodRespuesta = string.Empty;
string iMensaje = string.Empty;
string iReferencia = string.Empty;
string iLote = string.Empty;
string iHora = string.Empty;
string iFecha = string.Empty;
string iAutorizacion = string.Empty;
string iTerminal = string.Empty;
string iComercio = string.Empty;
string iInteres = string.Empty;
string iPromocion = string.Empty;
string iCodAdq = string.Empty;
string iAdq = string.Empty;
string iMarca = string.Empty;
string iModo = string.Empty;
string iNombre = string.Empty;
string iMontoFijo = string.Empty;
string iEmv = string.Empty;
string iEmv2 = string.Empty;
string iEmv3 = string.Empty;
string iPin = string.Empty;
string iArqc = string.Empty;
string iTarjeta = string.Empty;
string iFecVen = string.Empty;
string iTrack = string.Empty;
string iRespuesta = string.Empty;
string iMid2 = string.Empty;
double dInteres = 0;
double dMontoFijo = 0;
ProcesarRespuestaDll(
respuesta,
ref iCodigo,
ref iCodigoRed,
ref iCodRespuesta,
ref iMensaje,
ref iReferencia,
ref iLote,
ref iHora,
ref iFecha,
ref iAutorizacion,
ref iTerminal,
ref iComercio,
ref iInteres,
ref iPromocion,
ref iCodAdq,
ref iAdq,
ref iMarca,
ref iModo,
ref iNombre,
ref iMontoFijo,
ref iEmv,
ref iEmv2,
ref iEmv3,
ref iPin,
ref iArqc,
ref iTarjeta,
ref iFecVen,
ref iTrack,
ref iRespuesta,
ref iMid2);
bool success = iCodRespuesta == "00";
var response = new TransaccionResponse
{
AuthorizationCode = iAutorizacion?.Trim(),
TransactionId = iReferencia?.Trim(),
CardNumber = iTarjeta?.Trim(),
CardType = iMarca?.Trim(),
ResponseCode = iCodRespuesta?.Trim(),
ResponseMessage = iMensaje?.Trim(),
Amount = amount,
Timestamp = DateHelper.ParseDate(iFecha, iHora),
CommerceCode = iComercio?.Trim(),
TerminalId = iTerminal?.Trim(),
CodRed = iCodigoRed?.Trim(),
Lote = iLote?.Trim(),
Promocion = iPromocion.Trim(),
codigoAdquiriente = iCodAdq.Trim(),
idAdquiriente = iAdq.Trim(),
Metodo = ObtenerTipoTarjetaHelper.ObtenerTipoTarjetaPorBin(iTarjeta?.Trim(), _rutaBines)
};
var json = JsonConvert.SerializeObject(response);
Log.Information($"Resultado de la transacción: {json}");
return response;
}
public static string ProcesarRespuestaDll(
string pRespuesta,
ref string iCodigo,
ref string iCodigoRed,
ref string iCodRespuesta,
ref string iMensaje,
ref string iReferencia,
ref string iLote,
ref string iHora,
ref string iFecha,
ref string iAutorizacion,
ref string iTerminal,
ref string iComercio,
ref string iInteres,
ref string iPromocion,
ref string iCodAdq,
ref string iAdq,
ref string iMarca,
ref string iModo,
ref string iNombre,
ref string iMontoFijo,
ref string iEmv,
ref string iEmv2,
ref string iEmv3,
ref string iPin,
ref string iArqc,
ref string iTarjeta,
ref string iFecVen,
ref string iTrack,
ref string iRespuesta,
ref string iMid2)
{
// Variables con tipos correctos
double dInteres = 0;
double dMontoFijo = 0;
var rg = RgFunciones.Instancia;
var resultado = rg.ProcesarRespuesta(
pRespuesta,
ref iCodigo,
ref iCodigoRed,
ref iCodRespuesta,
ref iMensaje,
ref iReferencia,
ref iLote,
ref iHora,
ref iFecha,
ref iAutorizacion,
ref iTerminal,
ref iComercio,
ref dInteres,
ref iPromocion,
ref iCodAdq,
ref iAdq,
ref iMarca,
ref iModo,
ref iNombre,
ref dMontoFijo,
ref iEmv,
ref iEmv2,
ref iEmv3,
ref iPin,
ref iArqc,
ref iTarjeta,
ref iFecVen,
ref iTrack,
ref iRespuesta,
ref iMid2);
// Convertir doubles a strings
iInteres = dInteres.ToString("F2");
iMontoFijo = dMontoFijo.ToString("F2");
return resultado;
}
}
}
{
"folders": [
{
"path": "."
}
],
"settings": {}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment