function mi_plugin_enviar_datos_pedido_y_notificar($order_id, $old_status, $new_status, $order) {
// Verifica si WooCommerce está instalado y activado
if (!class_exists('WooCommerce')) {
error_log('WooCommerce no está instalado o activado.');
return;
}
// Solo procesar si el nuevo estado es "processing"
if ($new_status !== 'processing') {
error_log("Pedido $order_id en estado '$new_status' - No se envía a la API (solo se envía en estado 'processing').");
return;
}
// Comprobar si el pedido ya ha sido procesado previamente
$already_processed = get_post_meta($order_id, '_mi_plugin_processed', true);
if ($already_processed) {
error_log("Pedido $order_id ya fue procesado anteriormente - No se envía de nuevo.");
return;
}
// Marcar el pedido como procesado para evitar que se ejecute múltiples veces
update_post_meta($order_id, '_mi_plugin_processed', true);
$data = mi_plugin_preparar_datos_pedido($order_id);
if (!$data) {
error_log("No se pudieron preparar los datos para el pedido $order_id");
return;
}
$json_data = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
error_log("Datos a enviar a la API: $json_data");
// Agregar el JSON generado como una nota al pedido
$order->add_order_note("JSON Generado para la API:\n" . $json_data);
try {
$curl = curl_init();
if (!$curl) {
throw new Exception('No se pudo inicializar cURL.');
}
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://119.8.3.165:60080/ApiCoreOne/TV/v1/PedidosVentas',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $json_data,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'X-API-Key: 27d34740-c3d4-1120-2023-b5ba3a62922c'
),
));
$response = curl_exec($curl);
$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
throw new Exception("Error al enviar pedido a la API: " . $err);
}
if ($http_code >= 200 && $http_code < 300) {
// Comprobar si el objeto en la respuesta no es null
$response_data = json_decode($response, true);
if (isset($response_data['Objeto']) && $response_data['Objeto'] !== null) {
// Si el objeto no es null, continuar con el flujo de éxito
$success_message = "Pedido enviado correctamente a la API. Respuesta: " . $response;
error_log($success_message);
$order->add_order_note($success_message);
// Almacena los datos en la tabla
global $wpdb;
$table_name = $wpdb->prefix . 'wc_pedidos_api';
$wpdb->insert(
$table_name,
array(
'order_id' => $order_id,
'json_data' => $json_data,
'api_response' => $response
)
);
} else {
// Si el objeto es null, manejar como error
$error_message = "Error en la respuesta de la API: El objeto es null. Respuesta: " . $response;
error_log($error_message);
$order->add_order_note($error_message);
// Lanzar una excepción
throw new Exception("Error en la respuesta de la API: El objeto es null. Respuesta: " . $response);
}
} else {
// Código de respuesta de error (4xx, 5xx)
$error_message = "Error en la respuesta de la API. Código HTTP: " . $http_code . ", Respuesta: " . $response;
error_log($error_message);
$order->add_order_note($error_message);
// Lanzar una excepción
throw new Exception("Error en la respuesta de la API. Código HTTP: " . $http_code . ", Respuesta: " . $response);
}
} catch (Exception $e) {
// Manejo de errores
$error_message = $e->getMessage();
error_log($error_message);
// Almacena los datos en la tabla, incluso en caso de error
global $wpdb;
$table_name = $wpdb->prefix . 'wc_pedidos_api';
$wpdb->insert(
$table_name,
array(
'order_id' => $order_id,
'json_data' => $json_data,
'api_response' => $error_message
)
);
// Agregar nota con el error
$order->add_order_note("Error al enviar a la API:\n" . $error_message);
// Desmarcar el pedido como procesado para permitir reintentos
delete_post_meta($order_id, '_mi_plugin_processed');
}
}
Black kit for fixing oval structural profile PERALM11NG to the floor - KPM11FPNG - Lumber Express
Black kit for fixing oval structural profile PERALM11NG to the floor – KPM11FPNG
The PERALM11NG black floor fixing kit is designed to securely attach oval structural profiles. This kit includes all the necessary components for quick and safe installation, ensuring profile stability in residential or commercial applications. Its robust components guarantee long-lasting and reliable fixation, capable of supporting heavy loads and providing a solid structure over time. The black finish gives it a neat, aesthetic appearance that blends well in various settings.
Benefits
Easy installation with all necessary components included.
High resistance and durability in demanding conditions.
Perfect for securing oval structural profiles.
Black finish that offers an aesthetic and discreet appearance.
Ideal for both residential and commercial applications.
Technical data
Description
Material
High-strength steel with a black finish.
Compatibility
Suitable for oval structural profiles PERALM11NG.
Application
Floor fixing in residential and commercial installations.
Durability
High resistance to corrosion and heavy loads.
Finish
Black finish providing an aesthetic and discreet look.
Reviews
There are no reviews yet.