Last active
May 29, 2018 00:43
-
-
Save estebandelaf/349824d3791d64e28210a9a624270b80 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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