Re: [php-arg] Re: Afip y Factura electronica

2,882 views
Skip to first unread message

Lic. Nicolas Machado

unread,
Jul 15, 2015, 1:19:42 PM7/15/15
to php...@googlegroups.com, xa...@00101010.com.ar, jul...@coccia.com
Gracias !!
tenia el mismo problema y me ayudaste a solucionarlo !

Saludos
PD: Como dato adcional, les cuento que los archivos los genero en un linux y los utilizo desde windows, asi que si algun tiene el problema y cree que es por ahi, no lo es.

Saludos

El viernes, 3 de julio de 2015, 19:09:53 (UTC-3), Gerardo Gorelik Zonis escribió:
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 error

Warning: openssl_pkcs7_sign(): error getting private key in /var/www/fele/wsaa-client.class.php on line 80

ERROR generating PKCS#7 signature

Estuve 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!!
Saludos


Ariel 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 huevos

Basicamente 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 necesitan

aclaro, 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
...

Lic. Nicolas Machado

unread,
Jul 15, 2015, 1:19:42 PM7/15/15
to php...@googlegroups.com
Hola,
resolvi el tema del Certificado, pero me ocurre lo mismo con el error de HTTP.
mi conexion es hogareña, asi que casi salgo directamente a internet,
si accedo desde el navegador me da el mensaje de bienvenida.

Es seguro que no es un problema de claves y vertificados ?

Saludos

El lunes, 6 de julio de 2015, 15:31:29 (UTC-3), Marcos Piñero escribió:
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://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
...

Lic. Nicolas Machado

unread,
Jul 15, 2015, 1:50:22 PM7/15/15
to php...@googlegroups.com
Hola
tenia el mismo error,
saque los parametros de PROXY ! y ahora paso ese punto.
Me da un error de
        (
            [exceptionName] => gov.afip.desein.dvadac.sua.view.wsaa.LoginFault
            [hostname] => lujuria.afip.gov.ar
        )

)
SOAP Fault: ns1:cms.cert.untrusted
Certificado no emitido por AC de confianza

Tordek

unread,
Jul 15, 2015, 8:31:56 PM7/15/15
to php...@googlegroups.com
> [hostname] => lujuria.afip.gov.ar
Wat

> Certificado no emitido por AC de confianza

¿Generaste un certificado en la página de la AFIP **para certificados
de homologación**? ¿Estás usando el server de homologación?

Andrés Morales

unread,
Jul 16, 2015, 4:08:14 PM7/16/15
to php...@googlegroups.com
OT: lujuria?? es porque nos la están ponien... digo, no? ja


--
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.

Tordek

unread,
Jul 16, 2015, 9:37:52 PM7/16/15
to php...@googlegroups.com
¿El servidor central será Avaricia?
> Para publicar en este grupo, envía un correo electrónico a
> Para acceder a más opciones, visita https://groups.google.com/d/optout.

Federico Arriola

unread,
Jul 17, 2015, 1:24:23 AM7/17/15
to php...@googlegroups.com

en las respuestas de los webservices se ven los nombres de los servers y, si, hay un avaricia. (esperemos tengan mas de 7 servers)

Alejandro Briuschi

unread,
Jul 17, 2015, 8:45:09 AM7/17/15
to php...@googlegroups.com

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

Nicolas Grunfeld

unread,
Jul 20, 2015, 7:08:50 PM7/20/15
to php...@googlegroups.com
Hola Nico, pudiste hacerlo funcionar?

Yo no logré hacer andar el ejemplo:

No me queda claro si es necesario usar el proxy o no.

Si dejo el proxy y simplemente pongo mis datos (cert, key , etc) me genera el TRA, el request tambien pero el xml response queda vacio, y el script me devuelve:
SOAP Fault: HTTP Could not connect to host

Si le saco el proxy, me dice:
SOAP Fault: ns1:coe.notAuthorized Computador no autorizado a acceder al servicio

Y el response xml:

<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><soapenv:Fault><soapenv:Code xmlns:ns1="http://xml.apache.org/axis/"><soapenv:Value>ns1:coe.notAuthorized</soapenv:Value></soapenv:Code><soapenv:Reason><soapenv:Text xml:lang="en">Computador no autorizado a acceder al servicio</soapenv:Text></soapenv:Reason><soapenv:Detail><ns2:exceptionName xmlns:ns2="http://xml.apache.org/axis/">gov.afip.desein.dvadac.sua.view.wsaa.LoginFault</ns2:exceptionName><ns3:hostname xmlns:ns3="http://xml.apache.org/axis/">lujuria.afip.gov.ar</ns3:hostname></soapenv:Detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>

Tordek

unread,
Jul 21, 2015, 8:30:15 AM7/21/15
to php...@googlegroups.com

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).


--

Nicolas Grunfeld

unread,
Jul 21, 2015, 9:03:33 AM7/21/15
to php...@googlegroups.com
Yo saqué certificado X.509 desde el sitio afip, te referis a eso o algo mas?

Marcos Piñero

unread,
Jul 21, 2015, 10:26:28 AM7/21/15
to php...@googlegroups.com
A mi me anda el ejemplo ejecutandolo por consola, como se puede aplicar desde los navegadores?


El martes, 21 de julio de 2015, 9:30:15 (UTC-3), Tordek escribió:

Tordek

unread,
Jul 21, 2015, 4:04:10 PM7/21/15
to php...@googlegroups.com
On 21/07/15 10:03, Nicolas Grunfeld wrote:
> Yo saqué certificado X.509 desde el sitio afip, te referis a eso o algo mas?

Con el tema de la AFIP se manejan 2 certificados distintos para 2 ambientes distintos:

Para producción (para el sitio en vivo, con el que producís facturas de verdad) tenés que adherir a tu cuenta (con tu clave fiscal, en la sección "Administrador de Relaciones de Clave Fiscal") el servicio "Administración de Certificados Digitales", y realizar un trámite en las oficinas de la AFIP para validar un certificado "de verdad" (si no me equivoco; este paso yo no lo hice porque solo usé lo que explico en la segunda parte de este mail). Posteriormente tenés que activar (en el mismo lugar) el servicio "Factura Electrónica". Ahora tenés una cuenta que puede hacer facturas (de verdad). (Para esto usás la URL "servicios1..."; acordate: son facturas de verdad por las cuales pagás impuestos).

Por otro lado, para TESTING (homologación, en la documentación de la AFIP) tenés que agregarte (de nuevo, con clave fiscal y en "Administrador de Relaciones") el servicio "WSASS - Autogestión Certificados Homologación", con el que te hacés un certificado (que debería ser el que tenés, a nombre de Testing Computadores). Finalmente te vas (de nuevo con tu clave fiscal) a la sección "WSASS - Autogestión Certificados Homologación" y ahí elegís "Crear autorización a servicio". Elegís "WSFE" (o el WS que quieras consumir) para otorgarle a ese certificado la posibilidad de consumir WSFE. (Para esto usás la URL "wsaahomo..."; esto es para pruebas, las facturas que armes acá no cuentan).

P.D.: si tenés un proxy, usá un proxy; si no tenés un proxy, desactivá las opciones de proxy. Si no sabés qué es un proxy, probablemente no tenés uno. El error de conexión es justamente que está tratando de acceder via proxy, pero como el proxy no existe, no se conecta a nada. El error de "computador no autorizado" te indica que se conectó... pero le falta la autorización (que arriba explico como activar).

--
Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
http://tordek.me :: http://twitter.com/tordek

Federico Arriola

unread,
Jul 21, 2015, 7:39:08 PM7/21/15
to php...@googlegroups.com

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.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Lucas Olivella

unread,
Jul 22, 2015, 10:52:52 AM7/22/15
to Grupo PHP Argentina
Amigos, 
estoy teniendo el problema de openssl_pkcs7_sign(): error getting private key

