Inicio  |  Autofactura  |  Ejemplos Consumir WebServices
La LCO fue actualizada por última vez el 21/nov/2024

Consumir Webservices

En esta sección se muestran ejemplos en algunos lenguajes de programación para consumir Webservices.

Nota: los ejemplos de esta sección están basados en el WSDL de Timbrado cada WSDL tiene su propia estructura y deberá modificarse el código de la petición acorde al Webservices que se esté conectando.

VisualStudio2010
VisualStudio2010 C# .NET y VB .NET
PHP
<?php

$fname = "/tmp/cfdi_a_timbrar.xml";
if(!file_exists($fname)){
 die(PHP_EOL . "File not found" . PHP_EOL . PHP_EOL);
}

$handle = fopen($fname, "r");
$sData = '';
$usuario = "testing@solucionfactible.com";
$password = "timbrado.SF.16672";

while(!feof($handle))
    $sData .= fread($handle, filesize($fname));
fclose($handle);
$b64 = base64_encode($sData);

$response = '';
/*
Porfavor note: 
    Este ejemplo está basado en el WSDL De timbrado
    cada WSDL tiene su propia estructura y deberá modificarse la petición 
    acorde al webservice que se esté conectando.*/
try {
        $client = new SoapClient("https://testing.solucionfactible.com/ws/services/Timbrado?wsdl");
        $params = array('usuario' => $usuario, 'password' => $password, 'cfdiBase64'=>$b64, 'zip'=>False);
        $response = $client->__soapCall('timbrarBase64', array('parameters' => $params));
} catch (SoapFault $fault) { 
        echo "SOAPFault: ".$fault->faultcode."-".$fault->faultstring."\n";
}

$ret = $response->return;

print_r("Estatus request: " . $ret->status . PHP_EOL);
print_r("Mensjae request: " . $ret->mensaje . PHP_EOL);

if($ret->status == 200) {
        print_r("Contenido resultados: " . PHP_EOL);
        print_r($ret->resultados);
}
?>
    

Python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from zeep import Client

xmlFile = open("/tmp/cfdi-testing.xml", "rb")
xmlBytes = xmlFile.read()
xmlFile.close()
isZipFile = 0

client = Client('https://testing.solucionfactible.com/ws/services/Timbrado?wsdl')
result = client.service.timbrar('testing@solucionfactible.com', 'timbrado.SF.16672', xmlBytes, isZipFile)
if result.status == 200:#si la autenticación fue correcta y el servicio está disponible para el usuario
   resultadoTimbrado = result.resultados[0]
   print(resultadoTimbrado.status)
   print(resultadoTimbrado.mensaje)
   if resultadoTimbrado.status==200:#si el timbrado del comprobante fue exitoso
       print(resultadoTimbrado.uuid)
       print(resultadoTimbrado.cfdiTimbrado)
else:#ocurrió un error con la autenticación o la disponibilidad del servicio para el usuario
   print(result.mensaje)
    

Perl
use SOAP::Lite;
use MIME::Base64;
use POSIX qw(tzset);

my $TZ = 'America/Mexico_city';

$user = 'testing@solucionfactible.com';
$password = 'timbrado.SF.16672';

$file = 'ruta_al_cfdi.xml';

$base64 = "";
open(FILE, $file) or die "$!";
    while (read(FILE, $buf, 60*57)) {
    $base64 .= encode_base64($buf);
}

$proxy = "https://testing.solucionfactible.com/ws/services/Timbrado";

$response = SOAP::Lite->uri('http://timbrado.ws.cfdi.solucionfactible.com')->proxy($proxy)->timbrar($user, $password, $base64, false);
$status = $response->result->{'status'};
$mensaje = $response->result->{'mensaje'};

print "Status: $status\n";
print "Mensaje: $mensaje\n\n";
print "Detalle por comprobante\n";
for my $t ($response->valueof('//resultados')) {
        print "Status $t->{'status'}\nMensaje $t->{'mensaje'}\n";
        if(defined($t->{'uuid'})) {
                $ENV{TZ} = 'GMT';
                tzset;
                $fTimbrado = $t->{'fechaTimbrado'};
                print("UUID: $t->{'uuid'}\n");
                print("CFDI: ".decode_base64($t->{'cfdiTimbrado'})."\n");
                print("Fecha Timbrado: $fTimbrado\n");
                print("Cadena original: $t->{'cadenaOriginal'}\n");
                print("Certificado: $t->{'certificadoSAT'}\n");
                print("Sello: $t->{'selloSAT'}\n");
                print("QRCode: $t->{'qrCode'}\n");
        }
        print "\n\n";
}
print("\n\n");
    
Datos de contacto
comments powered by Disqus