Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consulta de ticket de modo prueba #82

Closed
brandon305 opened this issue May 19, 2020 · 12 comments
Closed

Consulta de ticket de modo prueba #82

brandon305 opened this issue May 19, 2020 · 12 comments

Comments

@brandon305
Copy link

Saludos , este es el código que estoy probando para dar de baja a una factura , no tengo problemas con la generación del xml y me muetra un ticket , pero en la función getStatus($ticket) me devuelve el mensaje 'Service Temporarily Unavailable' .... es esto normal porque no estoy en producción o algo estoy fallando en mi código.

`<?php

use Greenter\Model\Client\Client;
use Greenter\Model\Company\Company;
use Greenter\Model\Company\Address;
use Greenter\Model\Sale\Invoice;
use Greenter\Model\Sale\SaleDetail;
use Greenter\Model\Sale\Legend;

use Greenter\Model\Voided\Voided;
use Greenter\Model\Voided\VoidedDetail;
use Greenter\Ws\Services\SunatEndpoints;
use Greenter\Ws\Services\ConsultCdrService;
use Greenter\Ws\Services\SoapClient;

require DIR . '/vendor/autoload.php';
$see = require DIR.'/config.php';

// Emisor
$address = new Address();
$address->setUbigueo('150101')
->setDepartamento('LIMA')
->setProvincia('LIMA')
->setDistrito('LIMA')
->setUrbanizacion('NONE')
->setDireccion('AV LS');

$company = new Company();
$company->setRuc('20000000001')
->setRazonSocial('EMPRESA SAC')
->setNombreComercial('EMPRESA')
->setAddress($address);

$detial1 = new VoidedDetail();
$detial1->setTipoDoc('01')
->setSerie('F001')
->setCorrelativo('1')
->setDesMotivoBaja('ERROR EN CÁLCULOS');

$voided = new Voided();
$voided->setCorrelativo('00112')
->setFecGeneracion(new \DateTime('-3days'))
->setFecComunicacion(new \DateTime('-1days'))
->setCompany($company)
->setDetails([$detial1]);

$result = $see->send($voided);

// Guardar XML
file_put_contents($voided->getName().'.xml',
$see->getFactory()->getLastXml());
if (!$result->isSuccess()) {
var_dump($result->getError());
exit();
}

$ticket = $result->getTicket();
echo 'Ticket :' . $ticket .'';

$result = $see->getStatus($ticket);
if (!$result->isSuccess()) {
var_dump($result->getError());
return;
}

$result = $see->getStatus($ticket);
print_r($result);
`

@giansalex
Copy link
Member

Hola @brandon305, a veces puede ocurrir eso, lo servicios de sunat pueden estar inactivos. Vuelve a intentar.

@brandon305
Copy link
Author

Hoy volví a probar y la sunat me sigue devolviendo 'Service Temporarily Unavailable' en $see->getStatus($ticket);

Entonces es error de los servicios de ellos ? , ya que si me devuelve un número de ticket antes de consultar su estado.

@giansalex
Copy link
Member

giansalex commented May 20, 2020

Es raro, por que en la demo live, no ocurre es problema.
Estas probando desde windows o linux?

@brandon305
Copy link
Author

brandon305 commented May 20, 2020

Windows en modo prueba
image

@brandon305
Copy link
Author

Lo que quiero dar de baja es una factura , por eso es $detial1->setTipoDoc('01') , correcto ?

@giansalex
Copy link
Member

Si, ese es el tipo para factura.
Prueba este codigo.

<?php

require 'vendor/autoload.php';

use Greenter\Ws\Services\SoapClient;
use Greenter\Ws\Services\ExtService;

$urlService = 'https://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService';
$soap = new SoapClient();
$soap->setService($urlService);
$soap->setCredentials('20000000001MODDATOS', 'moddatos'); 
$sender = new ExtService();
$sender->setClient($soap);

$result = $sender->getStatus('1589988459441');

print_r($result);

Deberia retornarte un codigo de error 0127.

@brandon305
Copy link
Author

exacto me reporto ese error , entonces en que estoy fallando :( , en mi codigo

@giansalex
Copy link
Member

No me percate, pero estas llamando 2 veces getStatus, borra la ultima linea $result = $see->getStatus($ticket);

@brandon305
Copy link
Author

claro eso ya lo borre , pero ese error lo bota en
if (!$result->isSuccess()) {
var_dump($result->getError());
return;
}

@giansalex
Copy link
Member

He probado en varios lados y no tengo ese problema, verifica que estés usando esta url de servicio https://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService y si persite también verifica si aparece ese problema levantando la demo

@brandon305
Copy link
Author

Al final hice un híbrido de nuestros dos códigos jeje y salio. Estaba usando esto config.php
$see = new See();
$see->setService(SunatEndpoints::FE_BETA);
$see->setCertificate(file_get_contents(DIR.'/certificate.pem'));
$see->setCredentials('20000000001MODDATOS'/ruc+usuario/, 'moddatos');

en tu código ya no este necesario poner el certificado en tu variable $soap , no ?
bueno comparto mi código final , aunque esta desordenado , pero es para ir haciendo pruebas

`<?php

use Greenter\Model\Client\Client;
use Greenter\Model\Company\Company;
use Greenter\Model\Company\Address;
use Greenter\Model\Sale\Invoice;
use Greenter\Model\Sale\SaleDetail;
use Greenter\Model\Sale\Legend;

use Greenter\Model\Voided\Voided;
use Greenter\Model\Voided\VoidedDetail;
use Greenter\Ws\Services\SunatEndpoints;
use Greenter\Ws\Services\ConsultCdrService;
use Greenter\Ws\Services\SoapClient;
use Greenter\Ws\Services\ExtService;

require DIR . '/vendor/autoload.php';
$see = require DIR.'/config.php';

// Emisor
$address = new Address();
$address->setUbigueo('150101')
->setDepartamento('LIMA')
->setProvincia('LIMA')
->setDistrito('LIMA')
->setUrbanizacion('NONE')
->setDireccion('AV LS');

$company = new Company();
$company->setRuc('20000000001')
->setRazonSocial('EMPRESA SAC')
->setNombreComercial('EMPRESA')
->setAddress($address);

$detial1 = new VoidedDetail();
$detial1->setTipoDoc('01')
->setSerie('F001')
->setCorrelativo('1')
->setDesMotivoBaja('ERROR EN CÁLCULOS');

$voided = new Voided();
$voided->setCorrelativo('00112')
->setFecGeneracion(new \DateTime('-3days'))
->setFecComunicacion(new \DateTime('-1days'))
->setCompany($company)
->setDetails([$detial1]);

$result = $see->send($voided);

// Guardar XML
file_put_contents($voided->getName().'.xml',
$see->getFactory()->getLastXml());
if (!$result->isSuccess()) {
var_dump($result->getError());
exit();
}

$ticket = $result->getTicket();
echo 'Ticket :' . $ticket .'';

$urlService = 'https://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService';
$soap = new SoapClient();
$soap->setService($urlService);
$soap->setCredentials('20000000001MODDATOS', 'moddatos');
$sender = new ExtService();
$sender->setClient($soap);

$result = $sender->getStatus($ticket);
if (!$result->isSuccess()) {
var_dump($result->getError());
return;
}

echo $result->getCdrResponse()->getDescription();
file_put_contents('R-'.$voided->getName().'.zip', $result->getCdrZip());`

@giansalex
Copy link
Member

El certificado es solo para firmar el XML, para soap solo se necesita credenciales (clave SOL).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants