Ver Mensaje Individual
  #1  
Antiguo 15-02-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Reputación: 22
JXJ Va por buen camino
SOAP POST - Webservice con Certificado y SSL

Hola

ya saben que timbrefiscal es un PAC
y que tiene su servicio de pruebas

https://demotf.buzonfiscal.com/timbrado
https://demotf.buzonfiscal.com/timbrado?wsdl

para poder acceder a el se necesita de usar
un certificado personalizado que te dan en formato .pfx
y en .pem

para la conexion segura y el manejo del certificado uso openssl
y los componentes indy. para hacer el get y el post.

una conexion
segura usando ese certificado. ya la logre pero solo obtengo
respuesta del servidor con un archivo xml

esta es la definicion del wsdl que me regresa

Código:
<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.5-hudson-$BUILD_NUMBER-. --><wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.buzonfiscal.com/TimbradoCFDI/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://www.buzonfiscal.com/ns/xsd/bf/TimbradoCFD" xmlns:xsd2="http://www.sat.gob.mx/TimbreFiscalDigital" name="TimbradoCFDI" targetNamespace="http://www.buzonfiscal.com/TimbradoCFDI/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://www.buzonfiscal.com/TimbradoCFDI/">
 <xsd:element name="Error">
    <xsd:complexType>
     <xsd:sequence minOccurs="0">
      <xsd:element name="descripcionError" type="xsd:string" maxOccurs="unbounded" />
     </xsd:sequence>
     <xsd:attribute name="codigo" use="required">
      <xsd:simpleType>
       <xsd:restriction base="xsd:string">
        <xsd:enumeration value="" />
       </xsd:restriction>
      </xsd:simpleType>
     </xsd:attribute>
    </xsd:complexType>
 </xsd:element>
    </xsd:schema>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <xsd:import namespace="http://www.buzonfiscal.com/ns/xsd/bf/TimbradoCFD" schemaLocation="TimbradoCFD.xsd">
     </xsd:import>
     <xsd:import namespace="http://www.sat.gob.mx/TimbreFiscalDigital" schemaLocation="TimbreFiscalDigital.xsd">
     </xsd:import></xsd:schema></wsdl:types>
  <wsdl:message name="timbradoCFDRequest">
    <wsdl:part element="xsd1:RequestTimbradoCFD" name="request" />
  </wsdl:message>
  <wsdl:message name="timbradoCFDResponse">
    <wsdl:part element="xsd2:TimbreFiscalDigital" name="response" />
  </wsdl:message>
  <wsdl:message name="timbradoCFD_faultMsg">
   <wsdl:part name="fault" element="tns:Error" />
  </wsdl:message>
  <wsdl:portType name="TimbradoCFDI">
    <wsdl:operation name="timbradoCFD">
      <wsdl:input message="tns:timbradoCFDRequest" />
      <wsdl:output message="tns:timbradoCFDResponse" />
            <wsdl:fault name="fault" message="tns:timbradoCFD_faultMsg" />
        </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="TimbradoCFDISOAP" type="tns:TimbradoCFDI">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="timbradoCFD">
      <soap:operation soapAction="http://www.buzonfiscal.com/TimbradoCFDI/timbradoCFD" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="TimbradoCFDI">
    <wsdl:port binding="tns:TimbradoCFDISOAP" name="TimbradoCFDISOAP">
      <soap:address location="https://demotf.buzonfiscal.com:443/timbrado" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

el problema es que SOAP, detras de un servidor web con conexion segura
es todo eso nuevo para mi.
segun yo con hacer un post en lugar de un get deberia de funcionar.

Código Delphi [-]
URL :string;
  XMLResponse : TStringStream;
  XMLRequest : TStringStream;
 
url:= 'https://demotf.buzonfiscal.com/timbrado?wsdl
';
 
// el XMLRequest es el archivo xml que timbre fiscal da de muestra sin timbrar
// para que se timbre con su servicio. se llama requestTimbrado.xml
 
  IdHTTP1.Post(URL,XMLRequest, XMLResponse);

el conteido del requestTimbrado.xml
es
Código:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://www.buzonfiscal.com/ns/xsd/bf/TimbradoCFD" xmlns:req="http://www.buzonfiscal.com/ns/xsd/bf/RequestTimbraCFDI" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
  <soapenv:Header/>
  <soapenv:Body>
    <tim:RequestTimbradoCFD>
      <cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:ecb="http://www.sat.gob.mx/ecb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:implocal="http://www.sat.gob.mx/implocal" xmlns:bfa2="http://www.buzonfiscal.com/ns/addenda/bf/2" xmlns:terceros="http://www.sat.gob.mx/terceros" xmlns:detallista="http://www.sat.gob.mx/detallista" xmlns:psgecfd="http://www.sat.gob.mx/psgecfd" xmlns:ecc="http://www.sat.gob.mx/ecc" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" tipoDeComprobante="ingreso" total="4.64" subTotal="4.00" certificado="MIIE/jCCA+agAwIBAgIUMzAwMDEwMDAwMDAxMDAwMDA4MDkwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMDA3MzAxNjU4NDhaFw0xMjA3MjkxNjU4NDhaMIGXMRIwEAYDVQQDDAlNYXRyaXogU0ExEjAQBgNVBCkMCU1hdHJpeiBTQTESMBAGA1UECgwJTWF0cml6IFNBMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBBQUFBMDEwMTAxQUFBMR4wHAYDVQQFExUgLyBBQUFBMDEwMTAxSERGUlhYMDExEjAQBgNVBAsMCVVuaWRhZCAxMDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsKL9mh8flpnQXVmtOvDnSYgtfRMTPe/4JQMivUYEr6sEAUIQu8tR0xlR0OcDP9LZBfTddUwK2zjiTCQiQhAkgsn8EQsZGI9cisqrePtRXfH/GwLl7l2IHMsAdI4Xvy6GRbszobt2IRuIZLj0MGv5/NcSmQTWv1QkSXMKaSUQ3BsCAwEAAaOB6jCB5zAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDAdBgNVHQ4EFgQUTwXUS0hPz51Nk4KyPhJLgP9qMYYwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL3BraS5zYXQuZ29iLm14L3NhdC5jcmwwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zYXQuZ29iLm14LzAfBgNVHSMEGDAWgBTrWX0EIppTjZ5xGqBYlin1OeCgxTAQBgNVHSAECTAHMAUGAyoDBDATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQUFAAOCAQEAtIP05qlz0J4dITRpQ0mEz47svkoRNHqTlQOXgXGeEfpF9ZowHIjvOw6nL1srLJWHh+c/RhN03gJ1tevw9In5vxMPITlmTeUGrWNqVef5U5hDkA/bg0clEEiVAuyO+r9cYq8l8EZ9Ip6fl9YMmGD80gC/nFDdbhQ04RaelyUh9Gv6pRAOtDevhyjqNupuOoR/Zzt7qMIb5/F7xflPDV6YvO7CS/1E9KGnixIJmdH/JqHm4FdIkeal1zJlN6MBYXgIewnuxkfObS8ZS7GhX9YYCctk+FnHvHDRgx3kmtZWhh0AvEsaZMiZ3IoI1s8xLDPgmY8vJwlbe4IY+qFisczBKA==" noCertificado="30001000000100000809" formaDePago="Pago en una sola exhibición" sello="GzdNXbif5zGZ9wbbPSgHemd6vQZU+oLh7w1utC844O7CjScIPZ19DYn4pwmO7eZT1j9N/2CEkme6ep6YkjmvYNPgTKOE5seutyE2+UQ7n6BjJKtwFm8GIDPc4Xf6/7Y3QFAy6+REuIL1B51FWsUyy4zrJ7VnFkiOqkzikxdDwO0=" fecha="2011-01-08T12:16:40" folio="66" version="3.0" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv3.xsd http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet...calDigital.xsd http://www.sat.gob.mx/detallista http://www.sat.gob.mx/sitio_internet...detallista.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet...l/implocal.xsd http://www.buzonfiscal.com/ns/addenda/bf/2 http://www.buzonfiscal.com/schema/xs...da_BF_v2.2.xsd ">
        <cfdi:Emisor nombre="Empresa Demo" rfc="AAA010101AAA">
          <cfdi:DomicilioFiscal codigoPostal="53400" pais="México" estado="Nuevo Leon" municipio="Monterrey" colonia="Obispado" noExterior="1640" calle="Padre Mier"/>
        </cfdi:Emisor>
        <cfdi:Receptor nombre="Cliente Demo" rfc="CLI010101DEM">
          <cfdi:Domicilio codigoPostal="64060" pais="Mexico" estado="Nuevo Leon" municipio="Monterrey" noExterior="5512" calle="Padre Mier"/>
        </cfdi:Receptor>
        <cfdi:Conceptos>
          <cfdi:Concepto importe="4.00" valorUnitario="2.00" descripcion="2" unidad="2" cantidad="2">
            <cfdi:InformacionAduanera aduana="GDL" fecha="2010-12-12-06:00" numero="132456"/>
          </cfdi:Concepto>
        </cfdi:Conceptos>
        <cfdi:Impuestos totalImpuestosTrasladados="0.64">
          <cfdi:Traslados>
            <cfdi:Traslado importe="0.64" tasa="16.00" impuesto="IVA"/>
          </cfdi:Traslados>
        </cfdi:Impuestos>
        <cfdi:Complemento> 
        </cfdi:Complemento>
      </cfdi:Comprobante>
      <req:InfoBasica RfcEmisor="AAA010101AAA" RfcReceptor="ccc010101ccc"/>
    </tim:RequestTimbradoCFD>
  </soapenv:Body>
</soapenv:Envelope>
el problema es que no se como enviar el post
por que el get si regresa algo y con post solo error interno del sistema
y cual es la forma de enviar un post a un web service
por que como esta detras de https://
la definicion usand el WSDL import wizard de delphi
no sirve.
ya he probado con esa deficion y salen que no hay partes definidas
por eso estoy unsando delphi 7 indy 9 y indy_openssl096g.zip

¿alguna idea de como se envia un post a un webservice con protoclo SOAP 1.2
con delphi e idhttp?

ya no se ni que hacer.

gracias por su atencion
Responder Con Cita