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');
}
}
L connector (90°) for connecting 4 pin LED Strip Connector 10mm LED RGB Light Strip - Lumber Express
L connector (90°) for connecting 4 pin LED Strip Connector 10mm LED RGB Light Strip
The L connector (90°) for 10mm RGB LED strips is a practical and efficient solution for making 90-degree angle connections between RGB LED strips. This 4-pin connector is ideal for lighting projects that require bends and adjustments in the direction of the strips without compromising power signal quality. Made from high-quality materials, it ensures a stable and durable connection. It is used to interconnect segments of 10mm wide LED strips, allowing users to create customized lighting designs without the need for complicated soldering. Perfect for installations in tight spaces or where a more compact and neat connection is needed.
Benefits
Easy to use, no soldering required.
Safe and stable connection for RGB LED strips.
Allows 90° bends in LED strip installations.
Compact design saves space in complex installations.
Compatible with 10mm wide LED strips.
Technical data
Description
Connector type
L connector (90°) for 4-pin RGB LED strip
Compatible strip width
10mm
Material
Durable plastic with high-quality metal contacts
Usage
Connect RGB LED strips without the need for soldering
Reviews
There are no reviews yet.