Consumir WebServices
En esta sección se muestran ejemplos en algunos lenguajes de programación para consumir webservices.
PHP
<?php $fname = "/home/Downloads/20110128_171752.xml"; $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("http://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; if($ret->status == 200) { print_r($ret->resultados); } ?>
Python
import sys from suds.client import Client url = 'http://testing.solucionfactible.com/ws/services/Timbrado?wsdl' client = Client(url) result = client.service.timbrar("user","pass","cfdi","false") print (result)
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 = $base64.encode_base64($buf); } $proxy = "http://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");