Idioma: Español
Español
Desarrollador
softBusiness cuenta con la capacidad de ofrecerle Servicios Web para poder integrarlo con su propio desarrollo ó con el software que ya maneje su empresa. Existen las siguientes modalidades:
Usuario de Pruebas
Es importante notar que el RFC para realizar las pruebas, es únicamente:

GOYA780416GM0

El nombre y demás datos son indiferentes.
API (PDF + XML + QR)
Si usted necesita uno ó varios elementos de la factura electónica, puede hacer la petición a nuestro Web Service y recibir su factura certificada, esto con las siguientes especificaciones:
- certificarXML() PHP Script de Web Service para certificar archivos válidos XML v3.2 de acuerdo con el SAT, regresa XML Certificado, PDF Genérico (posibilidad de contratar personalizado) y Código de Barras QR:
//PHP Script
//$invoicing_test = false; //Modo Producción
$invoicing_test = true; //Modo Pruebas

$namespace = 'demo0002';
$user = 'demo';
$pass = 'demo1';

//certificarXML

$xml_file = file_get_contents('archivo_para_certificar.xml');

$params_cfdi = array(
	'CFDIcliente' => $xml_file,
	'Namespace' => $namespace,
	'Usuario' => $user,
	'password' => $pass,
	'invoicing_test' => $invoicing_test
);

//Iniciamos el Web Service
$client = new SoapClient(null, array(
      'location' => "http://api.softbus.net/ws_soap/ws_server.php",
      'uri'      => "urn://api.softbus.net"));

//certificarXML
$result = $client->
    __soapCall("certificarXML", $params_cfdi);

//Procesamos el Array devuelto por el método:

//Decodificar y Guardar Codigo de Barras QR
$data = base64_decode($result['qrcode']);
file_put_contents('/ruta/qr_resultado_client1.png', $data);

//Decodificar y Guardar Archivo PDF
$data = base64_decode($result['pdf']);
file_put_contents('/ruta/pdf_resultado_client1.pdf', $data);

//Decodificar y Guardar Archivo XML
$data = $result['xml'];
file_put_contents('/ruta/xml_resultado_client1.xml', $data);

//Manejar si existen Errores
$result['errors'];

- certificarSTRING() PHP Script de Web Service para certificar un String (el Web Service genera el XML válido v3.2), regresa XML Certificado, PDF Genérico (posibilidad de contratar personalizado), Código de Barras QR y UUID:
//PHP Script
//$invoicing_test = false; //Modo Producción
$invoicing_test = true; //Modo Pruebas
 
$namespace = 'demo0002';
$user = 'demo';
$pass = 'demo1';
$cer_id = 9; //ID de Certificado CSD demo. Al momento de darse de alta como usuario, podra agregar sus Certificados CSD con el método 'agregarCSD'.
 
//certificarSTRING
 
$xml_string = "%|AB|44731|ingreso|Regimen de Personas Morales|2013-12-12T10:22:40|Pago en una solo exhibicion|No Identificado|No Identificado|Calle de Ejemplo 130-104, Colonia de Ejemplo CP 14200. Tlalpan, Distrito Fedral, México|MXN|0.00|1000.00|160.00|16|100/10|106.56|100|1053.44%|Empresa Emisor de Prueba|GOYA780416GM0|Calle de Ejemplo|130|104|Colonia de Ejemplo|Tlalpan|Tlalpan|Distrito Federal|Mexico|14200%|Empresa Receptor de Prueba|RFC920717O17|Calle de Ejemplo|130|104|Colonia de Ejemplo|Tlalpan|Tlalpan|Distrito Federal|Mexico|14200%|1|Servicio|99999999|Pagina Web Completa con Hosting y Dominio| |10000.00|10000.00%|10|Cajas|11111111|Tarjetas de Presentación de 1000 Unidades| |500.00|5000.00%%?|Orden=Or21023|Crédito=30 Días|No. Contrato=NSD2013-100-70880-5694|No. Proveedor=00897625|Notas=Todas mi notas de la informacion necesaria para poder facturar para el IMSS";

$params_string = array(
    'String' => $xml_string,
    'Namespace' => $namespace,
    'Usuario' => $user,
    'password' => $pass,
	'Certificate_ID' => $cer_id,
    'invoicing_test' => $invoicing_test
);

//Iniciamos el Web Service
$client = new SoapClient(null, array(
      'location' => "http://api.softbus.net/ws_soap/ws_server.php",
      'uri'      => "urn://api.softbus.net"));

