Skip to content

Instantly share code, notes, and snippets.

@estebandelaf
Last active May 29, 2018 00:43
Show Gist options
  • Save estebandelaf/349824d3791d64e28210a9a624270b80 to your computer and use it in GitHub Desktop.
Save estebandelaf/349824d3791d64e28210a9a624270b80 to your computer and use it in GitHub Desktop.
/**
* Servicio web para recibir una notificación de pago de LibreDTE
*/
// configuración auth en LibreDTE
$emisor = 76192083; // RUT sin puntos ni DV
$hash = ''; // en perfil del usuario
$user = ''; // definido en la config del servicio web en LibreDTE
$pass = ''; // definido en la config del servicio web en LibreDTE
// verificar si la consulta tiene las credenciales válidas
if (!auth_check($user, $pass)) {
die('Usuario no autenticado o credenciales incorrectas');
}
// recibir datos del servicio web y extraer EnvioDTE o EnvioBOLETA
$cobro_informado = json_decode(file_get_contents('php://input'), true);
if (!$cobro_informado) {
die('No se recibió datos del cobro');
}
// verificar que el cobro efectivamente esté pagado
$LibreDTE = new \sasco\LibreDTE\SDK\LibreDTE($hash);
$cobro = $LibreDTE->get('/pagos/cobros/info/'.$cobro_informado['codigo'].'/'.$emisor);
if ($cobro['status']['code']!=200) {
die('Error al realizar la consulta del cobro: '.$cobro['body']);
}
$Cobro = (object) $cobro['body'];
// si el cobro está pagado (esto realmente asegura que está pagado, ya que se consultó a LibreDTE)
if ($Cobro->pagado) {
// TODO: hacer lo que se requiera con el cobro
print_r($Cobro);
}
// función que verifica las credenciales
function auth_check($user, $pass)
{
if (!$user && !$pass) {
return true;
}
$headers = apache_request_headers();
if (empty($headers['Authorization'])) {
return false;
}
list($basic, $Authorization) = explode(' ', $headers['Authorization']);
list($u, $p) = explode(':', base64_decode($Authorization));
return $u == $user && $p == $pass;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment