Marcos, el passphrase es la clave privada que vos utilizaste cuando generaste las claves a traves del openssl....
ejemplo:
1-openssl genrsa -out passphrase 1024
y luego generas con
2- openssl req -new -key passphrase -subj "/C=AR/O=subj_o/CN=subj_cn/serialNumber=CUIT subj_cuit" -out MiPedidoCSR
Fijate los pasos que seguí para incluir los contenidos de los archivos en el primer mail. Tb fijate que este todo dentro del mismo ambito (los archivos a la misma altura que el php)
te paso actualmente como lo tengo funcionando al codigo... pronto paso una clase con los metodos para que sea mas practico.
saludos
<?php
define("WSDLA", "wsaa.wsdl"); # The WSDL corresponding to WSAA
define("WSDL", "wsdl.wsdl"); # The WSDL corresponding to WSAA
define("CERT", "ghf.crt"); # The X.509 certificate in PEM format - el del paso 3.. empieza el archivo con -----BEGIN CERTIFICATE-----
define("PRIVATEKEY", "ghf.key"); # The private key correspoding to CERT (PEM) .. paso 1, empieza archivo con -----BEGIN RSA PRIVATE KEY-----
define("PASSPHRASE", "claveLaloGZ-Credifiar"); # The passphrase (if any) to sign .. clave que se coloco en paso 1 y 2
define("PROXY_HOST", "10.20.152.113"); # Proxy IP, to reach the Internet
define("PROXY_PORT", "80"); # Proxy TCP port
define("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms"); # ambiente de prueba
ini_set("soap.wsdl_cache_enabled", "0");
ini_set('soap.wsdl_cache_ttl', "0");
function getCAE() {
}
function CreateTRA($SERVICE) {
$TRA = new SimpleXMLElement(
'<?xml version="1.0" encoding="UTF-8"?>' .
'<loginTicketRequest version="1.0">' .
'</loginTicketRequest>');
$TRA->addChild('header');
$TRA->header->addChild('uniqueId', date('U'));
$TRA->header->addChild('generationTime', date('c', date('U') - 60));
$TRA->header->addChild('expirationTime', date('c', date('U') + 60));
$TRA->addChild('service', $SERVICE);
$TRA->asXML('TRA.xml');
}
function SignTRA() {
$STATUS = openssl_pkcs7_sign("TRA.xml", "TRA.tmp", "file://" . CERT, array("file://" . PRIVATEKEY, PASSPHRASE), array(), !PKCS7_DETACHED
);
if (!$STATUS) {
exit("ERROR generating PKCS#7 signature\n");
}
$inf = fopen("TRA.tmp", "r");
$i = 0;
$CMS = "";
while (!feof($inf)) {
$buffer = fgets($inf);
if ($i++ >= 4) {
$CMS.=$buffer;
}
}
fclose($inf);
unlink("TRA.tmp");
return $CMS;
}
function CallWSAA($CMS) {
$client = new SoapClient(WSDLA, array(
'soap_version' => SOAP_1_2,
'location' => URL,
'trace' => 1,
'exceptions' => 0
));
$results = $client->loginCms(array('in0' => $CMS));
file_put_contents("request-loginCms.xml", $client->__getLastRequest());
file_put_contents("response-loginCms.xml", $client->__getLastResponse());
if (is_soap_fault($results)) {
exit("SOAP Fault: " . $results->faultcode . "\n" . $results->faultstring . "\n");
}
return $results->loginCmsReturn;
}
$SERVICE = $argv[1];
CreateTRA($SERVICE);
$CMS = SignTRA();
$TA = CallWSAA($CMS);
if (!file_put_contents("TA.xml", $TA)) {
exit();
}
$ta_xml = simplexml_load_string($TA);
$TOKEN = $ta_xml->credentials->token;
$SIGN = $ta_xml->credentials->sign;
$opts = array(
'ssl' => array('ciphers' => 'RC4-SHA')
);
$client_wsfe = new SoapClient(WSDL, array(
'trace' => true,
'encoding' => 'UTF-8',
'cache_wsdl' => WSDL_CACHE_BOTH,
//'ssl_method' => SOAP_SSL_METHOD_SSLv3,
'stream_context' => stream_context_create($opts),
"exceptions" => false
));
// metodo para probar si se conecta
//$results_AutRequest = $client_wsfe->FEDummy();
/*
//////////////////
$results_AutRequest = $client_wsfe->FECompUltimoAutorizado(
array(
'Auth' => array
(
'Token' => $TOKEN,
'Sign' => $SIGN,
'Cuit' => 20264678014,
),
'PtoVta' => 1,
'CbteTipo' => 6 //1 factura A - 6 factura B
)
);
*/
//////////////////
/*$results_AutRequest = $client_wsfe->FEParamGetTiposTributos(
array(
'Auth' => array
(
'Token' => $TOKEN,
'Sign' => $SIGN,
'Cuit' => 20264678014,
)
)
);*/
/*
//////////////////
$results_AutRequest = $client_wsfe->FEParamGetTiposIva(
array(
'Auth' => array
(
'Token' => $TOKEN,
'Sign' => $SIGN,
'Cuit' => 20264678014,
)
)
);
*/
$imp_total = 159.05;
$imp_total_conceptos = 0;
$imp_neto = 125;
$imp_operaciones_exentas = 0;
$imp_iva = 26.25;
$imp_trib = 7.80;
$results_AutRequest = $client_wsfe->FECAESolicitar(
array(
'Auth' => array
(
'Token' => $TOKEN,
'Sign' => $SIGN,
'Cuit' => 20264678014
),
'FeCAEReq' => array
(
'FeCabReq' => array
(
'CantReg' => 1,
'PtoVta' => 1,
'CbteTipo' => 6 //1 factura A - 6 factura B
),
'FeDetReq' => array
(
'FECAEDetRequest' => array
(
'Concepto' => 1, // Productos y servicios
'DocTipo' => 96, //80 (CUIT) - 96 DNI
'DocNro' => 26467801,
'CbteDesde' => 2,
'CbteHasta' => 2,
'CbteFch' => date('Ymd'),
'ImpTotal' => round($imp_total, 2),
'ImpTotConc' => round($imp_total_conceptos, 2),
'ImpNeto' => round($imp_neto, 2),
'ImpOpEx' => round($imp_operaciones_exentas, 2),
'ImpTrib' => round($imp_trib, 2),
'ImpIVA' => $imp_iva,
'FchServDesde' => '',
'FchServHasta' => '',
'FchVtoPago' => '',
'MonId' => 'PES',
'MonCotiz' => 1,
'Tributos' => array(
'Tributo' => array(
'Id' => 99,
'Desc' => 'Impuesto municipal matanza',
'BaseImp' => 150,
'Alic' => 5.2,
'Importe' => 7.8
)
),
'Iva' => array(
'AlicIva' => array(
'Id' => 5,
'BaseImp' => 125,
'Importe' => 26.25
)
)
)
)
)
)
);
// los resultados los pongo en un archivo
file_put_contents(microtime(true) . '_results_AutRequest.txt', var_export($results_AutRequest, true));
file_put_contents(microtime(true) . '_results_AutRequest_soap.txt', var_export($client_wsfe, true));
?>
El viernes, 3 de julio de 2015, 18:08:05 (UTC-3), Marcos Piñero escribió:Gerardo, tengo el mismo problema que tenían uds.Warning: openssl_pkcs7_sign(): error getting private key in D:\Documents\Mis Webs\wsaa-client-php\wsaa-client.php on line 64 ERROR generating PKCS#7 signature
He probado de todo, de todos modos no entiendo bien lo PASSPHRASE
Me podrían dar una mano, muchas gracias.
El jueves, 25 de junio de 2015, 23:44:18 (UTC-3), Gerardo Gorelik Zonis escribió:Encontre el problema.
El contenido de uno de los archivos estaba mal.
#==============================================================================
define ("WSDL", "wsaa.wsdl"); # The WSDL corresponding to WSAA
define ("CERT", "ghf.crt"); # The X.509 certificate in PEM format
define ("PRIVATEKEY", "ghf.key"); # The private key correspoding to CERT (PEM)
define ("PASSPHRASE", "dsfafafdasfas"); # The passphrase (if any) to sign
define ("PROXY_HOST", "10.20.152.112"); # Proxy IP, to reach the Internet
define ("PROXY_PORT", "80"); # Proxy TCP port
define ("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms");
#define ("URL", "https://wsaa.afip.gov.ar/ws/services/LoginCms");
Dentro del archivo que definen con nombre ghf.crt deben ingresar el certificado que les da via web la afip. (paso 3) El que comienza... -----BEGIN CERTIFICATE-----
Dentro del archivo que definen con nombre ghf.key deben ingresar el contenido del archivo generado en el openssl (Paso 1)
en PASSPHRASE ... deben escribir la clave que ingresaron en las lineas de openssl ... paso 1 y paso 2
No me fue necesario utilizar el archivo .tmp
Espero que les sirva
saludos
El jueves, 25 de junio de 2015, 16:57:33 (UTC-3), Gerardo Gorelik Zonis escribió:
Daniel, he probado diferentes maneras y no he conseguido salir del error : error getting private key.
Ha esta altura estoy pensando que es un error en el formato con el que tengo guardado el certificado.
He realizado los siguientes pasos para generar el CERT (supuestamente archivo en formato PEM)
1- openssl genrsa -out claveLaloGZXXX 1024
2-
openssl req -new -key claveLaloGZXXX-subj "/C=AR/O=NOMBRE NOMBRE/CN=NOMBRESISTEMA/serialNumber=CUIT NROCUITA" -out SALIDACSR
3-con el contenido del archivo SALIDACSR fui al sitio de la AFIP (ingresando mi clave fiscal) ->WSASS - Autogestión Certificados Homologación -> nuevo certificado
coloque un alias
pegue el contenido del CSR y luego click en crear dn y certificado
Este resultado entiendo es mi CERT (El sistema devuelve un certificado x509v2 en formato PEM)
4- ingreso al php para generar el TA -> ticket de acceso Y ERROR
$STATUS=openssl_pkcs7_sign("TRA.xml", "TRA.tmp", "file://".CERT,
array("file://".PRIVATEKEY, PASSPHRASE),
array(),
!PKCS7_DETACHED
);Observaciones:
- tengo creado el archivo TRA.tmp
- controle todos los path y estan correctos, he puesto la funcion realpath
- ejecuto el php por linea de comando (CMD de windows) -> php.exe wsaa-client.php wsfev1
- controlado que la extension openssl este funcionando tanto para ejecutar en el navegador como para ejecutar en linea de comando
alguien pudo pasar este paso?
Paso el php que estoy utilizando, sacado de AFIP en su momento
---------------------------------------------------------------------------------------------------------
<?php
# Author: Gerardo Fisanotti - DvSHyS/DiOPIN/AFIP - 13-apr-07
# Function: Get an authorization ticket (TA) from AFIP WSAA
# Input:
# WSDL, CERT, PRIVATEKEY, PASSPHRASE, SERVICE, URL
# Check below for its definitions
# Output:
# TA.xml: the authorization ticket as granted by WSAA.
#==============================================================================
define ("WSDL", "wsaa.wsdl"); # The WSDL corresponding to WSAA
define ("CERT", "ghf.crt"); # The X.509 certificate in PEM format
define ("PRIVATEKEY", "ghf.key"); # The private key correspoding to CERT (PEM)
define ("PASSPHRASE", "dsfafafdasfas"); # The passphrase (if any) to sign
define ("PROXY_HOST", "10.20.152.112"); # Proxy IP, to reach the Internet
define ("PROXY_PORT", "80"); # Proxy TCP port
define ("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms");
#define ("URL", "https://wsaa.afip.gov.ar/ws/services/LoginCms");
#------------------------------------------------------------------------------
# You shouldn't have to change anything below this line!!!
#==============================================================================
function CreateTRA($SERVICE)
{
$TRA = new SimpleXMLElement(
'<?xml version="1.0" encoding="UTF-8"?>' .
'<loginTicketRequest version="1.0">'.
'</loginTicketRequest>');
$TRA->addChild('header');
$TRA->header->addChild('uniqueId',date('U'));
$TRA->header->addChild('generationTime',date('c',date('U')-60));
$TRA->header->addChild('expirationTime',date('c',date('U')+60));
$TRA->addChild('service',$SERVICE);
$TRA->asXML('TRA.xml');
}
#==============================================================================
# This functions makes the PKCS#7 signature using TRA as input file, CERT and
# PRIVATEKEY to sign. Generates an intermediate file and finally trims the
# MIME heading leaving the final CMS required by WSAA.
function SignTRA()
{
$STATUS=openssl_pkcs7_sign("TRA.xml", "TRA.tmp", "file://".CERT,
array("file://".PRIVATEKEY, PASSPHRASE),
array(),
!PKCS7_DETACHED
);
if (!$STATUS) {exit("ERROR generating PKCS#7 signature\n");}
$inf=fopen("TRA.tmp", "r");
$i=0;
$CMS="";
while (!feof($inf))
{
$buffer=fgets($inf);
if ( $i++ >= 4 ) {$CMS.=$buffer;}
}
fclose($inf);
# unlink("TRA.xml");
unlink("TRA.tmp");
return $CMS;
}
#==============================================================================
function CallWSAA($CMS)
{
$client=new SoapClient(WSDL, array(
'proxy_host' => PROXY_HOST,
'proxy_port' => PROXY_PORT,
'soap_version' => SOAP_1_2,
'location' => URL,
'trace' => 1,
'exceptions' => 0
));
$results=$client->loginCms(array('in0'=>$CMS));
file_put_contents("request-loginCms.xml",$client->__getLastRequest());
file_put_contents("response-loginCms.xml",$client->__getLastResponse());
if (is_soap_fault($results))
{exit("SOAP Fault: ".$results->faultcode."\n".$results->faultstring."\n");}
return $results->loginCmsReturn;
}
#==============================================================================
function ShowUsage($MyPath)
{
printf("Uso : %s Arg#1 Arg#2\n", $MyPath);
printf("donde: Arg#1 debe ser el service name del WS de negocio.\n");
printf(" Ej.: %s wsfe\n", $MyPath);
}
#==============================================================================
ini_set("soap.wsdl_cache_enabled", "0");
if (!file_exists(CERT)) {exit("Failed to open ".CERT."\n");}
if (!file_exists(PRIVATEKEY)) {exit("Failed to open ".PRIVATEKEY."\n");}
if (!file_exists(WSDL)) {exit("Failed to open ".WSDL."\n");}
if ( $argc < 2 ) {ShowUsage($argv[0]); exit();}
$SERVICE=$argv[1];
CreateTRA($SERVICE);
$CMS=SignTRA();
$TA=CallWSAA($CMS);
if (!file_put_contents("TA.xml", $TA)) {exit();}
?>
El martes, 16 de junio de 2015, 8:33:00 (UTC-3), Daniel Lagamma escribió:
Les doy la solucion para el error "openssl_pkcs7_sign(): error getting private key ":
El archivo .tmp debe existir, asi que mi solucion fue crear el .tmp sin datos:
$fp = fopen('TRA.tmp','w');
fwrite($fp,$asc);
fclose($fp);
$STATUS=openssl_pkcs7_sign(realpath("TRA.xml") , realpath("TRA.tmp"), "file://". realpath(CERT) ,
array("file://". realpath(PRIV_KEY) , PASSPHRASE),
array(),
!PKCS7_DETACHED);
Saludos
El jueves, 24 de julio de 2014, 5:34:21 (UTC-3), Roberto C. Fernández G. escribió:Estimado Ariel, pudiste solucionar el error "openssl_pkcs7_sign(): error getting private key "?? si es asi, me podrias indicar como lo hiciste? desde ya muchas gracias.
El lunes, 5 de agosto de 2013 22:59:57 UTC-4, Ariel Loffreda escribió:
Gente, estoy entrando recien ahora en este tema de la Factura Electronica.Ante todo les comento que estoy intentando generar el ticket con el wsaa con php y sobre linux, asi que no tengo ningun com ni libreria externa para utilizar (al menos en debian no se como usarlas)Para poder generar el token con el wsaa, tengo mi crt y mi key, pero cuandor quiero generar el signTRA me devuelve el siguiente errorWarning: openssl_pkcs7_sign(): error getting private key in /var/www/fele/wsaa-client.class.php on line 80ERROR generating PKCS#7 signatureEstuve googleando y no encuentro solucion, les dejo el codigo, que lo tome prestado de AFIP$tra='TRA.xml';$tratmp='TRA.tmp';$key='afip/pedido.key';$crt='afip/privada.crt';(linea 80 del error)$STATUS=openssl_pkcs7_sign($tra, $tratmp, $crt,array($key, constant('PASSPHRASE')),array(),!PKCS7_DETACHED);[constant('PASSPHRASE')]->'xxxxxxx' (no se que va aca, es la constante por defecto)Muchas Gracias!!SaludosAriel Loffreda
El domingo, 16 de junio de 2013 19:00:56 UTC-3, Julian escribió:Xava,Ante todo, mil gracias por la contribucion.Probe tu codigo y wsaa funciona, pero wsfe me da el siguiente error (en response-FEAutRequest.xml al habilitarle el modo debug)FEAutRequest@SRV_RA: Usuario no autorizado a realizar esta operacion. ValidacionDeToken: No apareció CUIT en lista de relaciones: 2147483647
Sin embargo, no tengo ni idea de donde sale ese CUIT, ya que no corresponde con el mio.Alguna idea?Gracias de antemano,
Julian
On Thursday, 13 October 2011 02:13:38 UTC+2, xava * wrote:hacer esto, es una rompida de huevosBasicamente son dos clases,afip/wsaa.class.php
afip/wsfe.class.php
en el archivo index.php hay un ejemplo de como se usan,el codigo esta basado en los ejemplos oficiales de la AFIP, para poder usarlo tienen que pedir unos certificados por mail a la AFIP (lo hizo mi amigo, no se donde es pero busquen que debe estar facil) una vez que tienen los certifcados los guardan dentro de la carpeta keys/cualquier duda pregunten,la clase wsfe no tiene soporte para envio en lotes de facturas (comprobantes) pero es facil de implementarlo si no necesitanaclaro, antes que nada, que todo puede estar mucho mejor, soy conciente de eso, pero tenia que sacarlo rapido asi que ahi quedo, aunque aun le sigo trabajando detalles
espero les sirva!
adjunto algunos links de interes (si no van a safar de leer)
información técnica oficial sobre servicios web
Es raro porque el address location está bien y no tengo firewall y además me da el mismo error desde 2 pc distintas, así que puede ser algo en el crt y/o key, ya no se que hacer
El lunes, 6 de julio de 2015, 15:00:18 (UTC-3), Gerardo Gorelik Zonis escribió:el request esta bien... no veo nada raro.
fijate lo siguiente.. en el wsaa.wsdl
si te figura la url <wsdlsoap:address location="https://wsaahomo.afip.gov.ar/ws/services/LoginCms"/>
si esta bien.. lo unico que se me ocurre que tengas algun firewall que te bloquee
El lunes, 6 de julio de 2015, 12:10:01 (UTC-3), Marcos Piñero escribió:Response vacio y request
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://wsaa.view.sua.dvadac.desein.afip.gov"><env:Body><ns1:loginCms><ns1:in0>
MIIG1wYJKoZIhvcNAQcCoIIGyDCCBsQCAQExCzAJBgUrDgMCGgUAMIIBIgYJKoZI
hvcNAQcBoIIBEwSCAQ88P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/Pg0KPGxvZ2luVGlja2V0UmVxdWVzdCB2ZXJzaW9uPSIxLjAiPjxoZWFkZXI+
PHVuaXF1ZUlkPjE0MzYxOTQ2NTI8L3VuaXF1ZUlkPjxnZW5lcmF0aW9uVGltZT4y
MDE1LTA3LTA2VDExOjU2OjMyLTAzOjAwPC9nZW5lcmF0aW9uVGltZT48ZXhwaXJh
dGlvblRpbWU+MjAxNS0wNy0wNlQxMTo1ODozMi0wMzowMDwvZXhwaXJhdGlvblRp
bWU+PC9oZWFkZXI+PHNlcnZpY2UvPjwvbG9naW5UaWNrZXRSZXF1ZXN0Pg0KoIID
tjCCA7IwggKaoAMCAQICCBGBVJcLX6xlMA0GCSqGSIb3DQEBBQUAMEMxJTAjBgNV
BAMMHEFGSVAgVGVzdGluZyBDb21wdXRhZG9yZXMgQ0ExDTALBgNVBAoMBEFGSVAx
CzAJBgNVBAYTAkFSMB4XDTE1MDcwMzIyMjcxOFoXDTE4MDMyOTIyMjcxOFowUDEV
MBMGA1UEAwwMbWF0cmljdWxhZG9zMRkwFwYDVQQFExBDVUlUIDIwMjUxNzQ4MDU2
MQ8wDQYDVQQKDAZjb2RuZXQxCzAJBgNVBAYTAkFSMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDDj0sLs96uxuKk09t8zR2h0UiqGz8b7QMrXIU508OXamB3yJxv
E5q8i+VYFeZU4sITFnZ9H8hbisnJ+ypON74QghNwykQhvtEE0ds6wmIGbtnu4kvQ
J94sTa0QN4HEHQ43uyCAmey+bK78EawDbO/B6SbIL20vPaH1zGJKkAaWXwIDAQAB
o4IBHzCCARswDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0OBBYE
FDMCpZS2SK6y7ZbvWrrfWHw4d/NiMB8GA1UdIwQYMBaAFER07rScJt9W4cEN61cL
kBk2PZYBMIG6BgNVHSAEgbIwga8wgawGDisGAQQBgbtjAQIBAgEBMIGZMIGWBggr
BgEFBQcCAjCBiR6BhgBDAGUAcgB0AGkAZgBpAGMAYQBkAG8AIABwAGEAcgBhACAA
YwBvAG0AcAB1AHQAYQBkAG8AcgBlAHMAIABzAG8AbABvACAAdgBhAGwAaQBkAG8A
IABlAG4AIABlAG4AdABvAHIAbgBvAHMAIABkAGUAIABkAGUAcwBhAHIAcgBvAGwA
bABvMA0GCSqGSIb3DQEBBQUAA4IBAQA5dUab7gu1CYwMnPygw+KsZuqiMRPg3XP5
41IlmBKO/4XQtS0N/+3Gjk8OG/o/C/uBxR2HjwQQkwXqeQY5tdm5irESCnfXuwmf
Ex+dSlZ6B842LUmE8CttXTOPsO62Njtp7HpPMGlEsmy31jGRmbQCPuJkbCrYizZv
hR+D4FbpM5kdfOKuhM5JjexDnsVB6WX83lBEA3wsCH+be5RI69yrO5G6O1XRBsnA
oSp7yo/l9x6R9erHLxE/qXk2FUXvGUrrH5L1TqP1CAIwFn01gUoysdYB7ecYdKI4
reDn8wUbdLgJLYmc6J4CRA7b/jjcZfXwESQJaSi5ZLujEOGhdp0oMYIB0DCCAcwC
AQEwTzBDMSUwIwYDVQQDDBxBRklQIFRlc3RpbmcgQ29tcHV0YWRvcmVzIENBMQ0w
CwYDVQQKDARBRklQMQswCQYDVQQGEwJBUgIIEYFUlwtfrGUwCQYFKw4DAhoFAKCB
2DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNTA3
MDYxNDU3MzJaMCMGCSqGSIb3DQEJBDEWBBT4YDDqDVO72JDCjZiHm9RZtiV3QzB5
BgkqhkiG9w0BCQ8xbDBqMAsGCWCGSAFlAwQBKjALBglghkgBZQMEARYwCwYJYIZI
AWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIB
QDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkqhkiG9w0BAQEFAASBgCg2mwMv
CQAeXc+0qyoFkgQ0N0SPKCAhu432rwSSs+EManNohAR0fTNzlXeGtPwAGBL/iuSq
l7a10scSnR8QWJoF6Cpfjh+3uHOsJtKyqoQwk1sgCTZ0whBJzCXInFQHRXkNOJfg
/1O9fXudm807TZrjAD4PAeGpBjVqtZwuVzju
</ns1:in0></ns1:loginCms></env:Body></env:Envelope>
El lunes, 6 de julio de 2015, 12:04:36 (UTC-3), Gerardo Gorelik Zonis escribió:aja, pasame el request y response... asi puedo ver si tenes algo mal armado y que fue lo q te contesto
El lunes, 6 de julio de 2015, 11:47:21 (UTC-3), Marcos Piñero escribió:Si, 3 xml
request-loginCms.xml
response-loginCms.xml
TRA.xml
El lunes, 6 de julio de 2015, 11:40:33 (UTC-3), Gerardo Gorelik Zonis escribió:aja, y te sigue diciendo lo de Could not connect to host ...
si te fijas hay dos llamadas a la afip...
la primera es al wsaa para autenticar y luego al wsdl para utilizar alguna funcion
en el codigo que habia puesto anteriormente te va haciendo archivos de las conexiones.. te hace algun archivo??
El lunes, 6 de julio de 2015, 11:36:01 (UTC-3), Marcos Piñero escribió:Puedo acceder a esa dir, veo un WSDL
El lunes, 6 de julio de 2015, 11:25:13 (UTC-3), Gerardo Gorelik Zonis escribió:la dirección a probar.. que encontre varias veces caida es:
https://wswhomo.afip.gov.ar/wsfev1/service.asmx?WSDL
ahora esta funcionando :)
El lunes, 6 de julio de 2015, 10:33:48 (UTC-3), Marcos Piñero escribió:Si esta respuesta es para mi, ejecute https://wsaahomo.afip.gov.ar/ws/services/LoginCms en el navegador mi respondió:LoginCms
Hi there, this is an AXIS service!
Perhaps there will be a form for invoking the service here...
El domingo, 5 de julio de 2015, 16:50:04 (UTC-3), Gerardo Gorelik Zonis escribió:Perfecto lo que dice Tordek, proba directamente si anda la url.
Me ha pasado varias veces que esta caido.
Saludos
El sábado, 4 de julio de 2015, 15:38:21 (UTC-3), Tordek escribió:Tenés SOAP, pero no podés acceder a la URL del ws. ¿Qué pasa si tratás
de entrar a la URL directo con un navegador? Debería ser una de las
dos definidas en el archivo:
define ("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms");
define ("URL", "https://wsaa.afip.gov.ar/ws/services/LoginCms");
2015-07-04 13:50 GMT-03:00 Marcos Piñero <marcospi...@gmail.com>:
> Ejecuté por consola php -i y aparecen tanto el SOAP como el openssl
> Pero ejecuto php.exe -f wass-client.php y me dice:
> SOAP Fault: HTTP
> Could not connect to host
>
> Perdón por lo rompe bolas
>
>
> El viernes, 3 de julio de 2015, 19:49:16 (UTC-3), Gerardo Gorelik Zonis
> escribió:
>>
>> tene en cuenta lo siguiente para ejecutar por consola.
>>
>> tener el php.exe definido como variable global, asi podes ejecutarlo desde
>> cualquier ubicacion.
>>
>> hacer phpinfo desde la consola ... php.exe phpinfo.php >> info.txt .. y
>> ahi fijate si tenes habilitado el soap y el openssl .. utilizan diferentes
>> php.ini el de consola y el del navegador.
>>
>> saludos
>>
>> El viernes, 3 de julio de 2015, 19:45:50 (UTC-3), Marcos Piñero escribió:
>>
>> Ahh, no, lo pruebo en Firefox, capaz que es eso?
>>
>> El viernes, 3 de julio de 2015, 19:43:47 (UTC-3), Gerardo Gorelik Zonis
>> escribió:
>>
>> si, es el nombre del archivo key, pero lo definis para hacer la conexion,
>> no para ubicar ese archivo.
>>
>> Hiciste todos los pasos sin inconveniente? lo estas haciendo sobre SO
>> windows y lo corres por consola de DOS ?
>>
>>
>>
>> El viernes, 3 de julio de 2015, 19:34:36 (UTC-3), Marcos Piñero escribió:
>>
>> O sea que es el nombre del archivo key?
>>
>> Gracias por tu respuesta
...
--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a php-arg+u...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/php-arg.
Para obtener más opciones, visita https://groups.google.com/d/optout.
en las respuestas de los webservices se ven los nombres de los servers y, si, hay un avaricia. (esperemos tengan mas de 7 servers)
Hola gente, buen día. Una consulta, llevo unos días leyendo y tratando de que la AFIP me tire algo de data, pero nada.
Me gustaría saber como funciona este servicio de WS, si puede acceder cualquiera o solo los que son auto impresores. Particularmente, mi sistema es para una pequeña empresa, la cual no es auto impresor. Si alguien me da una mano, lo agradezco
Saludos.
Alejandro
Tenés que agregar el permiso wsfe al certificado que estas usando, desde el sitio de la afip (acordate que se hace en la configuración de certificados de pruebas).
--
Es exactamente como dice Tordek, salvo que para facturar "de verdad" no necesitas ir a la afip. Solo agregar la relacion del certificado como representante y listo ( te va a mostrar el alias que elegiste como nombre del representante). Necesitas clave fiscal nivel 3.
y logicamente dar de alta el punto de venta para webservice.
te recomiendo hacer muchas pruebas en homologacion antes de ir a productivo para poder cubrir todas las posibles respuestas del webservice.
Saludos.
--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a php-arg+u...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/php-arg.
Para obtener más opciones, visita https://groups.google.com/d/optout.
--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Marcos tengo el mismo problema .. me aparecesoap fault: HTTP
Could not connect to host
y tampoco puedo solucionarlo ... si encontraste solucion plis ayuda!gracias
El lunes, 15 de agosto de 2011, 10:48:47 (UTC-3), Xava escribió:Hola a todos,
me estoy metiendo en esto de la factura electronica, que tengo que
desarrollar prontamente en php corriendo bajo linux
vi que hay varias libs, como afipws y otraspero no queria arrancar si pedir un consejo por aca,
recomiendan alguna otra lib? cosas a tener en cuenta? experiencias?Gracias!
Deshabilitá el proxy en la configuración.
--
Saludos Cordiales.-Hola Misael,gracias por responder. Ahi lo estoy consultando a Mariano por mail si su desarrollo corre bajo linux.Marcelo Argüello
Ingeniero en Sistemas de Información
0351-3275330 · marcelo....@gmail.com
Socio fundador de MakeIT-COOP
marcelo....@makeit.coop · www.makeit.coop![]()
El 18 de abril de 2015, 12:23, Misael <misae...@gmail.com> escribió:Hola Marcelo, como estas ?.
Hecha un vistazo por acá: https://github.com/reingart/pyafipws
Yo todavía no me puse de lleno con esto, pero aparentemente funciona.
La posibilidad de emitir facturas con PHP mediante un framework de facturación desarrollado en Python (pyafipws) utilizando el comando exec.
Es un trabajo que realizo Mariano Reingart, que por cierto en la pagina http://www.sistemasagiles.com.ar/ dan soporte comercial a todo esto.Saludos.
El miércoles, 15 de abril de 2015, 10:14:45 (UTC-3), Marcelo Arguello escribió:Hola gente,
me sumo a la consulta de Misael. Ademas quisiera saber si alguien hizo implementaciones en servidores linux, ya que necesito desarrollar un módulo que me permita realizar facturas electrónicas. Hasta donde vi PyAfipWs corre bajo windows y los modulos que provee afip tambien (me equivoco?).
Si alguien está trabajando en algun desarrollo para este tema, avise que me interesa sumarme.
Saludos Cordiales.-
Ing. Argüello Marcelo.-
El jueves, 9 de abril de 2015, 14:27:39 (UTC-3), Misael escribió:Hola Xava, quisiera saber si pudiste hacer funcionar la facturación electrónica de la afip.Disculpame que se que este mensaje es muy viejo, pero me estoy rompiendo la cabeza con todo esto y lei que vos habias podido desarrollar unas Clases propias.Desde ya muchas gracias!!Saludos.
El miércoles, 12 de octubre de 2011, 11:37:26 (UTC-3), Xava escribió:si Muchas Gracias Nachito,
ya esta resuelto, termine armando un par de clases propias para la
coneccion con WSAA y WSFE,
si alguien las llega a necesitar avise!
On Oct 8, 8:46 pm, nachi77o <nacholang...@gmail.com> wrote:
> revisaste la doc oficial de la afip? hay un ejemplito en php
>
> http://www.afip.gov.ar/ws/#WSFeDet
>
> Exitos!
>
> On 15 ago, 10:48, "* du!" <xav...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Hola a todos,
> > me estoy metiendo en esto de la factura electronica, que tengo que
> > desarrollar prontamente en php corriendo bajo linux
> > vi que hay varias libs, como afipws y otras
>
> > pero no queria arrancar si pedir un consejo por aca,
> > recomiendan alguna otra lib? cosas a tener en cuenta? experiencias?
>
> > Gracias!
--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Grupo PHP Argentina" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/php-arg/lJ_PQshAaLU/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a php-arg+u...@googlegroups.com.
#==============================================================================
function CallWSAA($CMS)
{
$client=new SoapClient(WSDL, array(
'proxy_host' => PROXY_HOST,
'proxy_port' => PROXY_PORT,
'soap_version' => SOAP_1_2,
'location' => URL,
'trace' => 1,
'exceptions' => 0
));
$results=$client->loginCms(array('in0'=>$CMS));
file_put_contents("request-loginCms.xml",$client->__getLastRequest());
file_put_contents("response-loginCms.xml",$client->__getLastResponse());
if (is_soap_fault($results))
{exit("SOAP Fault: ".$results->faultcode."\n".$results->faultstring."\n");}
return $results->loginCmsReturn;
}
#==============================================================================
function ShowUsage($MyPath)
{
printf("Uso : %s Arg#1 Arg#2\n", $MyPath);
printf("donde: Arg#1 debe ser el service name del WS de negocio.\n");
printf(" Ej.: %s wsfe\n", $MyPath);
}
#==============================================================================
ini_set("soap.wsdl_cache_enabled", "0");
if (!file_exists(CERT)) {exit("Failed to open ".CERT."\n");}
if (!file_exists(PRIVATEKEY)) {exit("Failed to open ".PRIVATEKEY."\n");}
if (!file_exists(WSDL)) {exit("Failed to open ".WSDL."\n");}
if ( $argc < 2 ) {ShowUsage($argv[0]); exit();}
$SERVICE=$argv[1];
CreateTRA($SERVICE);
$CMS=SignTRA();
$TA=CallWSAA($CMS);
if (!file_put_contents("TA.xml", $TA)) {exit();}
?>
El martes, 16 de junio de 2015, 8:33:00 (UTC-3), Daniel Lagamma escribió:
Les doy la solucion para el error "openssl_pkcs7_sign(): error getting private key ":
El archivo .tmp debe existir, asi que mi solucion fue crear el .tmp sin datos:
$fp = fopen('TRA.tmp','w');
fwrite($fp,$asc);
fclose($fp);
...$STATUS=openssl_pkcs7_sign(realpath("TRA.xml") , realpath("TRA.tmp"), "file://". realpath(CERT) ,
array("file://". realpath(PRIV_KEY) , PASSPHRASE),
array(),
!PKCS7_DETACHED);
Saludos
El jueves, 24 de julio de 2014, 5:34:21 (UTC-3), Roberto C. Fernández G. escribió:Estimado Ariel, pudiste solucionar el error "openssl_pkcs7_sign(): error getting private key "?? si es asi, me podrias indicar como lo hiciste? desde ya muchas gracias.
El lunes, 5 de agosto de 2013 22:59:57 UTC-4, Ariel Loffreda escribió:
Gente, estoy entrando recien ahora en este tema de la Factura Electronica.Ante todo les comento que estoy intentando generar el ticket con el wsaa con php y sobre linux, asi que no tengo ningun com ni libreria externa para utilizar (al menos en debian no se como usarlas)Para poder generar el token con el wsaa, tengo mi crt y mi key, pero cuandor quiero generar el signTRA me devuelve el siguiente errorWarning: openssl_pkcs7_sign(): error getting private key in /var/www/fele/wsaa-client.class.php on line 80ERROR generating PKCS#7 signatureEstuve googleando y no encuentro solucion, les dejo el codigo, que lo tome prestado de AFIP$tra='TRA.xml';$tratmp='TRA.tmp';$key='afip/pedido.key';$crt='afip/privada.crt';(linea 80 del error)$STATUS=openssl_pkcs7_sign($tra, $tratmp, $crt,array($key, constant('PASSPHRASE')),array(),!PKCS7_DETACHED);[constant('PASSPHRASE')]->'xxxxxxx' (no se que va aca, es la constante por defecto)Muchas Gracias!!SaludosAriel Loffreda
El domingo, 16 de junio de 2013 19:00:56 UTC-3, Julian escribió:Xava,Ante todo, mil gracias por la contribucion.Probe tu codigo y wsaa funciona, pero wsfe me da el siguiente error (en response-FEAutRequest.xml al habilitarle el modo debug)FEAutRequest@SRV_RA: Usuario no autorizado a realizar esta operacion. ValidacionDeToken: No apareció CUIT en lista de relaciones: 2147483647
Sin embargo, no tengo ni idea de donde sale ese CUIT, ya que no corresponde con el mio.Alguna idea?Gracias de antemano,
Julian
On Thursday, 13 October 2011 02:13:38 UTC+2, xava * wrote:hacer esto, es una rompida de huevosBasicamente son dos clases,afip/wsaa.class.php
afip/wsfe.class.php
en el archivo index.php hay un ejemplo de como se usan,el codigo esta basado en los ejemplos oficiales de la AFIP, para poder usarlo tienen que pedir unos certificados por mail a la AFIP (lo hizo mi amigo, no se donde es pero busquen que debe estar facil) una vez que tienen los certifcados los guardan dentro de la carpeta keys/cualquier duda pregunten,la clase wsfe no tiene soporte para envio en lotes de facturas (comprobantes) pero es facil de implementarlo si no necesitanaclaro, antes que nada, que todo puede estar mucho mejor, soy conciente de eso, pero tenia que sacarlo rapido asi que ahi quedo, aunque aun le sigo trabajando detalles
espero les sirva!
adjunto algunos links de interes (si no van a safar de leer)
información técnica oficial sobre servicios web
--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a php-arg+u...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a php...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/php-arg.