//certificarSTRING
$result = $client->
    __soapCall("certificarSTRING", $params_string);

//Procesamos el Array devuelto por el método:
//print_r($result); exit(); //Debugging
 
//Decodificar y Guardar Codigo de Barras QR
$data = base64_decode($result['qrcode']);
file_put_contents('/ruta/qr_resultado_client1.png', $data);
 
//Decodificar y Guardar Archivo PDF
$data = base64_decode($result['pdf']);
file_put_contents('/ruta/pdf_resultado_client1.pdf', $data);
 
//Guardar Archivo XML
$data = $result['xml'];
file_put_contents('/ruta/xml_resultado_client1.xml', $data);

//UUID
$uuid = $result['uuid']; //UUID
 
//Manejar si existen Errores
$result['errors'];

* Especificaciones de la estructura del String para certificar:

%General                                       |  Tipo  | LongMín | LongMáx | Requerido |
|FacturaSerie                                  | string |    1    |    20   |     *     |
|NoFactura	 								   |  int   |    1    |    20   |     *     |
|TipoComprobante (ingreso, egreso, traslado)   | string |    6    |     8   |     *     |
|RegimenFiscal								   | string |    1    |    50   |     *     |
|Fecha (2012-03-01T15:30:23)                   | string |   19    |    19   |     *     |
|CondicionesPago							   | string |    1    |    30   |     *     |
|MetodoPago									   | string |    1    |    30   |     *     |
|CuentaPago  								   | string |    4    |    30   |     *     |
|LugarExpedicion							   | string |    1    |    50   |     *     |
|Moneda										   | string |    3    |    10   |     *     |
|Descuento									   | float  |    1    |    20   |     *     |
|Subtotal									   | float  |    1    |    20   |     *     |
|IVA										   | float  |    1    |    20   |     *     |
|%IVA										   |  int   |    1    |     2   |     *     |
|IEPS										   | float  |    1    |    20   |     *     |
|%IEPS										   |  int   |    1    |     2   |     *     |
|RetIVA										   | float  |    1    |    20   |     *     |
|RetISR										   | float  |    1    |    20   |     *     |
|Total										   | float  |    1    |    20   |     *     |
%Emisor
|nombre										   | string |    1    |    50   |     *     |
|rfc										   | string |   12    |    13   |     *     |
|calle										   | string |    1    |    50   |     *     |
|noExterior									   | string |    1    |    15   |     *     |
|noInterior									   | string |    1    |    15   |     *     |
|colonia									   | string |    1    |    20   |     *     |
|localidad									   | string |    1    |    20   |     *     |
|municipio									   | string |    1    |    20   |     *     |
|estado										   | string |    1    |    20   |     *     |
|pais										   | string |    1    |    20   |     *     |
|codigoPostal								   |  int   |    5    |     5   |     *     |
%Receptor
|nombre										   | string |    1    |    50   |     *     |
|rfc										   | string |   12    |    13   |     *     |
|calle										   | string |    1    |    50   |     *     |
|noExterior									   | string |    1    |    15   |     *     |
|noInterior									   | string |    1    |    15   |     *     |
|colonia									   | string |    1    |    20   |     *     |
|localidad									   | string |    1    |    20   |     *     |
|municipio									   | string |    1    |    20   |     *     |
|estado										   | string |    1    |    20   |     *     |
|pais										   | string |    1    |    20   |     *     |
|codigoPostal								   |  int   |    5    |     5   |     *     |
%Conceptos
|cantidad									   | float  |    1    |    20   |     *     |
|unidad										   | string |    1    |    20   |     *     |
|noIdentificacion							   | string |    1    |    20   |     *     |
|descripcion								   | string |    1    |   100   |     *     |
|lote y caducidad							   | string |    1    |    20   |     *     |
|valorUnitario								   | float  |    1    |    20   |     *     |
|importe									   | float  |    1    |    20   |     *     |
%
%?Adicionales
|nombreCampo=>valor							  | string |    1    |    20   |     *     |
|nombreCampo=>valor							  | string |    1    |    20   |     *     |
%
* Dos ejemplos de stirngs:
%|AB|44672|ingreso|Regimen de Personas Morales|2013-11-25T10:21:28|Pago en una solo exhibicion|No Identificado|No Identificado|Calle de Ejemplo 130-104, Colonia de Ejemplo CP 14200. Tlalpan, Distrito Fedral, México|MXN|0.00|1000.00|160.00|16|100/10|106.56|100|1053.44%|Empresa Emisor de Prueba|GOYA780416GM0|Calle de Ejemplo|130|104|Colonia de Ejemplo|Tlalpan|Tlalpan|Distrito Federal|Mexico|14200%|Empresa Receptor de Prueba|RFC920717O17|Calle de Ejemplo|130|104|Colonia de Ejemplo|Tlalpan|Tlalpan|Distrito Federal|Mexico|14200%|1|Servicio|99999999|Pagina Web Completa con Hosting y Dominio| |10000.00|10000.00%|10|Cajas|11111111|Tarjetas de Presentación de 1000 Unidades| |500.00|5000.00%%?|Orden=Or21023|Crédito=30 Días|No. Contrato=NSD2013-100-70880-5694|No. Proveedor=00897625|Notas=Todas mi notas de la informacion necesaria para poder facturar para el IMSS

