Hola, estoy intentando recuperar un CDR en producción con el ejemplo (https://greenter.dev/packages/ws/#consulta-cdr) pero obtengo este resultado (v4.3.1):
object(Greenter\Model\Response\Error)#1588 (2) { ["code":protected]=> string(6) "Client" ["message":protected]=> string(64) "Function ("getStatusCdr") is not a valid method for this service" }
El código es el mismo del ejemplo:
` $urlService = 'https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService?wsdl';
$soap = new SoapClient();
$soap->setService($urlService);
$soap->setCredentials('user', 'pass');
$service = new ConsultCdrService();
$service->setClient($soap); //en el ejemplo dice $client, debe ser $soap
$result = $service->getStatusCdr('ruc', $invoice->type, $invoice->serie, $invoice->numero);
if (!$result->isSuccess()) {
var_dump($result->getError());
return;
}
$cdr = $result->getCdrResponse();
if ($cdr === null) {
echo 'CDR no encontrado, el comprobante no ha sido comunicado a SUNAT.';
return;
}
// file_put_contents('R-20000000001-01-F001-1.zip', $result->getCdrZip());
var_dump($cdr);`
Yo lo tengo implementado de la siguiente forma y si funciona (pensé que era problema en algún parámetro):
`$wsdl = 'https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService?wsdl';
$client = new SoapClient($wsdl, array(
'cache_wsdl' => WSDL_CACHE_NONE,
'trace' => true,
'exceptions' => true,
'soap_version' => SOAP_1_1,
));
$client->__setSoapHeaders(new WSSESecurityHeader('sunat_user, 'sunat_password));
$filename = 'RUC' . '-' . $invoice->type . '-' . $invoice->serie . '-' . $invoice->number . ".zip";
$params = [
'rucComprobante' => 'ruc',
'tipoComprobante' => $invoice->type,
'serieComprobante' => $invoice->serie,
'numeroComprobante' => $invoice->number ,
];
try {
$response = $client->__soapCall('getStatusCdr', ['parameters' => $params]);
isset($response->statusCdr->content) ? file_put_contents(storage_path() . $filename, $response->statusCdr->content) : '';
$result = (object) [
'statusCode' => $response->statusCdr->statusCode,
'statusMessage' => $response->statusCdr->statusMessage,
'cdr' => $filename
];
var_dump($result);
} catch (\SoapFault $e) {
var_dump($e->getMessage());
}`
resultado:
object(stdClass)#1589 (3) { ["statusCode"]=> string(4) "0004" ["statusMessage"]=> string(20) "La constancia existe" ["cdr"]=> string(27) "RUC-01-FE01-388.zip" }
Pero claro aquí tengo que descomprimir/leer el cdr manualmente y greenter hace esto mas fácil.
¿Pueda que este pasando algo por alto?