File: /home/royaltuning/www/public/backoffice.royaltuning.hu/app/Services/WooCommerceService.php
<?php
namespace App\Services;
use Automattic\WooCommerce\Client;
use Automattic\WooCommerce\HttpClient\HttpClientException;
use Illuminate\Support\Facades\Storage;
use Log;
class WooCommerceService
{
public function getOrders(array $config, $request, $type)
{
$page = 1;
$woocommerce = new Client(
$config['url'],
$config['consumer_key'],
$config['consumer_secret'],
[
'version' => 'wc/v3',
'query_string_auth' => true,
'timeout' => 600
]
);
$params = [];
$params['per_page'] = 100;
$params['page'] = $page;
if ($request->after) {
$params['after'] = date("Y-m-d\TH:i:s", strtotime($request->after));
}
if ($request->before) {
$params['before'] = date("Y-m-d\TH:i:s", strtotime($request->before));
}
if ($request->status) {
$params['status'] = $request->status;
}
$all_orders = [];
try {
do {
$orders = $woocommerce->get('orders', $params);
$all_orders = array_merge($all_orders, (array)$orders);
Storage::disk('apilogsWoocommerce')->put($type . '-getorders-request.json', json_encode($params));
Storage::disk('apilogsWoocommerce')->put($type . '-getorders-response.json', json_encode($all_orders));
$params['page']++; // Next page
} while (count($orders) === 100); // If less than 100, no more data
} catch (HttpClientException $e) {
Log::error("WooCommerce API request failed: " . $e->getMessage(), [
'url' => $config['url'],
'params' => $params,
'response' => $e->getResponse()
]);
throw $e; // Re-throw the exception if needed
}
return (array)$all_orders;
}
}