%|AB|44673|ingreso|Regimen de Personas Morales|2013-11-25T10:21:29|Pago en una solo exhibicion|No Identificado|No Identificado|Calle de Ejemplo 130-104, Colonia de Ejemplo CP 14200. Tlalpan, Distrito Fedral, México|MXN|0.00|1000.00|160.00|16|100/10|106.56|100|1053.44%|Empresa Emisor de Prueba|GOYA780416GM0|Calle de Ejemplo|130|104|Colonia de Ejemplo|Tlalpan|Tlalpan|Distrito Federal|Mexico|14200%|Empresa Receptor de Prueba|RFC920717O17|Calle de Ejemplo|130|104|Colonia de Ejemplo|Tlalpan|Tlalpan|Distrito Federal|Mexico|14200%|1|Servicio|99999999|Pagina Web Completa con Hosting y Dominio| |10000.00|10000.00%|10|Cajas|11111111|Tarjetas de Presentación de 1000 Unidades| |500.00|5000.00%%?|Orden=Or21023|Crédito=30 Días|No. Contrato=NSD2013-100-70880-5694|No. Proveedor=00897625|Notas=Todas mi notas de la informacion necesaria para poder facturar para el IMSS
- cancelarCFDI() PHP Script de Web Service para cancelar CFDI, regresa UUID procesado y Estado del UUID:
//PHP Script
//Usuario
$namespace = 'demo0002';
$user = 'demo';
$user_pass = 'demo1';

//Certificado CSD
$rfcFrom = 'GOYA780416GM0';
$cer_ID = 9; //Certificado que se utilizó para certificar
$uuid = 'A2ADCCAB-6590-4A4F-9BF8-94DA70D1DFFQ';

$params_string = array(
	'rfcFrom' => $rfcFrom, 
	'cer_ID' => $cer_ID, 
	'UUID' => $uuid,
    'Namespace' => $namespace,
    'SYS_user' => $user,
    'pass' => $user_pass,
);

//Iniciamos el Web Service
$client = new SoapClient(null, array(
      'location' => "http://api.softbus.net/ws_soap/ws_server.php",
      'uri'      => "urn://api.softbus.net"));

//certificarSTRING
$result = $client->
    __soapCall("cancelarXML", $params_string);

//Procesamos el Array devuelto por el método:
//print_r($result); exit();
 
//UUID
$uuid = $result['uuid'];

//Estado del UUID
$status = $result['status']; //1 - Cancelado, 0 - No se pudo cancelar
 
//Manejar si existen Errores
$errors = $result['errors'];
- obtenerCFDI() PHP Script de Web Service para obtener CFDI certificados por softBusiness, regresa XML Certificado, PDF Genérico (posibilidad de contratar personalizado) y Código de Barras QR:
//PHP Script
$rfcFrom = 'GOYA780416GM0';
$rfcTo = 'RFC920717O17';
$uuid = 'A2ADCCAB-6590-4A4F-9BF8-94DA70D1DFFF';

//Parámetros para Método
$params_string = array(
    'rfcEmisor' => $rfcFrom,
    'rfcReceptor' => $rfcTo,
    'timbreFiscal' => $uuid
);

//Iniciamos el Web Service
$client = new SoapClient(null, array(
      'location' => "http://api.softbus.net/ws_soap/ws_server.php",
      'uri'      => "urn://api.softbus.net"));

//certificarSTRING
$result = $client->
    __soapCall("obtenerCFDI", $params_string);