A ver si alguien puede orientarme.

con el opensll primero hice esto:
OpenSSL>genrsa -out ClaveGenerada 1024
esta es mi clave privada

OpenSSL> req -new -key ClaveGenerada -subj "/C=AR/O=lucas/CN=lucas/serialNumber=CUIT xxxxxxxxxxx" -out clave

esto envie a la afip para que me devuelva el certificado. 
mi PASSPHRASE esClaveGenerada

una vez con esto, cuando invoco a la funcion me da error. Aclaro que el .tmp lo genere por las dudas

   $fp = fopen('TRA.tmp','w');
            fwrite($fp,$asc);
            fclose($fp);

$STATUS=openssl_pkcs7_sign("TRA.xml", "TRA.tmp", $cert,
    array($clav, PASSPHRASE),
    array(),
    !PKCS7_DETACHED
    );


Marcos Piñero

unread,
Jul 22, 2015, 11:08:25 AM7/22/15
to Grupo PHP Argentina
Lo estas ejecutando en consola DOS?

Lucas Olivella

unread,
Jul 22, 2015, 11:14:21 AM7/22/15
to Grupo PHP Argentina
No, estoy probando en windows. Utilizo el wamp.

Marcos Piñero

unread,
Jul 22, 2015, 1:10:43 PM7/22/15
to Grupo PHP Argentina
Ejecuta el php desde cmd y asegurate que el tanto el php como el openssl estén como variables de windows, de todos modos esta es una pregunta para todos como se pueden aplicar estos ejemplos ejecutando los php desde los navegadores? 

Tordek

unread,
Jul 22, 2015, 4:41:03 PM7/22/15
to php...@googlegroups.com
2015-07-21 20:39 GMT-03:00 Federico Arriola <fed...@gmail.com>:
> 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.

¿No? Cuando estaba generando mi certificado me preguntó a qué centro
de la AFIP quería ir para los datos biométricos, y me dio fiaca y ahí
me di cuenta que había lo de homologación... ¿le erré, o qué onda?

> y logicamente dar de alta el punto de venta para webservice.

Ap, este no lo tenía, ¿sabés en qué sección?

--
Tordek

Tordek

unread,
Jul 22, 2015, 4:45:44 PM7/22/15
to php...@googlegroups.com
> cuando invoco a la funcion me da error

De nuevo: ¿Qué error?

> $fp = fopen('TRA.tmp','w');
> fwrite($fp,$asc);
> fclose($fp);

file_put_contents('TRA.tmp', $asc);

¿Qué hay en $cert? ¿Qué hay en $clav? Fijate el ejemplo en la
documentación de PHP:
https://secure.php.net/manual/en/function.openssl-pkcs7-sign.php El
nombre del certificado va "pelado"; pero el nombre de la clave pública
va con "file://..."
> --
> 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
> Para acceder a más opciones, visita https://groups.google.com/d/optout.

Federico Arriola

unread,
Jul 22, 2015, 6:47:26 PM7/22/15
to php...@googlegroups.com
Hola,

Claro,si te pidio los biométricos es porque tenes clave fiscal Nivel 1 o 2. Pero esto tambien es porque no se realizo el reempadronamiento (que era bastante obligatorio) hace, no recuerdo exactamente, un año. Si hacias ese reempadronamiento la Clave quedaba Nivel 3. Igual, no es nada grave, se puede resolver en la agencia AFIP en la que estás inscripto. (o también lo puede hacer tu contador).

Con respecto al punto de venta, tenes que asociar el servicio Gestión de Puntos de Venta (o A/B/M puntos de venta) y desde ahi podes gestionar los diferentes PDV que tenes asociados a tu cuit,  factuweb (que asi le llaman a las facturas de imprenta comunes), Controlador Fiscal, Comprobantes en Linea (para usar el aplicativo online AFIP) o Webservice (que es el que nos interesa).  

