PAC 5 con API Rest
This commit is contained in:
@@ -57,12 +57,77 @@ Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
|
||||
|
||||
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
|
||||
context.Response.ContentType = "application/json"
|
||||
Dim usuario = ValidaUsuarioSistema(140, 100)
|
||||
Dim ObjFactura As New Modelos.Factura(usuario, 898028, 140)
|
||||
|
||||
GeneraPolizaVentaWS(context, ObjFactura)
|
||||
'GeneraPolizaVentaLTHWSD(context)
|
||||
'GeneraIndicadores(context)
|
||||
Dim UsuarioActual = ValidaUsuarioSistema(1, 100)
|
||||
'Dim ObjFactura As New Modelos.Factura(usuario, 898028, 140)
|
||||
|
||||
Dim UsuarioServicio As String = "rene.molina@adssistemas.mx"
|
||||
Dim ClaveServicio As String = "Facturacion2021#"
|
||||
|
||||
Dim RutaArchivo As String = String.Format("{0}XML\{1}\", UsuarioActual.Empresa.Ruta, "Ing")
|
||||
Dim NombreArchivoXML As String = "test"
|
||||
|
||||
If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo)
|
||||
|
||||
Dim EmisorRFC As String = "ZUÑ920208KL4"
|
||||
Dim ArchivoLLave As String = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.key"
|
||||
Dim ArchivoCertificado As String = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.cer"
|
||||
Dim Clave = "12345678a"
|
||||
Dim TimbraProduccion = False
|
||||
|
||||
If Not File.Exists(ArchivoCertificado) Then
|
||||
context.Response.Write("El archivo de llave privada no existe")
|
||||
Exit Sub
|
||||
End If
|
||||
If Not File.Exists(ArchivoLLave) Then
|
||||
context.Response.Write("El archivo de llave privada no existe")
|
||||
Exit Sub
|
||||
End If
|
||||
If UsuarioActual.Empresa.ContraseñaKey = "" Then
|
||||
context.Response.Write("La clave no puede ser vacía")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim llaveByte As Byte(), certByte As Byte()
|
||||
Dim llaveBase64 As String = "", certBase64 As String = ""
|
||||
Dim cfdi As New GoFac.GoCfdi()
|
||||
Dim complemento As String = ""
|
||||
Dim complementoConcepto As String = ""
|
||||
|
||||
|
||||
Try
|
||||
llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave)
|
||||
llaveBase64 = Convert.ToBase64String(llaveByte)
|
||||
Catch ex As Exception
|
||||
context.Response.Write($"Error al leer la llave privada: {ex.Message}")
|
||||
Exit Sub
|
||||
End Try
|
||||
|
||||
|
||||
Try
|
||||
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
|
||||
certBase64 = Convert.ToBase64String(certByte)
|
||||
Catch ex As Exception
|
||||
context.Response.Write($"Error al leer el certificado: {ex.Message}")
|
||||
Exit Sub
|
||||
End Try
|
||||
|
||||
Dim TokenAuth As String = ToBase64Encode($"{UsuarioServicio}:{ClaveServicio}")
|
||||
Dim XmlBase64 As String = ToBase64Encode(XMLPrueba)
|
||||
|
||||
Dim payload As New JObject(
|
||||
New JProperty("contrato", "72330711-cac6-4106-8051-cbcda1aef495"),
|
||||
New JProperty("certBase64", certBase64),
|
||||
New JProperty("keyBase64", llaveBase64),
|
||||
New JProperty("keyPass", Clave),
|
||||
New JProperty("xmlBase64", XmlBase64),
|
||||
New JProperty("prueba", (Not TimbraProduccion).ToString().ToLower),
|
||||
New JProperty("opciones", New String(0) {""})
|
||||
)
|
||||
|
||||
Dim resp = EnviarInformacionPADE("https://timbrado.pade.mx/servicio/rest/timbrado/timbrarConCSD", payload.ToString(), TokenAuth)
|
||||
|
||||
context.Response.Write(resp)
|
||||
End Sub
|
||||
|
||||
|
||||
@@ -72,6 +137,44 @@ Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private Function EnviarInformacionPADE(url As String, payload As String, tokenAuth As String) As String
|
||||
Dim Retorno As String = "{}"
|
||||
Try
|
||||
Using httpClient = New HttpClient()
|
||||
httpClient.Timeout = New TimeSpan(0, 5, 0)
|
||||
Using request = New HttpRequestMessage(HttpMethod.Post, New Uri(url))
|
||||
request.Headers.Add("Authorization", $"Basic {tokenAuth}")
|
||||
Using content = New StringContent(payload, Encoding.UTF8, "application/json")
|
||||
request.Content = content
|
||||
|
||||
Dim response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result
|
||||
Retorno = response.Content.ReadAsStringAsync().Result
|
||||
End Using
|
||||
End Using
|
||||
End Using
|
||||
Catch ex As Exception
|
||||
OnError("Ocurrió un error al enviar la informacion", ex)
|
||||
End Try
|
||||
Return Retorno
|
||||
End Function
|
||||
|
||||
|
||||
Public Function ToBase64Encode(ByVal plainText As String) As String
|
||||
Dim plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText)
|
||||
Return System.Convert.ToBase64String(plainTextBytes)
|
||||
End Function
|
||||
|
||||
|
||||
Public Function ToBase64Decode(ByVal base64EncodedData As String) As String
|
||||
Dim base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData)
|
||||
Return System.Text.Encoding.UTF8.GetString(base64EncodedBytes)
|
||||
End Function
|
||||
|
||||
Public Property XMLPrueba As String = "<?xml version=""1.0"" encoding=""UTF-8""?><cfdi:Comprobante xmlns:cfdi=""http://www.sat.gob.mx/cfd/3"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:schemaLocation=""http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd"" Version=""3.3"" Serie=""HM"" Folio=""1682"" Fecha=""2021-05-20T17:43:32"" Sello=""BdE1N3CwiqU6KKOWT80N6X/9kELGK22bRmfHfXHUaYvOCmOixuAN3a0yyd5Yzf4lD0sVs+OScZ1rgNKhWWyRwAJzw/avfGod2l7LIGbyYLGoUHUPpY3swDgTk+zq29PUbf3500YPf4qkXx3GcKYkIb4TnQPnvFnjE8FvcV+p8wETuvijm5T3HzFKCXG6ePrERIt2PN1NM26p2NIOzMSUksSNUtC6rqEI8G2yIUIMZqQ4bHTo1WdV0UPKBaqjkPLyY8Q1TMFZDbiudE454bUJWjxv6KYicXgfH17HJY91XTncCgwwrwlcPrKK7ea/xPzYumHMurEl5arjfqE6+nI3Fw=="" FormaPago=""01"" NoCertificado=""30001000000400002442"" Certificado=""MIIFuzCCA6OgAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDI0NDIwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNjE3MjAxODA2WhcNMjMwNjE3MjAxODA2WjCB4jEnMCUGA1UEAxQeWkFQQVRFUklBIFVSVEFETyDRRVJJIFNBIERFIENWMScwJQYDVQQpFB5aQVBBVEVSSUEgVVJUQURPINFFUkkgU0EgREUgQ1YxJzAlBgNVBAoUHlpBUEFURVJJQSBVUlRBRE8g0UVSSSBTQSBERSBDVjElMCMGA1UELRQcWlXROTIwMjA4S0w0IC8gS0FITzY0MTEwMUIzOTEeMBwGA1UEBRMVIC8gS0FITzY0MTEwMUhOVExLUzA2MR4wHAYDVQQLFBVaYXBhdGVy7WEgVXJ0YWRvINFlcmkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCX4ICuLAA/GYfEdRUMBLolOHKOUTDyw//CQjcj6dmCUWP8Y2UIhbq1JJ5nClsmhg6WThXjYqzRiYSAYagzrtwWri8I7oURIoTDeuxU69UOg1shuCEo89prJfx8ZIGKwB+GedC6dFdKGZLKn4ksSuyfntXmW4rZLup2j24mQx+jpdmcQIGMe6A/2668ZhpYpCw/vwfH8edkS5X41yp/zj6Z9mIySRWaMHm5eT/X0D01l3gX2gJVXY5ebUsKIEmDCP5pmBmyFyJjqYUhYi3+nYARrVPdZ53RPigcoLspXyIBVf2CPansqOYiRIqxLjfsL6B1qGJmpFN1RHd+XF9GzkHzAgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBCwUAA4ICAQAw5nqLkVuaTWX/qnPqWpOlSfrfVF2plqAPu1sdgzU/vZGgZCLxq3cY3Dg02khdsM74A3fYFQGxFFo6zDt5Ru9VySBks2gmbebRuuYKAKHMoi0tNpvI2arOMaiJsq2yzGAox6e+MXhhQ1oV+28HaxjYIWuVSwWAzie+n6VloWXMDDxTg7t9URJ7d8E7ZrPZ2X0+7h6b8sfnOjTljUm+Mt6e6AIl1+lA7Ar4YeJgIOeU/RKSOcvrCGDNtz7kpn0XdsFC/m1xG1bIdhyv0zkRmKvtpVGROsSEHPLBwuTENIkm0Cw2/FQsPrG8S9Yer451Jv0H+heFfJXqVrHv8Azba5OkotK5IlPaHm9voxfhwI1aXHbUS+NwpTHHOeVsvzsC9LQDiLGO3MQLn7VFZebFa84CddwLWf/JTyPYIcg3I/BRDFqbrVNRRDJwVlxIgbU7ZhRIcjiRLFx6UbAd8B2fe+GHgxw/x/6Pop65ca32iGAJgojtXWdD5gZvh6PlhEhWMhIOCvAesE52L4wmIHofAIZjlPRXNaitZ74xDEIpQ9f5X0w/4ltB7OOBYYfu8z9lzCc4M2iSmtq1rvSYxnLI/nvt7D0uYrq82ZeG3kzungcS8qNjufGJeEHNeyDxMXF9rYU4KLxK8KLzA2Ldh7+3zywU/pwXhW/aTS42EViWPbffng=="" CondicionesDePago=""01 - Efectivo"" SubTotal=""100.00"" Moneda=""MXN"" TipoCambio=""1"" Total=""116.00"" TipoDeComprobante=""I"" MetodoPago=""PPD"" LugarExpedicion=""82250""><cfdi:Emisor Rfc=""ZUÑ920208KL4"" Nombre=""Empresa de DEMO"" RegimenFiscal=""601"" /><cfdi:Receptor Rfc=""VOC990129I26"" Nombre=""Cliente Demostracion"" UsoCFDI=""G03"" /><cfdi:Conceptos><cfdi:Concepto ClaveProdServ=""10101902"" NoIdentificacion=""124"" Cantidad=""1.00"" ClaveUnidad=""EA"" Unidad=""PZA"" Descripcion=""ESCOBA "" ValorUnitario=""100.00"" Importe=""100.00""><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Base=""100.00"" Impuesto=""002"" TipoFactor=""Tasa"" TasaOCuota=""0.160000"" Importe=""16.00"" /></cfdi:Traslados></cfdi:Impuestos></cfdi:Concepto></cfdi:Conceptos><cfdi:Impuestos TotalImpuestosTrasladados=""16.00""><cfdi:Traslados><cfdi:Traslado Impuesto=""002"" TipoFactor=""Tasa"" TasaOCuota=""0.160000"" Importe=""16.00"" /></cfdi:Traslados></cfdi:Impuestos></cfdi:Comprobante>"
|
||||
|
||||
|
||||
|
||||
#Region "P O L I Z A - V I R T U A L"
|
||||
Protected Sub GeneraPolizaVentaWS(ByVal context As HttpContext, ObjFactura As Modelos.Factura)
|
||||
Dim obj As New MPolizaVentaWS
|
||||
'DATOS DEL CLIENTE
|
||||
@@ -320,6 +423,7 @@ Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
|
||||
|
||||
context.Response.Write(Retorno)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
Reference in New Issue
Block a user