Objectifs
L'objectif est, dans mon cas, de créer une tâche cron qui vérifie si tous mes liens d'affiliation, pointent toujours vers des produits disponibles sur Amazon, à intervalles réguliers.
Principe
La première étape (qui sera l'objet de cet article) sera de récupérer l'URL complet depuis l'URL raccourci (de type amzn.to), et une fois fait, d'en extraire le numéro ASIN (Amazon Standard Identification Number), qui identifie précisément un produit. Ce numéro sera indispensable pour ensuite vérifier la disponibilité du produit via l'API d'Amazon.
Dans l'exemple ci-dessous, nous partons de l'URL raccourcie https://amzn.to/3rlovyy, et nous obtenons en retour l'URL après redirection (https://www.amazon.fr/semaine-heures-Travaillez-moins-gagnez/dp/2744064173?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2D7112B2NF8B7&keywords=semaine+4h&qid=1695733565&sprefix=semaine+4h,aps,82&sr=8-1&linkCode=sl1&tag=*partnerTag*&linkId=0aaf0c79523f346ddb8a5c2a35538a6e&language=fr_FR&ref_=as_li_ss_tl) ainsi que le code ASIN (2744064173). Notez que pour les livres, l'ASIN est égal au code ISBN-10.
Si vous avez besoin d'aide, ou souhaitez me demander un devis pour une prestation de développement ayant trait à l'affiliation, n'hésitez pas à me contacter.
Code source
$url = 'https://amzn.to/3rlovyy';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$html = curl_exec($ch);
$redirectedUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
if(stripos($redirectedUrl,'/dp/')===false){
echo 'NO DP IN URL '.$redirectedUrl;
}else{
preg_match_all( '#\/dp\/(.*)\?#sUi', $redirectedUrl, $m);
if(!isset($m[1][0])){
echo 'EXTRACTION FAILURE '.$redirectedUrl;
}else{
echo $redirectedUrl.' - ASIN : '.$m[1][0];
}
}