Una vez que das de alta el PDV, ahi ya podes emitir comprobantes electrónicos (ya que electornico sale por un pdv nuevo y empieza de cero.. si tenias manuales en 0001, electronico sera 0002). Igual esto es un tema más tributario, y a modo de disclaimer, ante cualquier duda consulte a su contador :)


Saludos.

--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.

Tordek

unread,
Jul 22, 2015, 8:07:47 PM7/22/15
to php...@googlegroups.com
:/ pero... yo entro a la pág de la AFIP y me dice que es nivel 3 (y yo
ya hice lo de los datos biométricos hace un tiempo).
> Para publicar en este grupo, envía un correo electrónico a
> Para acceder a más opciones, visita https://groups.google.com/d/optout.

* du!

unread,
Jul 23, 2015, 7:19:36 AM7/23/15
to Grupo PHP Argentina

Hola,

Muchas cosas pueden haber cambiado, revisen la documentacion. Es un dolor de huevo implementar cosas con la AFIP.

Saludos y Suerte! 
Xava.

On Thu, Jul 23, 2015 at 1:09 PM franco gasparini <francog...@gmail.com> wrote:
Marcos tengo el mismo problema .. me aparece 
soap 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 otras

pero no queria arrancar si pedir un consejo por aca,
recomiendan alguna otra lib? cosas a tener en cuenta? experiencias?

Gracias!

franco gasparini

unread,
Jul 23, 2015, 8:18:10 AM7/23/15
to Grupo PHP Argentina, xav...@gmail.com

Tordek

unread,
Jul 23, 2015, 4:02:59 PM7/23/15
to php...@googlegroups.com

Deshabilitá el proxy en la configuración.

--

Adrian Aloe

unread,
Jul 29, 2015, 3:18:33 PM7/29/15
to Grupo PHP Argentina, marcelo....@gmail.com
Hola Marcelo como estas? consulta, encontraste solucion para Linux? abrazo y gracias!

El sábado, 18 de abril de 2015, 13:14:16 (UTC-3), Marcelo Arguello escribió:
Hola Misael,
                   gracias por responder. Ahi lo estoy consultando a Mariano por mail si su desarrollo corre bajo linux.

Saludos Cordiales.-

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

 skype   linkedIn

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.

Alejandro Placereano

unread,
Aug 19, 2015, 1:05:50 PM8/19/15
to Grupo PHP Argentina, xa...@00101010.com.ar, jul...@coccia.com
Hola Gerardo, estuve viendo el codigo que pusiste aqui, lo probe, y me salta un error que no se como solucionarlo
es en esta linea, dice que no existe la variable, no esta declarada

$SERVICE = $argv[1]; // No existe $argv[1]

que podrá ser? gracias desde ya

#==============================================================================
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 error

Warning: openssl_pkcs7_sign(): error getting private key in /var/www/fele/wsaa-client.class.php on line 80

ERROR generating PKCS#7 signature

Estuve 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!!
Saludos


Ariel 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 huevos

Basicamente 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 necesitan

aclaro, 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
...

Tordek

unread,
Aug 19, 2015, 1:24:47 PM8/19/15
to php...@googlegroups.com
Significa que la variable, $argv, no está declarada.

$argv son los parámetros por línea de comando. Este script está hecho
para que lo llames como...

php wsaa.php wsfe

en ese caso, $argv tiene el valor: ["wsaa.php", "wsfe"]
> --
> 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,

Alejandro Placereano

unread,
Aug 19, 2015, 2:09:16 PM8/19/15
to Grupo PHP Argentina
Hola, soy medio nuevo en PHP y necesito hacer esto de facturacion electronica
tengo un sistema en VFP, con una parte en PHP, con la vista de mudarlo del todo a PHP de a poco, 
como manejo mejor los webservices en PHP decidi hacerlo en este lenguaje, para que ya quede hecho
pero me he encontrado con mil problemas

alguien me puede dar una mano?

ya tengo esto (son unos archivos que encontre y los bajé, le hice algunas modificaciones):

lo subo por adjunto
espero me puedan ayudar, lo que necesitaría es aunque sea una indicacion de como seguir
estoy re perdido

desde ya muchas gracias



El lunes, 15 de agosto de 2011, 10:48:47 (UTC-3), Xava escribió:
FAE.rar

Maximiliano Silva

unread,
Sep 19, 2015, 2:53:56 PM9/19/15
to Grupo PHP Argentina
Hola Chicos! Cómo andan? 

Estoy tratando de implementarle la factura electronica a un cliente y me está siendo imposible

Ejecuto estos comandos:

1) openssl genrsa -out CotillonOteroMiClavePrivada 1024
2) openssl req -new -key CotillonOteroMiClavePrivada -subj "/C=AR/O=Cotillon Otero/CN=CotillonOtero20150919/serialNumber=CUIT 20173678615" -out CotillonOteroCSR

Renombré el archivo CotillonOteroMiClavePrivada => CotillonOtero.key

Tomé el código del Sr Gerardo Zonis y me tira el error:

Warning: openssl_pkcs7_sign(): error getting private key in D:\xampp\htdocs\Factura\factura.php on line 39
ERROR generating PKCS#7 signature

Les adjunto lo que tengo hecho para probar.

PD: Ya di de alta con el csr en la afip y habilité el servicio wsfe


Saludos y gracias
Factura.rar

Tordek

unread,
Sep 19, 2015, 5:51:22 PM9/19/15
to php...@googlegroups.com
Hola, Maxi

No puedo verificar el error que tenés; descomprimí lo que subiste (excepto que no estaba wsdl.wsdl; puse la URL del ws en su lugar) y, así como está, funciona. Adjunto el resultado.

¿Tenías los archivos en el directorio que corresponde?

De paso, chivo descarado: https://bitbucket.org/tordek/afiphp


--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
1442698425.4639_results_AutRequest.txt
1442698425.4641_results_AutRequest_soap.txt

Maximiliano Silva

unread,
Sep 21, 2015, 10:00:59 AM9/21/15
to Grupo PHP Argentina
Muchísimas gracias Tordek!
Puede ser que los paths esten mal. Me podés pasar como lo probaste? Estoy renegando con esto hace una semana, hice 20 claves pensando que el problema estaba ahí. Tendrá algo que ver que lo estoy desarrollando en Windows?

Gracias

Tordek

unread,
Sep 21, 2015, 4:41:58 PM9/21/15
to php...@googlegroups.com
> Me podés pasar como lo probaste?

Todos los archivos están en el mismo directorio, y lo corrí con "php factura.php wsfe" desde el directorio donde estaba todo.


> Tendrá algo que ver que lo estoy desarrollando en Windows?

Lo dudo, pero la verdad que hace años que no toco PHP en Win, así que no te sabría decir.

Paula Piccini

unread,
Feb 24, 2016, 7:44:21 PM2/24/16
to Grupo PHP Argentina
Hola Alejandro,

Estoy viendo el código que adjuntaste "FAE.rar". Al ejecutarlo me tira Warning: openssl_pkcs7_sign(): error getting private key in C:\wamp\www\FAE\ClasesFAE\WSAA.class.php on line 43
Probé cambiar las rutas en el método signTRA() openssl_pkcs7_sign y en todos los casos me tira el mismo error.
También corrobore el tema del certificado y la key y están bien generadas ya que las probé en el código que está en la página de la afip en php y genera bien las respuestas.
Tenes idea que puede ser?

Muchas gracias

Tordek

unread,
Feb 24, 2016, 9:04:01 PM2/24/16
to php...@googlegroups.com
Hola, Paula: Te recomiendo probar mi proyecto en https://bitbucket.org/tordek/afiphp, que te explica como configurarlo.

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 en este grupo, envía un correo electrónico a php...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages