Buenas y santas, tengo una pequeña tarea para desarrollar, busco costos por inbox, al que le interese hacer unos trumps extras bienvenido sea.
Dejo la info.
Estoy resolviendo una conexión a FEPLINK para un local de Punta Carrtas.
Ellos no tienen casi documentación solo el Web Service, ya tengo la clave el usuario y el certificado para conectarme.
La solución está en VS2015 y tengo acceso a los datos de Facturación solo me falta envíarlos al WS.
Busco precio y tiempos de desarrollo.

Parámetros del web service

Mensaje (registros tipo MT_MOV o MT_MOV_EX)
Usuarioisponible
Claveisponible
FirmaDigital isponible
Respuesta
Retorno (registro tipo MT_MOV_RESP)

Invocación

Se disponibiliza la siguiente dirección para la invocación:

La idea del firmado es que se enviará un parámetro adicional pudiendo obtener estos valores realizando un WSDL sobre la siguiente dirección:

https://www4.puntacarretas.com.uy:44...adas.aspx?wsdl

Para verificar la autenticidad de la información recibida, se utilizará una firma digital que será enviada como parámetro adicional. Esto permitirá asegurar la identidad del servidor que envía la información.
Para generar dicha firma se deberá:
1) Generar un hash (algoritmo SHA-1) concatenando todos los parámetros que se envíen en el parámetro Mensaje (registros tipo MT_MOV o MT_MOV_EX).
2) Firmar el hash obtenido en el paso anterior, utilizando el algoritmo RSA y una clave privada generada por quien envía la información; el resultado de la misma convertido a formato Base64.
Quién envía la información deberá entregar la clave pública (RSA 2048bits) a quien recibe la misma para que éste pueda realizar la verificación de la firma al momento de recibir una solicitud.
Se detalla en apartado “Generación de Certificado” como poder armar los archivos de certificado tanto privado como público.
La información del registro es igual a lo que estás haciendo hasta ahora.



Parámetros del web service

Mensaje (registros tipo MT_MOV o MT_MOV_EX)
Usuario
Clave
FirmaDigital
Respuesta
Retorno (registro tipo MT_MOV_RESP)

El usuario y la clave se coordinarán con la Administración del Shopping



Formato de datos a enviar

Los mensajes a enviar, son los mismos que se enviaban en la versión anterior del FEPLINK, con exactamente el mismo formato; se describe a continuación.


Solicitud a la Administración de Punta Carretas Shopping de INTERVENCION de Movimientos de Ventas

Aquí se distinguen dos tipos distintos de Movimientos de Ventas por parte de los locales del Shopping, éstos son MT_MOV y MT_MOV_EX. Estos están pensados para diferenciar locales los cuales disponen de diferentes rubros por articulos que venden. El registro correcto que se aplica a cada local debe ser consultado a la ADMINISTRACION DE PUNTA CARRETAS SHOPPING

Movimiento tipo MT_MOV

Este servicio sirve para informar de las ventas efectuadas por un local hacia la Administración del Shopping Punta Carretas Shopping. El registro posee el siguiente formato.

MT_MOV

char msg_type [ 1]// valor=2
char nro_local [ 4]// Nro. De local
char nro_caja [ 4]// Caja dentro del local
char fecha [ 8]// YYYYMMDD emitido
char hora [ 6]// HHMMSS emitido
char fecha_trans [ 8]// Fecha de Transferencia
char hora_trans [ 6]// Hora de Transferencia
char serie_comp [ 2]// Serie del comprobante; cada numeración debe tener una serie independiente.
char nro_comp [ 8]// Nro. De comprobante (Factura, nota en el local)
char cr_db [ 1]// 'C'=Credito, 'D'=Debito; 'C' es venta
char moneda [ 1]// 'P'=Pesos, 'D'=Dolar
char impuestos [13]// 11 enteros, 2 decimales sin punto decimal
char tot_doc [13]// Total del documento sin impuestos
char cant_cuot [ 2]// Cantidad de cuotas para el caso de créditos de la casa.
char intervencion [12]// space(12)
char nro_transacc [ 8]// Numerador -> ** ver aclaración de Secuencia
char cliente [20]// Cédula en formato n,nnn,nnn-n y recostada a la izquierda (Ver aclaración de cédula)
char literal [20]// Literal (Ver aclaración del literal)
char importe1 [13]// 11 enteros, 2 decimales (IVA incl) sin punto decimal
char Medio_Pago1 [ 2]// *ver tabla de Medios de Pago
char importe2 [13]// 11 enteros, 2 decimales (IVA incl) sin punto decimal
char Medio_Pago2 [ 2]// *ver tabla de Medios de Pago
char importe3 [13]// 11 enteros, 2 decimales (IVA incl) sin punto decimal
char Medio_Pago3 [ 2]// *ver tabla de Medios de Pago
char importe4 [13]// 11 enteros, 2 decimales (IVA incl) sin punto decimal
char Medio_Pago4 [ 2]// *ver tabla de Medios de Pago
char importe5 [13]// 11 enteros, 2 decimales (IVA incl) sin punto decimal
char Medio_Pago5 [ 2]// *ver tabla de Medios de Pago
char importe6 [13]// 11 enteros, 2 decimales (IVA incl) sin punto decimal
char Medio_Pago6 [ 2]// *ver tabla de Medios de Pago
Código:
//Se obtiene el certificado y la key privada del certificado con algoritmo RSA            
            X509Store my = new X509Store(StoreName.My, StoreLocation.LocalMachine);
            my.Open(OpenFlags.ReadOnly);
            RSACryptoServiceProvider csp = null; RSACryptoServiceProvider algPrivateKey = null;
            foreach (X509Certificate2 cert in my.Certificates)
            {
                if (cert.Subject.ToLower().Contains("cn=www.puntacarretas.com.uy"))
                {
                    // Get its associated CSP and private key
                    algPrivateKey = (RSACryptoServiceProvider)cert.PrivateKey;
                    break;
                }
            }
            
            //Mensaje a enviar
            string strMsg = msg;


            //se crea una instancia de algoritmo SHA1 
            SHA1Managed sha1Manag = new SHA1Managed();


            //Se genera un Hash del Mensaje utilizando el algoritmo SHA1
            byte[] HashValue = sha1Manag.ComputeHash(Encoding.ASCII.GetBytes(strMsg));


            //Se firma el hash generado con el certificado y se convierte a string base64
            dynamic strSignedData = Convert.ToBase64String(algPrivateKey.SignHash(HashValue, CryptoConfig.MapNameToOID("SHA1")));


            //Mensaje firmado (strSignedData)
            return strSignedData;
Dejo mi correo me@andrescampodonico.com y mi tel 095-911-269 aceta waza