//Procesamos el Array devuelto por el método:
 
//Decodificar y Guardar Codigo de Barras QR
$data = base64_decode($result['qrcode']);
file_put_contents('/ruta/qr_resultado_client1.png', $data);
 
//Decodificar y Guardar Archivo PDF
$data = base64_decode($result['pdf']);
file_put_contents('/ruta/pdf_resultado_client1.pdf', $data);
 
//Guardar Archivo XML
$data = $result['xml'];
file_put_contents('/ruta/xml_resultado_client1.xml', $data);
 
//Manejar si existen Errores
$result['errors'];

- agregarCSD() PHP Script de Web Service para agregar sus Certificados CSD y poder generar CFDI a través del método 'certificarSTRING()'. Regresa el ID de certificado para poder utilizar con el método 'certificarSTRING'.
//PHP Script
//Usuario
$namespace = 'demo0002';
$user = 'demo';
$user_pass = 'demo1';

//Certificado CSD
$rfc = 'GOYA780416GM0';
$cer_binary = fread(fopen('/ruta/nombre_de_archivo.cer', "r"), filesize('/ruta/nombre_de_archivo.cer'));
$cer = base64_encode($cer_binary);
$key_binary = fread(fopen('/ruta/nombre_de_archivo.key', "r"), filesize('/ruta/nombre_de_archivo.key'));
$key = base64_encode($key_binary);
$key_pass = '12345678a';

$params_string = array(
	'Namespace' => $namespace, 
	'Usuario' => $user, 
	'Usuario_pass' => $user_pass,
    'rfc' => $rfc,
    'cer' => $cer,
    'key' => $key,
	'key_pass' => $key_pass
);

//Iniciamos el Web Service
$client = new SoapClient(null, array(
      'location' => "http://api.softbus.net/ws_soap/ws_server.php",
      'uri'      => "urn://api.softbus.net"));

//certificarSTRING
$result = $client->
    __soapCall("agregarCSD", $params_string);

//Procesamos el Array devuelto por el método:
//print_r($result); exit(); //Debugging
 
//No de Certificado para usar con softBusiness
$no_certificado = $result['no_certificado'];
 
//Manejar si existen Errores
$result['errors'];

- certificarNOMINA() PHP Script de Web Service para certificar un String de Nómina (el Web Service genera el XML válido v3.2), regresa XML Certificado, PDF Genérico (posibilidad de contratar personalizado), Código de Barras QR y UUID:
//PHP Script
//$invoicing_test = false; //Modo Producción
$invoicing_test = true; //Modo Pruebas
 
$namespace = 'demo0002';
$user = 'demo';
$pass = 'demo1';
$cer_id = 9; //ID de Certificado CSD demo. Al momento de darse de alta como usuario, podra agregar sus Certificados CSD con el método 'agregarCSD'.
 
//certificarSTRING
 
$xml_string_info = "|2|Eduardo Perez|eduardo@hotmail.com|E0005|PEGE850101HDFCFR05|1|1234567890|Ventas|2010-11-04|251|Representante|Mensual|Diurna|Semanal|10500.00|2|";
$xml_string_main = "|1|NOM|2|1|2014-06-30|2014-06-16|2014-06-30|15.00|378.65|002180047512545210|Zaragoza, Puebla.|";
$xml_string_detail = "|1|p|001|P001|Sueldo|6053.75|0|%|1|d|001|D001|IMSS|528.25|0|";

$params_string = array(
    'StringInfo' => $xml_string_info,
    'StringMain' => $xml_string_main,
    'StringDetail' => $xml_string_detail,
    'Namespace' => $namespace,
    'Usuario' => $user,
    'password' => $pass,
	'Certificate_ID' => $cer_id,
    'invoicing_test' => $invoicing_test
);

//Iniciamos el Web Service
$client = new SoapClient(null, array(
      'location' => "http://api.softbus.net/ws_soap/ws_server.php",
      'uri'      => "urn://api.softbus.net"));

//certificarSTRING
$result = $client->
    __soapCall("certificarNOMINA", $params_string);

//Procesamos el Array devuelto por el método:
//print_r($result); exit(); //Debugging
 
//Decodificar y Guardar Codigo de Barras QR
$data = base64_decode($result['qrcode']);
file_put_contents('/ruta/qr_resultado_client1.png', $data);
 
//Decodificar y Guardar Archivo PDF
$data = base64_decode($result['pdf']);
file_put_contents('/ruta/pdf_resultado_client1.pdf', $data);
 
//Guardar Archivo XML
$data = $result['xml'];
file_put_contents('/ruta/xml_resultado_client1.xml', $data);

//UUID
$uuid = $result['uuid']; //UUID
 
//Manejar si existen Errores
$result['errors'];

* Especificaciones de la estructura del String para certificar:

Información General                            |  Tipo  | LongMín | LongMáx | Requerido |
|idPersonal									   |  int   |     1   |    20   |     *     |
|Nombre										   | string |     1   |    50   |     *     |
|Email 	(empleado@empresa.com)				   | string |     1   |    50   |     *     |
|NoEmpleado									   | string |     1   |    10   |     *     |
|CURP										   | string |    18   |    18   |     *     |
|idRegimen									   |  int   |     1   |     2   |     *     |
|NoSeguridadSocial							   |  int   |     1   |    15   |     *     |
|Departamento								   | string |     1   |    20   |     *     |
|Fecha Inicio Laboral (2012-03-01)			   | string |    10   |    10   |     *     |
|Antigüedad (Semanas)						   |  int   |     1   |    10   |     *     |
|Puesto										   | string |     1   |    20   |     *     |
|Contrato									   | string |     1   |    20   |     *     |
|Jornada									   | string |     1   |    20   |     *     |
|PeriodoDePago								   | string |     1   |    20   |     *     |
|SalarioBase								   | float  |     1   |    20   |     *     |
|idRiesgo									   |  int   |     1   |    2    |     *     |
|

Main
|idRecibo									   |  int   |     1   |    10   |     *     |
|NominaSerie								   | string |     1   |    20   |     *     |
|idPersonal									   |  int   |     1   |    20   |     *     |
|idDescripcion								   |  int   |     1   |     1   |     *     |
|fechaPago	(2012-03-01)					   | string |    10   |    10   |     *     |
|fechaDesde	(2012-03-01)					   | string |    10   |    10   |     *     |
|fechaHasta	(2012-03-01)					   | string |    10   |    10   |     *     |
|diasPagados								   |  int   |     1   |    10   |     *     |
|salarioDiarioIntegrado	(si no aplica '0')	   | float  |     1   |    10   |     *     |
|CLABEdePago (si es en efectivo '0')		   | string |     1   |    18   |     *     |
|lugarDeTrabajo								   | string |     1   |    50   |     *     |
|

Detail
|idRecibo									   |  int   |     1   |    10   |     *     |
|idDetalleTipo								   | string |     1   |     1   |     *     |
|idDetalleTipoConcepto						   | string |     1   |     7   |     *     |
|codigoLocal								   | string |     3   |    10   |     *     |
|descripcionLocal							   | string |     1   |    30   |     *     |
|cantidadGravable							   | float  |     1   |    10   |     *     |
|cantidadExenta								   | float  |     1   |    10   |     *     |
|
 
* Dos ejemplos de stirngs:
$xml_string_info = "|2|Eduardo Perez|eduardo@hotmail.com|E0005|PEGE850101HDFCFR05|1|1234567890|Ventas|2010-11-04|251|Representante|Mensual|Diurna|Semanal|10500.00|2|";
$xml_string_main = "|1|NOM|2|1|2014-06-30|2014-06-16|2014-06-30|15.00|378.65|002180047512545210|Zaragoza, Puebla.|";
$xml_string_detail = "|1|p|001|P001|Sueldo|6053.75|0|%|1|d|001|D001|IMSS|528.25|0|";

$xml_string_info = "|2|Eduardo Perez|eduardo@hotmail.com|E0005|PEGE850101HDFCFR05|1|1234567890|Ventas|2010-11-04|251|Representante|Mensual|Diurna|Semanal|10500.00|NA|";
$xml_string_main = "|1|NOM|2|1|2014-06-30|2014-06-16|2014-06-30|15.00|0|0|Zaragoza, Puebla.|";
$xml_string_detail = "|1|p|001|P001|Sueldo|6053.75|0|%|1|d|001|D001|IMSS|528.25|0|";

FTP (PDF + XML + QR)
Si usted necesita uno ó varios elementos de la factura electónica, puede programar la carga de uno ó varios archivos TXT a través de FTP y esperar su certificación dentro de su sistema en softBusiness ó en algún directorio dentro de su sitio web, esto con las siguientes especificaciones: