greenter / consulta-cpe
PHP Client de Consulta Integrada de Comprobante de Pago - SUNAT.
Installs: 1 273
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 2
Forks: 6
Open Issues: 0
Requires
- php: >=7.1
- ext-curl: *
- ext-json: *
- guzzlehttp/guzzle: ^6.2 || ^7.3
Requires (Dev)
- phpstan/phpstan: ^0.12.51
- phpunit/phpunit: ^7.4
Suggests
- ext-mbstring: guzzle ^6, phpunit required
This package is auto-updated.
Last update: 2024-12-21 23:54:10 UTC
README
PHP Client para API de CONSULTA INTEGRADA DE COMPROBANTE DE PAGO expuesta por SUNAT.
Requerimientos
- PHP 7.1 o posterior
curl
extension habilitado.
Instalación
Utilizando Composer:
composer require greenter/consulta-cpe
Uso
Primero es necesario obtener el client_id
, client_secret
desde el portal de SUNAT, puedes seguir la guía oficial.
- Solicitud de token.
<?php $apiInstance = new \Greenter\Sunat\ConsultaCpe\Api\AuthApi( new \GuzzleHttp\Client() ); $grant_type = 'client_credentials'; // Constante $scope = 'https://api.sunat.gob.pe/v1/contribuyente/contribuyentes'; // Constante $client_id = 'client_id_example'; // client_id generado en menú sol $client_secret = 'client_secret_example'; // client_secret generado en menú sol try { $result = $apiInstance->getToken($grant_type, $scope, $client_id, $client_secret); echo 'Token: '.$result->getAccessToken().PHP_EOL; echo 'Expira: '.$result->getExpiresIn().' segundos'.PHP_EOL; } catch (Exception $e) { echo 'Excepcion cuando invocaba AuthApi->getToken: ', $e->getMessage(), PHP_EOL; }
No necesitas solicitar un token por cada consulta, puedes usar el mismo durante el tiempo de expiración, generalmente 3600 seg (1h).
- Consulta de CPE.
<?php // Token generado en el ejemplo anterior $token = 'xxxxxxxx'; $config = \Greenter\Sunat\ConsultaCpe\Configuration::getDefaultConfiguration()->setAccessToken($token); $apiInstance = new \Greenter\Sunat\ConsultaCpe\Api\ConsultaApi( new GuzzleHttp\Client(), $config->setHost($config->getHostFromSettings(1)) ); $ruc = '20000000001'; // RUC de quién realiza la consulta $cpeFilter = (new \Greenter\Sunat\ConsultaCpe\Model\CpeFilter()) ->setNumRuc('20000000001') // RUC del emisor ->setCodComp('01') // Tipo de comprobante ->setNumeroSerie('F001') ->setNumero('1') ->setFechaEmision('20/10/2020') ->setMonto('100.00'); try { $result = $apiInstance->consultarCpe($ruc, $cpeFilter); if (!$result->getSuccess()) { echo $result->getMessage(); return; } $data = $result->getData(); switch ($data->getEstadoCp()) { case '0': echo 'NO EXISTE'; break; case '1': echo 'ACEPTADO'; break; case '2': echo 'ANULADO'; break; case '3': echo 'AUTORIZADO'; break; case '4': echo 'NO AUTORIZADO'; break; } echo PHP_EOL.'Estado RUC: '.$data->getEstadoRuc(); echo PHP_EOL.'Condicion RUC: '.$data->getCondDomiRuc(); } catch (Exception $e) { echo 'Excepcion cuando invocaba ConsultaApi->consultarCpe: ', $e->getMessage(), PHP_EOL; }
Tabla de códigos
Tipo de comprobante
Estado del comprobante (Códigos devuelto en $data->getEstadoCp()
)
Estado del contribuyente (Códigos devuelto en $data->getEstadoRuc()
)
Condición de Domicilio del Contribuyente (Códigos devuelto en $data->getCondDomiRuc()
)
FAQ
- ¿Puedo consultar los comprobantes de cualquier RUC con el mismo
client_id
?
Solo se pueden consultar los comprobantes en donde el RUC que generó elclient_id
, fue emisor o receptor.