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');
}
}
Imex handle 80669-160-MBK 6-1/4 in black matte finger pull - Lumber Express
Imex handle 80669-160-MBK 6-1/4 in black matte finger pull
The Imex handle 80669-160-MBK 6-1/4 inch black matte finger pull is an excellent choice for updating doors and drawers. Crafted from durable materials, it blends contemporary style with long-lasting functionality. Its matte finish is not only aesthetically appealing but also resistant to stains and scratches, maintaining its original look over time. Easy to install and comfortable to use, this handle provides a secure and ergonomic grip, ideal for residential and commercial applications.
Benefits
Modern design in black matte
Stain and scratch-resistant
Easy installation on doors and drawers
Durable and high-quality material
Provides a comfortable and secure grip
Technical data
Description
Type
Finger pull
Brand
Imex
Product code
80669-160-MBK
Measurements
6-1/4 in
Color
Black matte
Finish
Matte
Dimensions
6-1/4 inches
Similar products
No se encontraron productos relacionados en la subcategoría.
Reviews
There are no reviews yet.
Be the first to review “Imex handle 80669-160-MBK 6-1/4 in black matte finger pull” Cancel reply
Reviews
There are no reviews yet.