c64girl Posted February 29 Share Posted February 29 I have a problem, with change order status id with following code. I get in logs 401. <?php // Ustawienia $prestashop_url = 'https://mysite.pl'; $api_key = '783V4YB8732VV47823V4283V4B7823YV47823YV47823YV4EXAMPLE'; $order_status_id = 10; // ID statusu zamówienia, dla przykładu zakładam ID 10 $new_order_status_id = 20; // ID nowego statusu zamówienia, który chcesz ustawić po wygenerowaniu pliku JSON $two_weeks_ago = date('Y-m-d', strtotime('-2 weeks')); // Data sprzed dwóch tygodni $current_date = date('d-m-Y-H-i'); // Aktualna data i czas w formacie dzień-miesiąc-rok-godzina-minuta // Endpoint API $api_endpoint = $prestashop_url . '/api/orders'; // Parametry zapytania $params = array( 'output_format' => 'JSON', 'filter[current_state]' => $order_status_id, // Filtruj po ID statusu zamówienia 'display' => 'full', 'ws_key' => $api_key ); // Wykonaj zapytanie do API PrestaShop $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_endpoint . '?' . http_build_query($params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); // Przetwórz odpowiedź if ($response) { $orders_data = json_decode($response, true)['orders']; // Przetwórz dane i wygeneruj JSON $orders_json = []; foreach ($orders_data as $order) { $order_date = date('Y-m-d H:i:s', strtotime($order['date_add'])); // Data dodania zamówienia if (strtotime($order_date) >= strtotime('-2 weeks')) { $order_info = array( 'reference' => $order['reference'], // Numer referencyjny zamówienia 'order_id' => $order['id'], 'order_date' => $order_date, // Data dodania zamówienia 'products' => [] ); foreach ($order['associations']['order_rows'] as $product) { $order_info['products'][] = array( 'name' => $product['product_name'], 'quantity' => $product['product_quantity'], 'SKU' => $product['product_reference'], 'EAN' => $product['product_ean13'] ); } $orders_json[] = $order_info; // Aktualizacja statusu zamówienia $order_id = $order['id']; updateOrderStatus($order_id, $new_order_status_id); } } // Nazwa pliku JSON $file_name = 'orders-' . $current_date . '.json'; // Zapisz do pliku JSON file_put_contents($file_name, json_encode($orders_json, JSON_PRETTY_PRINT)); echo "Dane zamówień zostały wyeksportowane do pliku JSON o nazwie '$file_name' i statusy zamówień zostały zaktualizowane."; } else { echo "Błąd podczas pobierania danych z API PrestaShop."; } // Funkcja do aktualizacji statusu zamówienia function updateOrderStatus($order_id, $new_status_id) { global $prestashop_url, $api_key; $api_endpoint = $prestashop_url . '/api/orders/' . $order_id; // Dane do aktualizacji statusu $status_data = array( 'order' => array( 'current_state' => $new_status_id ) ); // Ustawienia zapytania $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_endpoint); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($status_data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Authorization: Basic ' . base64_encode($api_key . ':') )); // Wykonaj zapytanie $response = curl_exec($ch); curl_close($ch); } ?> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now