Guten Morgen
Wir sind Kunde bei Hello Fresh und ich würde gerne die aktuellen Gerichte, die geliefert werden in IPS anzeigen. Hat sich da schon mal jemand näher damit befasst? Anscheinend gibt es eine API aber die Informationen sind da eher dürftig.
Ick kann zwar nicht helfen, hänge mich aber an die Frage dran
Hi,
habe seit eben auch Hello Fresh…
kleiner schmankerl
[allowedActions] => Array
(
[mealSwap] => 1
[updateDeliveryAddress] => 1
[updateDeliveryWeekday] => 1
[pause] =>
[oneOffChange] => 1
[updatePaymentMethod] =>
[donate] =>
)
[id] => 2024-W38
[deliveryDate] => 2024-09-18T12:00:00+0200
[cutoffDate] => 2024-09-13T23:59:59+0200
[status] => DELIVERED
[subStatus] => NULL
[actionable] =>
[prepaid] =>
[holidayDelivery] =>
[holidayMessage] =>
[isHolidayShiftVisible] =>
[product] => Array
(
[handle] => DE-XXXXX
[specs] => Array
(
[meals] => 3
[size] => 3
[recurrency] => 0
)
[family] => Array
(
[handle] => classic-box-t22
[tags] => Array
(
[0] => is_meal_plan
[1] => is_mealbox
[2] => is_bestseller
[3] => hide_in_bags_page
[4] => is_t16
)
[name] => Classic Box
)
[productName] => 3 Mahlzeiten Box für 3 Personen
[shippingPrice] => 0
[specialFee] => 599
[price] => 5450
)
das ist aber echt noch einiges an arbeit… Und mir fehlt noch der Titel des Menüs…
Wer mitsuchen will, ihr benötigt eure subscription ID (einmal über den browser anmelden und oben in der Adressleiste raussuchen und anstelle von <ID>
eintragen.
Öffnet vor der anmeldung mit F12 die developer konsole, klickt auf network und gebt als filter „gw/log“ ein und meldet euch an, es müsste nach der Anmeldung im enrollment den Authorization Bearer sehen (weiter runterscrollen und ewig langen schlüssel)
$url = "https://www.hellofresh.de/gw/api/subscriptions/<ID>/delivery_dates/2024-W38?country=DE&locale=de-DE";
$bearer = 'selber raussuchen über developer console';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = array();
$headers[] = 'Authorization: Bearer '. $bearer;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
print_r(json_decode($result, true));
Das ist nur „ein schneller“ schnipsel und ob ich daraus ein Modul mache, steht noch in den sternen, aber der anfang ist gemacht
Sehr cool. Danke. Ich schau mir das mal an.
Funktioniert bei mir. Ich hab allerdings bei country=DE, country=AT eingetragen. Mit „DE“ bekomme ich einen Fehler „Invalid username…“.
Ein kleiner Nachtrag. Nach einer Zeit verliert der Bearer seine Gültigkeit. Müsste man dann neu anfordern.
genau, nach exakt 30 min… du kannst dir den Bearer auch dekodieren…
einfach da den bearer reinkopieren.
Was mach ich damit? Hilft das weiter?