Manual ConsumoWebService
Manual ConsumoWebService
Manual de Conexión
Revisiones
I. Control del documento
Versión Notas
Contenido
Anexos .................................................................................................................. 26
Contacto ................................................................................................................ 30
Web Service
Los Web Services permiten a las organizaciones intercambiar datos sin necesidad
de conocer los detalles de sus respectivos Sistemas de Información. A diferencia de
los modelos Cliente/Servidor, tales como un servidor de páginas Web, los Web
Services no proveen al usuario una interfaz gráfica (GUI). En vez de ello, los Web
Services comparten la lógica del negocio, los datos y los procesos, por medio de
una interfaz de programas a través de la red.
Los Web Services están construidos con varias tecnologías que trabajan
conjuntamente con los estándares que están emergiendo para asegurar la
seguridad y operatividad, de modo de hacer realidad que el uso combinado de
varios Web Services esté garantizado.
String Password.
String Password.
String Password.
String Password.
String Password.
String Password.
String Password.
String Password.
Notas:
Los métodos “cancelaCFDi, cancelaCFDiTest, getCFDi, getCFDiTest,
getTimbreCFDi, getTimbreCFDiTest” reciben un archivo XML empacado en
ZIP y codificado en base64.
Las respuestas satisfactorias retornan el TFD, el comprobante junto con el
TFD o el acuse de cancelación en formato XML empacado en ZIP y
codificado en base64.
Las respuestas erróneas retornan una descripción del error generado, en
formato XML empacado en ZIP y codificado en base64.
Para consumir un Web Service desde el lenguaje .NET (C# o VB) se debe agregar
una referencia web, a continuación, se muestra el procedimiento para agregar una
referencia web en el entorno de desarrollo Visual Studio.
Una vez que se muestren los diferentes métodos del Web Service, se podrá cambiar
el nombre “ServiceReference1” que se encuentra por defecto para una mejor
identificación, al concluir presionar el botón ‘Aceptar’.
Ejemplo: "Certificación".
NOTA: revisar el explorador de soluciones como se muestra en la Figura 5.
Ejemplo en C#
using Nombre del Formulario o clase seguido de un punto y el
nombre de la referencia o solo el nombre de la referencia cuando
se trate de Sitios Web.
Sitio Web
Ejemplo en VB
Imports Nombre del Formulario o clase seguido de un punto y el
nombre de la referencia o solo el nombre de la referencia cuando
se trate de Sitios Web.
Sitio Web
Imports Certificacion
Una vez que se tiene la importación del espacio de nombres en el que está la clase
del servicio Web, se podrá usar la clase como cualquier otra de .NET, por ejemplo,
para crear un objeto de la clase motorCFDI, se debe realizar lo siguiente.
Ejemplo en C#
motorCFDI oMotor = new motorCFDI();
Ejemplo en VB
Dim oMotor As New MotorCFDI.motorCFDI
Con la creación del objeto se podrá acceder a los métodos del Web Service, en el
siguiente ejemplo se muestra como consumir el método de getCFDiTest.
Para consumir un Web Service desde el lenguaje Visual Basic 6 se debe agregar
una referencia llamada ‘Microsoft Soap Type Library’ o ‘Microsoft Soap Type Library
v3.0’, a continuación se muestran los pasos a seguir.
Crear una etiqueta Error en donde se podrán obtener las excepciones o errores que
puedan generarse al consumir los métodos del servicio.
Del objeto creado, invocar el método MSSoapInit que recibe como parámetro un
String con la ruta del Web Service.
oCliente.MSSoapInit("33/motorCFDI.asmx?WSDL")
De esta forma el objeto oCliente reconoce los métodos que se pueden utilizar del
servicio y así poder invocar como cualquier otro método que tuviese el objeto de la
clase SoapClient.
'Declaración de variables
Dim sRutaCfdiZip As String 'Ruta del CFDI en Zip
Dim sRutaRespuesta As String 'Ruta de la respuesta del servicio
Dim ayXML() As Byte
Dim NumArchivo As Integer
Dim ayRes() As Byte
Dim fLen As Long
'Lectura del archivo a enviar
'Abrir el archivo en modo binario de solo lectura (Binary Lock Read)
Open sRutaCfdiZip For Binary Lock Read As 1
'Redimensionar el array al tamaño del archivo
fLen = FileLen(sRutaCfdiZip)
ReDim ayXML(fLen) As Byte
'Leer el archivo entero y almacenarlo en el array
Get #1, , ayXML
Close
'Consumo de Servicio Web
Dim oCliente As New SoapClient30
On Error GoTo Error
Dim sUrlWS As String
sUrlWS =""
oCliente.MSSoapInit(sUrlWS)
ayRes = oCliente.getCFDiTest("Usuario", "Contraseña", ayXML)
'Escribir la respuesta del servicio
'Crear un archivo para guardar los datos recibidos (Binary Access
Write)
Open sRutaRespuesta For Binary Access Write As 1
'Escribir los bytes del array de la respuesta, en el nuevo archivo
Put #1, , ayRes
Close
URL: https://www.certificacfdi.mx/appcertificacfdi33/motorCFDI.asmx?WSDL
La instrucción from suds.client import Cliente importa el módulo para ver los
mensajes SOAP de entrada y salida así como las cabeceras HTTP.
Instancia al servicio web a través de la clase Client, recibe como parámetro la URL
del servicio.
wsURL = ""
oCliente = Client(wsURL)
Ejemplo
Para consumir un Web Service desde el lenguaje Java se debe agregar una
referencia llamada ‘Web Service Client…’, a continuación, se muestra el
procedimiento para agregar una referencia en el entorno de desarrollo NetBeans
IDE 8.2 english version.
Se abrirá una ventana ‘New File’, seleccionar de la lista ‘Categories’ la opción ‘Web
Services’, se actualizará la lista ‘File Types’ en donde se deberá seleccionar la
opción ‘Web Service Client’ y presionar el botón ‘Next >’, como se muestra en la
Figura 9.
Se abrirá una ventana ‘New Web Service Client’, seleccionar la opción ‘WSDL URL’,
escribir la ruta donde se encuentra el Web Service, como se muestra en la Figura
10.
Una vez escrita la ruta del Web Service, en el campo ‘Package’ escribir un nombre
para identificar el paquete que se generará al finalizar, por ejemplo ‘Cliente.Servicio’
y presionar el botón ‘Finish’, como se muestra en la Figura 11.
CERTIFICACIÓN CFDI SAPI DE CV Página 20 | 30
MANUAL DE CONEXIÓN A WEBSERVICE
Ver 1.4 - octubre, 2017.
import Cliente.Servicio.MotorCFDI;
import Cliente.Servicio.MotorCFDISoap;
De esta forma el objeto oMotor reconoce los métodos que se pueden utilizar del
servicio, en el siguiente ejemplo muestra como consumir el método de getCFDiTest.
//Importaciones necesarias
import Cliente.Servicio.MotorCFDI;
import Cliente.Servicio.MotorCFDISoap;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
//Importaciones opcionales
import javax.swing.JOptionPane;
//Credenciales
String sUsuario="Usuario";
String sPassword="Contraseña";
//Guardar respuesta
File oRes = new File(sRutaRespuesta);
try(FileOutputStream fosFichero = new FileOutputStream(oRes))
{
fosFichero.write(aRespuesta);
}
//Fin de Guardar respuesta
JOptionPane.showMessageDialog(null, "Envío con éxito");
}
catch(IOException ex)
{
JOptionPane.showMessageDialog(null, ex.getMessage());
}
Para poder consumir un Web Service desde el lenguaje PHP, se requiere de la clase
SoapClient, esta clase recibe como parámetro un String con la ruta del Web Service.
$sUrlWS='https://www.certificacfdi.mx/appcertificacfdi33/motorCFDI.
asmx?WSDL ’;
$oCliente = new SoapClient($sUrlWS);
Al consumir cualquier método que ofrece el Web Service, se requiere crear una
variable que contenga un array (arreglo) con los parámetros que se definan en el
método, por ejemplo:
$aParametros = array('psUsuario'=>$sUsuario,
'psPassword'=>$sPassword,
'pyXML'=>$contenido);
Nota: Los parámetros deben ser igual a los que están definidos por el método del
servicio para que no cause un conflicto al momento de consumir el método.
$aRespuesta = $oCliente->getCFDiTest($aParametros)->getCFDiTestResult;
if($oZip->open($sNomZip,ZIPARCHIVE::CREATE)===true)
//Se crean dos variables que contienen las credenciales para acceder
al servicio
$sUsuario='Usuario';
$sPassword='Password';
//Se crea una variable $aParametros que contiene un array que hace
referencia a los parámetros definidos en el método del Web Service
$aParametros = array('psUsuario'=>$sUsuario,
'psPassword'=>$sPassword,
'pyXML'=>$contenido);
//Se connsume el método getCFDiTest para recibir su respuesta
"getCFDiTestResult"
$aRespuesta=$oCliente->getCFDiTest($aParametros)->getCFDiTestResult;
//Fin del llamado al método
Anexos
Petición SOAP
En el siguiente cuadro se muestra una Petición SOAP que se realiza al Web Service de
CERTIFICACIÓN CFDI.
Respuesta SOAP
En el siguiente cuadro se muestra una Respuesta Soap que realiza al Web Service de
CERTIFICACIÓN CFDI.
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 30 Aug 2017 16:57:18 GMT
Content-Length: 4762
CFDI Correcto
Respuesta de error
Las respuestas de error contienen detalles acerca de las causas del error durante el flujo
de la petición al ser recibida por el Web Service de CERTIFICACIÓN CFDI, el mensaje de
error es devuelto en formato XML comprimido en ZIP y codificado en base64.
Contacto
Si cuenta con alguna duda, sugerencia o bien requiere soporte, a continuación, le
presentamos al personal que puede asesorarlo.
DIRECTORIO
Tel. (55) 59.32.48.22 | 59.38.33.68 | 59.38.33.71 | 59.38.49.17
Área Nombre Correo
Soporte Ing. Gustavo Acosta [email protected]
Ing. Annaís Martínez [email protected]
Soporte de Ing. Alfredo Albiter [email protected]
Conexión al Ing. Fernando Santiago [email protected]
servicio
Administración Leticia Ávila [email protected]
Si nos contacta por correo electrónico por favor enviar los datos que se mencionan en el
siguiente formulario.
Nombre:
Empresa:
Teléfono:
Correo Electrónico:
Contacto Skype:
Asunto: