Bueno el asunto es un poco complicado y requiere de algo de experiencia sobre parseo de datos. Voy a intentar explicarlo todo pero en fin.. si dices que eres novato igual no entiendes algunas cosas.
Para empezar intenta olvidarte de ejecutar el javascript. En PHP eso es muy complejo e inútil. Pero si la pagina usa javascript y por tanto hace consultas con AJAX, puedes acceder directamente a la pagina a la que consulta con AJAX. En la herramienta de desarrollador de tu navegador hay una pestaña que se llama RED. Ahí puedes ver todas las consultas que se hacen. Si te fijas, hace un POST (GetTracking) a una pagina especifica.
Si vemos ese request, vemos que mandamos unos datos a esta URL:
http://www4.oca.com.ar/ocaepakNet/Views/ConsultaTracking/TrackingConsult.aspx/GetTracking
Y el dato es:
{'numberOfSend': '3867500000001111111'}
Por tanto, solo te hace falta simular la misma consulta POST para obtener los estados.
Ahora, lo que te devuelve es JSON en PHP lo puedes parsear fácilmente (json_decode) y obtener por tanto todos los estados. json_decode lo convierte a array y objeto y de ahí es fácil de manipular y solo haría falta recorrerlo y buscar el estado que querremos.
Puesto que tengo tiempo libre te dejo un código. Es un poco largo y si solo buscas saber si hay un estado o no hay otras formas mejores de hacerlo pero con este puedes obtener las fechas de actualización y todos los datos..
<?php
/**
* Obtiene los datos JSON de la pagina de tracking
* @param [integer] $id - Id del producto
* @return [json || bool]
*/
function obtener_pedido($id=null){
$url = 'http://www4.oca.com.ar/ocaepakNet/Views/ConsultaTracking/TrackingConsult.aspx/GetTracking';
CURLOPT_URL => $url,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => '{"numberOfSend": "'.$id.'"}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER
=> array( 'Accept: application/json, text/javascript, */*; q=0.01',
'X-Requested-With: XMLHttpRequest',
'Content-Type: application/json; charset=utf-8',
),
);
if(empty($json)){ return false; } return $json->d;
}
/**
* Filtra los estados del JSON para comprobar si un estado
* concreto existe. En caso de existir, lo deja en el JSON
* En caso contrario, lo elimina.
* @param [integer] $id - Id del producto
* @param [string] $estado - Estado a buscar
* @return [json || boolean]
*/
function estado_pedido($id,$estado=null){
$estados = obtener_pedido($id);
if(!$estados){ return false; }
foreach($estados as $id=>$state){
if(trim($state->State) !== $estado){ }
}
return (empty($estados) ?
false : end($estados)); }
/* Ejemplos */
/* Comprobamos si el estado 'Vista a domicilio en curso' esta presente */
$estado = estado_pedido('3867500000001111111','Vista a domicilio en curso');
echo 'Pronto se entregara su producto'.PHP_EOL;
echo 'Fecha: '.$estado->DateShow;
}
/* Otro ejemplo */
$estado = estado_pedido('3867500000001111111','Entregado');
echo 'El producto ha sido entregado'.PHP_EOL;
echo 'Fecha: '.$estado->DateShow;
}
Básicamente lo que hace es simular la consulta de pedido, recorrer los resultados y solo dejar el estado que buscas. Lo de enviar el mail ya te lo dejo a ti..
PD: Si no entiendes algo pregunta. Las funciones que salen en rojo y están subrayadas son enlaces que te llevan a la documentación de PHP para explicarte que hace.
Saludos