VER MANUAL
<?php
error_reporting(E_ALL ^ (E_NOTICE | E_WARNING | E_DEPRECATED));
date_default_timezone_set('America/Panama');
require_once 'sdk2/sdk2.php';
$datos['xml']='carpeta/almacenar_factura123.xml';
$datos['rFE']['gDGen']['dNroDF']='0000031776';
$datos['rFE']['gDGen']['dSeg']='907491421';
$datos['rFE']['gDGen']['dFechaEm']='AUTO';
$datos['rFE']['gDGen']['gEmis']['dTfnEm']['0']='123-4567';
$datos['rFE']['gDGen']['gEmis']['dCorElectEmi']['0']='demo@siteck.com.mx';
$datos['PAC']['usuario']='844084-1-504061';
$datos['PAC']['pass']='pruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebaprueba';
$datos['PAC']['QR']='CEA4A5457603B609E05349D1950A8972CEA4A5457604B609E05349D1950A8972CEA4A5457605B609E05349D1950A8972CEA4A5457606B609E05349D1950A8972';
$datos['conf']['cer']='certificados/certificado_kit.cer';
$datos['conf']['pass']='84665c168490988d33d4b1ded2f5edf5b4957784498';
$res = mf_genera_fepanama($datos);
echo '<h1>Respuesta Generar XML y Timbrado</h1>';
foreach ($res AS $variable => $valor) {
$valor = htmlentities($valor);
echo "<b>[$variable]=</b>$valor<hr>";
}
VER MANUAL
VER VIDEO
xml=C:\sdk2\timbrados\factura123.xml
[rFE]
[rFE.gDGen]
dNroDF=0000031776
dFechaEm=AUTO
dSeg=907491421
[rFE.gDGen.gEmis]
[rFE.gDGen.gEmis.dTfnEm]
0=123-4567
[rFE.gDGen.gEmis.dCorElectEmi]
0=demo@siteck.com.mx
[PAC]
usuario=844084-1-504061
QR=CEA4A5457603B609E05349D1950A8972CEA4A5457604B609E05349D1950A8972CEA4A5457605B609E05349D1950A8972CEA4A5457606B609E05349D1950A8972
pass=pruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebaprueba
[conf]
pass=84665c168490988d33d4b1ded2f5edf5b4957784498
cer=c:\sdk2\certificados\certificado_kit.cer
Pasos:
- Instalar el ejecutable SDK2.exe
- Crear un archivo llamado c:\alguna_carpeta\factura.ini
- Ejecutar en linea de comandos c:\sdk2\timbrar64.bat "c:\alguna_carpeta\factura.ini"
- Ver archivo de respuesta en c:\alguna_carpeta\factura
_respuesta.ini
Desde C#, VB, VFP, etc... utiliza la función para ejecutar comandos del sistema; los nombres comunes tienen nombre system, exec, shell_exec o similares los cuales variara su sintaxis según el lenguaje de programación
VER MANUAL
DESCARGAR PROYECTO C# FACTURA BASICA
using FacturacionSDK;
MFSDK sdk;
sdk = new MFSDK();
sdk.Iniciales.Add("MODOINI", "DIVISOR");
sdk.Iniciales.Add("RESPUESTA_UTF8", "SI");
sdk.Iniciales.Add("xml", @"C:\sdk2\timbrados\factura123.xml");
//#NODO [rFE]
MFObject rFE = new MFObject("rFE");
//#NODO [rFE/gDGen]
MFObject rFE_gDGen = new MFObject("gDGen");
rFE_gDGen["dNroDF"] = "0000031776";
rFE_gDGen["dFechaEm"] = "AUTO";
rFE_gDGen["dSeg"] = "907491421";
//#NODO [rFE/gDGen/gEmis]
MFObject rFE_gDGen_gEmis = new MFObject("gEmis");
//#NODO [rFE/gDGen/gEmis/dTfnEm]
MFObject rFE_gDGen_gEmis_dTfnEm = new MFObject("dTfnEm");
rFE_gDGen_gEmis_dTfnEm["0"] = "123-4567";
rFE_gDGen_gEmis.AgregaSubnodo(rFE_gDGen_gEmis_dTfnEm);
//#NODO [rFE/gDGen/gEmis/dCorElectEmi]
MFObject rFE_gDGen_gEmis_dCorElectEmi = new MFObject("dCorElectEmi");
rFE_gDGen_gEmis_dCorElectEmi["0"] = "demo@siteck.com.mx";
rFE_gDGen_gEmis.AgregaSubnodo(rFE_gDGen_gEmis_dCorElectEmi);
rFE_gDGen.AgregaSubnodo(rFE_gDGen_gEmis);
//#NODO [conf]
MFObject conf = new MFObject("conf");
conf["pass"] = "84665c168490988d33d4b1ded2f5edf5b4957784498";
conf["cer"] = @"C:\sdk2\certificados\certificado_kit.cer";
//#NODO [PAC]
MFObject PAC = new MFObject("PAC");
PAC["usuario"] = "844084-1-504061";
PAC["QR"] = "CEA4A5457603B609E05349D1950A8972CEA4A5457604B609E05349D1950A8972CEA4A5457605B609E05349D1950A8972CEA4A5457606B609E05349D1950A8972";
PAC["pass"] = "pruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebaprueba";
//#Agrega Nodos
rFE.AgregaSubnodo(rFE_gDGen);
sdk.AgregaObjeto(rFE);
sdk.AgregaObjeto(PAC);
sdk.AgregaObjeto(conf);
//#Ejecuta KIT
SDKRespuesta respuesta = sdk.Timbrar(@"C:\sdk2\timbrar32.bat", @"C:\sdk2\timbrados\", "factura", false);
//texto = texto.Replace("
", "
");
//Muestra el archivo ini
//textBox1.Text = sdk.Ini;
//Muestra la respuesta de timbrado
//textBox2.Text = respuesta.RespuestaOriginalSDK;
// Se notifica que el SDK se ejecutó
string mensaje = string.Format("Código: {0}\r\nMensaje: {1}", respuesta.Codigo_MF_Numero, respuesta.Codigo_MF_Texto);
MessageBox.Show(this, mensaje, Application.ProductName, MessageBoxButtons.OK, respuesta.Codigo_MF_Numero == "0" ? MessageBoxIcon.Information : MessageBoxIcon.Warning);
VER MANUAL
VER VIDEO APIREST JSON C#
CODIGO FUENTE C#
variable modo (formato de respuesta) : JSON(default)|INI|DIVISOR|SERIALIZE|XML
variable json :
NOTA: parametro conf/cer es el archivo en base64
{
"rFE": {
"gDGen": {
"dNroDF": "0000031776",
"dSeg": 907491421,
"dFechaEm": "AUTO",
"gEmis": {
"dTfnEm": [
"123-4567"
],
"dCorElectEmi": [
"demo@siteck.com.mx"
]
}
}
},
"PAC": {
"usuario": "844084-1-504061",
"pass": "pruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebaprueba",
"QR": "CEA4A5457603B609E05349D1950A8972CEA4A5457604B609E05349D1950A8972CEA4A5457605B609E05349D1950A8972CEA4A5457606B609E05349D1950A8972"
},
"conf": {
"cer": "QmFnIEF0dHJpYnV0ZXMKICAgIGxvY2FsS2V5SUQ6IDMyIEQ4IDIxIDEyIEM4IDg2IDc2IEYyIDA5IDFGIDBCIDA0IEU3IEMzIDhEIEVFIEJGIDZCIDE5IEY0IApLZXkgQXR0cmlidXRlczogPE5vIEF0dHJpYnV0ZXM+Ci0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KTUlJRkhEQk9CZ2txaGtpRzl3MEJCUTB3UVRBcEJna3Foa2lHOXcwQkJRd3dIQVFJWEl3MFgyUUdCWElDQWdnQQpNQXdHQ0NxR1NJYjNEUUlKQlFBd0ZBWUlLb1pJaHZjTkF3Y0VDS3JlUSswWUhSMTdCSUlFeUhnNGZMdENDV2R1CktYRDU4TDlnQW1yb2R2dytxbjR6Slp4RGtlbm5SdkZ6bnh3U0N4d1pQR05GcjJ4M0t1cXh2UGNRMStkZWU4d3gKWDY3RlplSCtBdElnRWswVnBtekU2UWVobTBiTzA5alB1VFhlaTk2ejV1UUx4VVhDVDROaU5sL05oV2luOEVJdwo4amFNOTdrV3h4bnRiMHFKUEtjb1VQVzBDMUNYZnpYUEswaTc5SzlSb0RvTzJ0N0tVK0lyWFJqTDNaVUozVXRzCnM4Z05xYmdFOURmdHRwRkd5RzZZQ3M5b0p4SzdDVkY4VG5aS2Zqc3dhTUlMdGthL3V2WVhFN1NzTDZiZlpRRzUKLzBQaXFrYmp5cG44cWc1U0twdFRQY1dBR2lyRXZhVy9lT3dHbVRQZFczcm1xR0hVSlhJbUIrN0lnSUJWaXg1bgoyK3BFTnhua0tUVW1qMXN0dkdqYjlHejZyMUwrK3BiNm51TC9jQjB4azY4WFUwYTBhUS9PVU1mS3hWWTJ4TXZLCkFHVW05SURSOC9yelJuWVhuOWNsdXZER3FyNXBqbytmeTNZNWt5TmhsaHBXRk01S0pPVHAzWUJiZjZCc0dGTGcKSHB4ZTFweGppV1lHejl6VVd3VHR6eU9pVUZDV0M2VGlqVm43SmZDSzVubnhTbCtMZWJ2SlJTSVNGdjJJamwwRgozMDZNMG9JY0ZGQ1RBc0FDbGJSVk11QU1uUU16aHQrRUswK01RcktNdlNUaGhMeXJEWEdWNks2RXBlSk41RzFGCjdMWm83TmRZUnNBNm5MSUoxaVpDNjBSRGZyZ29UYUtyaURTd3g4K01OM0MzUXBSWmZra245aDNCc1pBVkhQZHkKTkhRbDV4bVFqZFUrWi8wa0N0L1JLcDhYdUNxSDNzQVlCblBGU1QwZ0NNZGhUVEQxbGVxbzhLR1hzSjV1UXl2cApUUUMzS3h4L25KL3NZejNXQnhmYXo4OVVsbEdmRmlYOUlrbEdKdlJlRHVYRk5jNzJKRXppR293RWordXd0RzBxClNkbnJqM0tFZUp5N1hyQjFrdVZYbktUblBCbWl6YmxEcVk4NW0yZmVmN3Z6ZGpkV2hQU0pwVUtWbHBlVzRNcWgKakNlK2l4SUwxdVdBVHZSSmZicW41WlB2WkhrT2NZazhOck9DV1BmRzFDNGJ4V3E5SmJucW13ZHczSCs3UEd3UAo5MGYxU1ZyWlhhZTNISCtYaTFxb1R4bjhnRS8rYlhDakJTc3dCWnpsMFVuQmFXVHUzdS81N1VKSm9ESVhUcW9oClpReGdXWDRYM1hURUZjL0J6MHNkM1lzaHkrVGVXSkh3b0ROK2V0TWRra2twWFZvejk3K0h2L0xxbSs0UW9XK2MKWVU1ekZ6V0NZYjdoeEJpLzhROUJQOW43UWluZGVWZWlvaFpqWkVtNkdWdi9lNEhqZ3h6VUJ4aGFLL2R6L3lpKwpDTzgyUWwxWVJXZ01oa0lZM1lvb3hJY2xNTjRVSFRhY3k4aVFGSlMwYUZEc1IyOUpWQWpTU08rcSsyWFlkQklvCmhHYTB1TkpENVhwV1dxQW5LNk5qRnc1V1Z1M1BwYzFSdE9YTXVrS3dDU01ZbjBVaG9OcHREWUIrbUZZcEFBSm8KajNCeGN6ZGxEUlk4Y3A0cDU4alhvTGN1L1FSQU9zQzRQY3FFRkMwdTF6ZG5PMEE1VjdHcC9KSDNFOG1oSlpndAp4RlNNS3Jrdm9scUhNUnJveVl0c2FhNW53UExLWGFyRDE5RG9BU0MrZEZTQk05MEozdlp3ZXEzYXg3bVJLbFY5CmRvRXhoYitQZUpZM0pKZ1FMSnltRVlucmxUWkt5R2FjOHBiTmlsdlZEazBId3NkcUZOMUNPVmtlNy9lRE54OGcKck9JaXFRZUtHeC8zTWZnblJxekpZaHoySFJtU3podVRmUjl0K1hVZ2FTenhSa2wxaS8xcGdadndMSk5aZjBsaApwbmRlR2lQNitndFMwcE41NUlGdWN5Y1dpZDhiV1V3TEttdmVhVmNvMndRM3lpV1JZaDRTcVNPek5IdVVlZ04xCllCMzU5Y1FIV1ZwdS9EbUNhWnNaVHBiUzFia0QzSncvaGEyTXhuUTZzemlsdDVaK3krei9IWmVBUTl2WG4vbHIKVzRZWDRWKzZNUmoxYVZIdWFEbUx0dz09Ci0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCkJhZyBBdHRyaWJ1dGVzCiAgICBsb2NhbEtleUlEOiAzMiBEOCAyMSAxMiBDOCA4NiA3NiBGMiAwOSAxRiAwQiAwNCBFNyBDMyA4RCBFRSBCRiA2QiAxOSBGNCAKc3ViamVjdD1DID0gUEEsIE8gPSBGSVJNQSBFTEVDVFJPTklDQSwgT1UgPSBGQUNUVVJBIEVMRUNUUk9OSUNBLCBDTiA9IFtGXSBGT1JNVUxBUklPUyBDT01FUkNJQUxFUyBTIEEgLSA4NDQwODQtMS01MDQwNjEgLSAwMCAtIENIQU5JUyBURUpBREEgUkFNT04gQUdVU1RJTgoKaXNzdWVyPUMgPSBQQSwgTyA9IEZJUk1BIEVMRUNUUk9OSUNBLCBDTiA9IENBIFBBTkFNQSBDTEFTRSAyCgotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJR2Z6Q0NCV2VnQXdJQkFnSVFPZnRMREhhd3NZSmhUTXlGeXBpY2h6QU5CZ2txaGtpRzl3MEJBUXNGQURCRgpNUXN3Q1FZRFZRUUdFd0pRUVRFYU1CZ0dBMVVFQ2d3UlJrbFNUVUVnUlV4RlExUlNUMDVKUTBFeEdqQVlCZ05WCkJBTU1FVU5CSUZCQlRrRk5RU0JEVEVGVFJTQXlNQjRYRFRJeE1Ea3lNekU0TlRBME5Wb1hEVEl6TURreU16RTQKTlRBME5Wb3dnYVl4Q3pBSkJnTlZCQVlUQWxCQk1Sb3dHQVlEVlFRS0RCRkdTVkpOUVNCRlRFVkRWRkpQVGtsRApRVEVjTUJvR0ExVUVDd3dUUmtGRFZGVlNRU0JGVEVWRFZGSlBUa2xEUVRGZE1Gc0dBMVVFQXd4VVcwWmRJRVpQClVrMVZURUZTU1U5VElFTlBUVVZTUTBsQlRFVlRJRk1nUVNBdElEZzBOREE0TkMweExUVXdOREEyTVNBdElEQXcKSUMwZ1EwaEJUa2xUSUZSRlNrRkVRU0JTUVUxUFRpQkJSMVZUVkVsT01JSUJJakFOQmdrcWhraUc5dzBCQVFFRgpBQU9DQVE4QU1JSUJDZ0tDQVFFQTBwdnRBUjB5V3cxQm8wTm8wZ29acG5YWUdDa1RGR1dQWnlrZkpsb1hiQ0tyCjBHNFB4cG04c0ZLOWFJNTUvdjVLSCtQVE45V3dCd2o4ZkpaYmdGeUt5cm5wdXlWK2tkK3ZtZTNDejFkU0Jka3kKUGxIcFI4eUtBd1NDaXoybGh5QmNhOXhlaWtTL0JxdWNuMkZWMkdVTm82eTY0cFhzeTI2NDRGTC94OExpWFljZApQZnBCOGZwTnB2RERNQkhCZVgwNDlxV2RKMnNwczlOL0xZcXFuQlFOdmZXNDZlUGJyMy9QQzdSM28wQmlIcmwvCkRkYUd4MHVHZEpsLzNXb0tqTU1PVEQ4bE5kMjZUVVdsN0hLWGZxSThWVkQzL091R1A1WDRHWjJLdldNOWxUemoKc3Y5TTZHVnBmT1h5TGUrYkJ3M1hnV1pBTlpVb0JzWlM1OEVVR3NhRUZ3SURBUUFCbzRJREJ6Q0NBd013Z2dFYwpCZ05WSFJFRWdnRVRNSUlCRDRFWWNtTm9ZVzVwYzBCbVkyOXRaWEpqYVdGc1pYTXVZMjl0cElIeU1JSHZNUTR3CkRBWUhZSVJQQVFFR0Fnd0JNakVQTUEwR0IyQ0VUd0VCQmdFTUFqQXdNUnd3R2dZSFlJUlBBUUVDQWd3UE9EUTAKTURnMExURXROVEEwTURZeE1TZ3dKZ1lIWUlSUEFRRUNBUXdiUms5U1RWVk1RVkpKVDFNZ1EwOU5SVkpEU1VGTQpSVk1nVXlCQk1SY3dGUVlIWUlSUEFRRUJCZ3dLTVRndk1URXZNVGsyTkRFWE1CVUdCMkNFVHdFQkFRVU1Damd0Ck1qSTVMVEl5TWpjeEV6QVJCZ2RnaEU4QkFRRUVEQVpVUlVwQlJFRXhFekFSQmdkZ2hFOEJBUUVEREFaRFNFRk8KU1ZNeEZEQVNCZ2RnaEU4QkFRRUNEQWRCUjFWVFZFbE9NUkl3RUFZSFlJUlBBUUVCQVF3RlVrRk5UMDR3Q1FZRApWUjBUQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQmtBd0dRWURWUjBsQkJJd0VBWUlLd1lCQlFVSEF3UUdCRlVkCkpRQXdIUVlEVlIwT0JCWUVGSWhhd0FBa3k4ZjhJQ1p6RFNpamJzakpJaGQ5TUI4R0ExVWRJd1FZTUJhQUZPaisKYlBZSWxTcTYzR1M1b0ZsdTdkQzg4TWx5TUlIS0JnTlZIU0FFZ2NJd2diOHdnYndHQ0dDRVR3RUNBZ1lDTUlHdgpNRFlHQ0NzR0FRVUZCd0lCRmlwb2RIUndPaTh2ZDNkM0xuQnJhUzVuYjJJdWNHRXZibTl5YldGMGFYWmhMMmx1ClpHVjRMbWgwYld3d2RRWUlLd1lCQlFVSEFnSXdhUnBuUTJWeWRHbG1hV05oWkc4Z2MzVnFaWFJ2SUdFZ2JHRWcKUkdWamJHRnlZV05wYjI0Z1pHVWdVSEpoWTNScFkyRnpJR1JsSUVObGNuUnBabWxqWVdOcGIyNGdaR1VnUm1seQpiV0VnUld4bFkzUnliMjVwWTJFZ1pHVWdVR0Z1WVcxaElDZ3lNREV5S1RCbkJnZ3JCZ0VGQlFjQkFRUmJNRmt3Ck13WUlLd1lCQlFVSE1BS0dKMmgwZEhBNkx5OTNkM2N1Y0d0cExtZHZZaTV3WVM5allXTmxjblJ6TDJOaGNHTXkKTG1OeWREQWlCZ2dyQmdFRkJRY3dBWVlXYUhSMGNEb3ZMMjlqYzNBdWNHdHBMbWR2WWk1d1lUQTFCZ05WSFI4RQpMakFzTUNxZ0tLQW1oaVJvZEhSd09pOHZkM2QzTG5CcmFTNW5iMkl1Y0dFdlkzSnNjeTlqWVhCak1pNWpjbXd3CkRRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFHZ1NpT1pwc1Y0Q295ditwMDUrVGRhUHdqNGRVeTZkWCtIenVZSnMKaENvUWk4amZDNVRkOExGaFVlVGdIY1greDJmZzJ6bHgxcmRXSzNQbkJETGdZdU43MGxOVWRKcVNTQ3BSM01xcwprVkpMWEpoZ0JiWXBMeFlySkpLQmxCQVNTVjhydUJLd1ZmZFlYMVdoR3NscjVzU2VZbHdUVSsxNkp4K2l6Mm04CjFMcVdIeEppR1F6bVlSb21QMWFCVWtSZFplL0ljSGo4QTh2Q0FjaUE3ajlDL3ZIRXVnTEJGMHV0eEZ1cllGeVkKc2FVTSs5YWVzZDRZSDJOR28vRXRPN0hPZlhxekIrTHhFZ1ZEUHNENERtMHlienpDVGtzUVZZZ2tNYUFacGdhcQpEQmRlWDMvQjNxNWdpSEpHN3VxalBDTXQxMzBkZnJWMkkvbE9nVkRmciszT2ZjWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
"pass": "84665c168490988d33d4b1ded2f5edf5b4957784498"
}
}
Ejemplo PHP
$datospost['json']=$datos_factura_json;
$datospost['modo']='JSON';
$res=callAPI('POST', $url, $datospost);
echo $res;
function callAPI($method, $url, $data){
$curl = curl_init();
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => false, // follow redirects
CURLOPT_MAXREDIRS => 1, // stop after 10 redirects
CURLOPT_ENCODING => "", // handle compressed
CURLOPT_USERAGENT => "api-mf", // name of client
CURLOPT_AUTOREFERER => true, // set referrer on redirect
CURLOPT_CONNECTTIMEOUT => 10, // time-out on connect
CURLOPT_TIMEOUT => 10, // time-out on response
);
curl_setopt_array($curl, $options);
switch ($method){
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'APIKEY: 111111111111111111111',
'test-test: application/json',
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
// EXECUTE:
$result = curl_exec($curl);
if(!$result){die("Connection Failure");}
curl_close($curl);
return $result;
}
Ejemplo C#
using System.Net;
using System.Collections.Specialized;
using System.Text;
var wb = new WebClient();
var data = new NameValueCollection();
string url = "https://pruebasws.siteck.mx/api/";
data["modo"] = "JSON";
data["json"] = entrada.Text;
byte[] responseArray = wb.UploadValues(url, "POST", data);
respuestaws.Text = Encoding.Default.GetString(responseArray);
Ejemplo VB .net
Dim wb As var = New WebClient()
Dim data As var = New NameValueCollection()
Dim url As String = "https://pruebasws.siteck.mx/api/"
data("modo") = "JSON"
data("json") = entrada.Text
Dim responseArray() As Byte = wb.UploadValues(url,"POST",data)
respuestaws.Text = Encoding.Default.GetString(responseArray)
Ejemplo Python
#check if module is installed "python -m pip install requests"
import requests
import json
url = "https://pruebas.facturacionpanama.com/api/"
datos = {
"modo": "JSON",
"json": """
INSERTAR STRING JSON AQUI
"""
}
response = requests.post(url, datos,verify=False)
print(response.text)
VER MANUAL
VER VIDEO APIREST TXT C#
variable modo (formato de respuesta) : JSON(default)|INI|DIVISOR|SERIALIZE|XML
variable txt :
NOTA: parametro conf/cer es el archivo en base64
[rFE]
[rFE.gDGen]
dNroDF=0000031776
dFechaEm=AUTO
dSeg=907491421
[rFE.gDGen.gEmis]
[rFE.gDGen.gEmis.dTfnEm]
0=123-4567
[rFE.gDGen.gEmis.dCorElectEmi]
0=demo@siteck.com.mx
[PAC]
usuario=844084-1-504061
QR=CEA4A5457603B609E05349D1950A8972CEA4A5457604B609E05349D1950A8972CEA4A5457605B609E05349D1950A8972CEA4A5457606B609E05349D1950A8972
pass=pruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebapruebaprueba
[conf]
pass=84665c168490988d33d4b1ded2f5edf5b4957784498
cer=QmFnIEF0dHJpYnV0ZXMKICAgIGxvY2FsS2V5SUQ6IDMyIEQ4IDIxIDEyIEM4IDg2IDc2IEYyIDA5IDFGIDBCIDA0IEU3IEMzIDhEIEVFIEJGIDZCIDE5IEY0IApLZXkgQXR0cmlidXRlczogPE5vIEF0dHJpYnV0ZXM+Ci0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KTUlJRkhEQk9CZ2txaGtpRzl3MEJCUTB3UVRBcEJna3Foa2lHOXcwQkJRd3dIQVFJWEl3MFgyUUdCWElDQWdnQQpNQXdHQ0NxR1NJYjNEUUlKQlFBd0ZBWUlLb1pJaHZjTkF3Y0VDS3JlUSswWUhSMTdCSUlFeUhnNGZMdENDV2R1CktYRDU4TDlnQW1yb2R2dytxbjR6Slp4RGtlbm5SdkZ6bnh3U0N4d1pQR05GcjJ4M0t1cXh2UGNRMStkZWU4d3gKWDY3RlplSCtBdElnRWswVnBtekU2UWVobTBiTzA5alB1VFhlaTk2ejV1UUx4VVhDVDROaU5sL05oV2luOEVJdwo4amFNOTdrV3h4bnRiMHFKUEtjb1VQVzBDMUNYZnpYUEswaTc5SzlSb0RvTzJ0N0tVK0lyWFJqTDNaVUozVXRzCnM4Z05xYmdFOURmdHRwRkd5RzZZQ3M5b0p4SzdDVkY4VG5aS2Zqc3dhTUlMdGthL3V2WVhFN1NzTDZiZlpRRzUKLzBQaXFrYmp5cG44cWc1U0twdFRQY1dBR2lyRXZhVy9lT3dHbVRQZFczcm1xR0hVSlhJbUIrN0lnSUJWaXg1bgoyK3BFTnhua0tUVW1qMXN0dkdqYjlHejZyMUwrK3BiNm51TC9jQjB4azY4WFUwYTBhUS9PVU1mS3hWWTJ4TXZLCkFHVW05SURSOC9yelJuWVhuOWNsdXZER3FyNXBqbytmeTNZNWt5TmhsaHBXRk01S0pPVHAzWUJiZjZCc0dGTGcKSHB4ZTFweGppV1lHejl6VVd3VHR6eU9pVUZDV0M2VGlqVm43SmZDSzVubnhTbCtMZWJ2SlJTSVNGdjJJamwwRgozMDZNMG9JY0ZGQ1RBc0FDbGJSVk11QU1uUU16aHQrRUswK01RcktNdlNUaGhMeXJEWEdWNks2RXBlSk41RzFGCjdMWm83TmRZUnNBNm5MSUoxaVpDNjBSRGZyZ29UYUtyaURTd3g4K01OM0MzUXBSWmZra245aDNCc1pBVkhQZHkKTkhRbDV4bVFqZFUrWi8wa0N0L1JLcDhYdUNxSDNzQVlCblBGU1QwZ0NNZGhUVEQxbGVxbzhLR1hzSjV1UXl2cApUUUMzS3h4L25KL3NZejNXQnhmYXo4OVVsbEdmRmlYOUlrbEdKdlJlRHVYRk5jNzJKRXppR293RWordXd0RzBxClNkbnJqM0tFZUp5N1hyQjFrdVZYbktUblBCbWl6YmxEcVk4NW0yZmVmN3Z6ZGpkV2hQU0pwVUtWbHBlVzRNcWgKakNlK2l4SUwxdVdBVHZSSmZicW41WlB2WkhrT2NZazhOck9DV1BmRzFDNGJ4V3E5SmJucW13ZHczSCs3UEd3UAo5MGYxU1ZyWlhhZTNISCtYaTFxb1R4bjhnRS8rYlhDakJTc3dCWnpsMFVuQmFXVHUzdS81N1VKSm9ESVhUcW9oClpReGdXWDRYM1hURUZjL0J6MHNkM1lzaHkrVGVXSkh3b0ROK2V0TWRra2twWFZvejk3K0h2L0xxbSs0UW9XK2MKWVU1ekZ6V0NZYjdoeEJpLzhROUJQOW43UWluZGVWZWlvaFpqWkVtNkdWdi9lNEhqZ3h6VUJ4aGFLL2R6L3lpKwpDTzgyUWwxWVJXZ01oa0lZM1lvb3hJY2xNTjRVSFRhY3k4aVFGSlMwYUZEc1IyOUpWQWpTU08rcSsyWFlkQklvCmhHYTB1TkpENVhwV1dxQW5LNk5qRnc1V1Z1M1BwYzFSdE9YTXVrS3dDU01ZbjBVaG9OcHREWUIrbUZZcEFBSm8KajNCeGN6ZGxEUlk4Y3A0cDU4alhvTGN1L1FSQU9zQzRQY3FFRkMwdTF6ZG5PMEE1VjdHcC9KSDNFOG1oSlpndAp4RlNNS3Jrdm9scUhNUnJveVl0c2FhNW53UExLWGFyRDE5RG9BU0MrZEZTQk05MEozdlp3ZXEzYXg3bVJLbFY5CmRvRXhoYitQZUpZM0pKZ1FMSnltRVlucmxUWkt5R2FjOHBiTmlsdlZEazBId3NkcUZOMUNPVmtlNy9lRE54OGcKck9JaXFRZUtHeC8zTWZnblJxekpZaHoySFJtU3podVRmUjl0K1hVZ2FTenhSa2wxaS8xcGdadndMSk5aZjBsaApwbmRlR2lQNitndFMwcE41NUlGdWN5Y1dpZDhiV1V3TEttdmVhVmNvMndRM3lpV1JZaDRTcVNPek5IdVVlZ04xCllCMzU5Y1FIV1ZwdS9EbUNhWnNaVHBiUzFia0QzSncvaGEyTXhuUTZzemlsdDVaK3krei9IWmVBUTl2WG4vbHIKVzRZWDRWKzZNUmoxYVZIdWFEbUx0dz09Ci0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCkJhZyBBdHRyaWJ1dGVzCiAgICBsb2NhbEtleUlEOiAzMiBEOCAyMSAxMiBDOCA4NiA3NiBGMiAwOSAxRiAwQiAwNCBFNyBDMyA4RCBFRSBCRiA2QiAxOSBGNCAKc3ViamVjdD1DID0gUEEsIE8gPSBGSVJNQSBFTEVDVFJPTklDQSwgT1UgPSBGQUNUVVJBIEVMRUNUUk9OSUNBLCBDTiA9IFtGXSBGT1JNVUxBUklPUyBDT01FUkNJQUxFUyBTIEEgLSA4NDQwODQtMS01MDQwNjEgLSAwMCAtIENIQU5JUyBURUpBREEgUkFNT04gQUdVU1RJTgoKaXNzdWVyPUMgPSBQQSwgTyA9IEZJUk1BIEVMRUNUUk9OSUNBLCBDTiA9IENBIFBBTkFNQSBDTEFTRSAyCgotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJR2Z6Q0NCV2VnQXdJQkFnSVFPZnRMREhhd3NZSmhUTXlGeXBpY2h6QU5CZ2txaGtpRzl3MEJBUXNGQURCRgpNUXN3Q1FZRFZRUUdFd0pRUVRFYU1CZ0dBMVVFQ2d3UlJrbFNUVUVnUlV4RlExUlNUMDVKUTBFeEdqQVlCZ05WCkJBTU1FVU5CSUZCQlRrRk5RU0JEVEVGVFJTQXlNQjRYRFRJeE1Ea3lNekU0TlRBME5Wb1hEVEl6TURreU16RTQKTlRBME5Wb3dnYVl4Q3pBSkJnTlZCQVlUQWxCQk1Sb3dHQVlEVlFRS0RCRkdTVkpOUVNCRlRFVkRWRkpQVGtsRApRVEVjTUJvR0ExVUVDd3dUUmtGRFZGVlNRU0JGVEVWRFZGSlBUa2xEUVRGZE1Gc0dBMVVFQXd4VVcwWmRJRVpQClVrMVZURUZTU1U5VElFTlBUVVZTUTBsQlRFVlRJRk1nUVNBdElEZzBOREE0TkMweExUVXdOREEyTVNBdElEQXcKSUMwZ1EwaEJUa2xUSUZSRlNrRkVRU0JTUVUxUFRpQkJSMVZUVkVsT01JSUJJakFOQmdrcWhraUc5dzBCQVFFRgpBQU9DQVE4QU1JSUJDZ0tDQVFFQTBwdnRBUjB5V3cxQm8wTm8wZ29acG5YWUdDa1RGR1dQWnlrZkpsb1hiQ0tyCjBHNFB4cG04c0ZLOWFJNTUvdjVLSCtQVE45V3dCd2o4ZkpaYmdGeUt5cm5wdXlWK2tkK3ZtZTNDejFkU0Jka3kKUGxIcFI4eUtBd1NDaXoybGh5QmNhOXhlaWtTL0JxdWNuMkZWMkdVTm82eTY0cFhzeTI2NDRGTC94OExpWFljZApQZnBCOGZwTnB2RERNQkhCZVgwNDlxV2RKMnNwczlOL0xZcXFuQlFOdmZXNDZlUGJyMy9QQzdSM28wQmlIcmwvCkRkYUd4MHVHZEpsLzNXb0tqTU1PVEQ4bE5kMjZUVVdsN0hLWGZxSThWVkQzL091R1A1WDRHWjJLdldNOWxUemoKc3Y5TTZHVnBmT1h5TGUrYkJ3M1hnV1pBTlpVb0JzWlM1OEVVR3NhRUZ3SURBUUFCbzRJREJ6Q0NBd013Z2dFYwpCZ05WSFJFRWdnRVRNSUlCRDRFWWNtTm9ZVzVwYzBCbVkyOXRaWEpqYVdGc1pYTXVZMjl0cElIeU1JSHZNUTR3CkRBWUhZSVJQQVFFR0Fnd0JNakVQTUEwR0IyQ0VUd0VCQmdFTUFqQXdNUnd3R2dZSFlJUlBBUUVDQWd3UE9EUTAKTURnMExURXROVEEwTURZeE1TZ3dKZ1lIWUlSUEFRRUNBUXdiUms5U1RWVk1RVkpKVDFNZ1EwOU5SVkpEU1VGTQpSVk1nVXlCQk1SY3dGUVlIWUlSUEFRRUJCZ3dLTVRndk1URXZNVGsyTkRFWE1CVUdCMkNFVHdFQkFRVU1Damd0Ck1qSTVMVEl5TWpjeEV6QVJCZ2RnaEU4QkFRRUVEQVpVUlVwQlJFRXhFekFSQmdkZ2hFOEJBUUVEREFaRFNFRk8KU1ZNeEZEQVNCZ2RnaEU4QkFRRUNEQWRCUjFWVFZFbE9NUkl3RUFZSFlJUlBBUUVCQVF3RlVrRk5UMDR3Q1FZRApWUjBUQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQmtBd0dRWURWUjBsQkJJd0VBWUlLd1lCQlFVSEF3UUdCRlVkCkpRQXdIUVlEVlIwT0JCWUVGSWhhd0FBa3k4ZjhJQ1p6RFNpamJzakpJaGQ5TUI4R0ExVWRJd1FZTUJhQUZPaisKYlBZSWxTcTYzR1M1b0ZsdTdkQzg4TWx5TUlIS0JnTlZIU0FFZ2NJd2diOHdnYndHQ0dDRVR3RUNBZ1lDTUlHdgpNRFlHQ0NzR0FRVUZCd0lCRmlwb2RIUndPaTh2ZDNkM0xuQnJhUzVuYjJJdWNHRXZibTl5YldGMGFYWmhMMmx1ClpHVjRMbWgwYld3d2RRWUlLd1lCQlFVSEFnSXdhUnBuUTJWeWRHbG1hV05oWkc4Z2MzVnFaWFJ2SUdFZ2JHRWcKUkdWamJHRnlZV05wYjI0Z1pHVWdVSEpoWTNScFkyRnpJR1JsSUVObGNuUnBabWxqWVdOcGIyNGdaR1VnUm1seQpiV0VnUld4bFkzUnliMjVwWTJFZ1pHVWdVR0Z1WVcxaElDZ3lNREV5S1RCbkJnZ3JCZ0VGQlFjQkFRUmJNRmt3Ck13WUlLd1lCQlFVSE1BS0dKMmgwZEhBNkx5OTNkM2N1Y0d0cExtZHZZaTV3WVM5allXTmxjblJ6TDJOaGNHTXkKTG1OeWREQWlCZ2dyQmdFRkJRY3dBWVlXYUhSMGNEb3ZMMjlqYzNBdWNHdHBMbWR2WWk1d1lUQTFCZ05WSFI4RQpMakFzTUNxZ0tLQW1oaVJvZEhSd09pOHZkM2QzTG5CcmFTNW5iMkl1Y0dFdlkzSnNjeTlqWVhCak1pNWpjbXd3CkRRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFHZ1NpT1pwc1Y0Q295ditwMDUrVGRhUHdqNGRVeTZkWCtIenVZSnMKaENvUWk4amZDNVRkOExGaFVlVGdIY1greDJmZzJ6bHgxcmRXSzNQbkJETGdZdU43MGxOVWRKcVNTQ3BSM01xcwprVkpMWEpoZ0JiWXBMeFlySkpLQmxCQVNTVjhydUJLd1ZmZFlYMVdoR3NscjVzU2VZbHdUVSsxNkp4K2l6Mm04CjFMcVdIeEppR1F6bVlSb21QMWFCVWtSZFplL0ljSGo4QTh2Q0FjaUE3ajlDL3ZIRXVnTEJGMHV0eEZ1cllGeVkKc2FVTSs5YWVzZDRZSDJOR28vRXRPN0hPZlhxekIrTHhFZ1ZEUHNENERtMHlienpDVGtzUVZZZ2tNYUFacGdhcQpEQmRlWDMvQjNxNWdpSEpHN3VxalBDTXQxMzBkZnJWMkkvbE9nVkRmciszT2ZjWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
Ejemplo PHP
$datospost['txt']=$datos_factura_txt;
$datospost['modo']='JSON';
$res=callAPI('POST', $url, $datospost);
echo $res;
function callAPI($method, $url, $data){
$curl = curl_init();
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => false, // follow redirects
CURLOPT_MAXREDIRS => 1, // stop after 10 redirects
CURLOPT_ENCODING => "", // handle compressed
CURLOPT_USERAGENT => "api-mf", // name of client
CURLOPT_AUTOREFERER => true, // set referrer on redirect
CURLOPT_CONNECTTIMEOUT => 10, // time-out on connect
CURLOPT_TIMEOUT => 10, // time-out on response
);
curl_setopt_array($curl, $options);
switch ($method){
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'APIKEY: 111111111111111111111',
'test-test: application/json',
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
// EXECUTE:
$result = curl_exec($curl);
if(!$result){die("Connection Failure");}
curl_close($curl);
return $result;
}
Ejemplo C#
var wb = new WebClient();
var data = new NameValueCollection();
string url = "https://pruebasws.siteck.mx/api/";
data["modo"] = "TXT";
data["txt"] = entrada.Text;
byte[] responseArray = wb.UploadValues(url, "POST", data);
respuestaws.Text = Encoding.Default.GetString(responseArray);
Ejemplo VB .net
Dim wb As var = New WebClient()
Dim data As var = New NameValueCollection()
Dim url As String = "https://pruebasws.siteck.mx/api/"
data("modo") = "TXT"
data("txt") = entrada.Text
Dim responseArray() As Byte = wb.UploadValues(url,"POST",data)
respuestaws.Text = Encoding.Default.GetString(responseArray)
Ejemplo Python
#check if module is installed "python -m pip install requests"
import requests
import json
url = "https://pruebas.facturacionpanama.com/api/"
datos = {
"modo": "JSON",
"txt": """
INSERTAR STRING JSON AQUI
"""
}
response = requests.post(url, datos,verify=False)
print(response.text)
RESPUESTA DEL WEBSERVICE
Este es un ejemplo de los elementos y el formato cambia segun el ambiente
NOTAS:
PHP : respuesta en array
TXT : respuesta en TXT
C# : respuesta en SDKRespuesta respuesta
API REST : respuesta JSON, XML, TXT, SERIALIZADO
WS SOAP WSDL : variables del WS