Guía de integración · WooCommerce

Integrar Shalom con WooCommerce por API.

La integración de Shalom con WooCommerce se hace del lado del servidor con un snippet de PHP: cuando un pedido pasa a 'procesando', tu tienda llama a la API, cotiza la tarifa, crea la guía en Shalom Pro y guarda el número de guía en el pedido. Es un flujo ideal para tiendas con pago contra entrega (COD): con los webhooks de tracking sabes al instante si el pedido fue entregado o rechazado, sin llamar a la agencia.

1. Obtén tu API key

Solicita la API key por WhatsApp y guárdala como constante en wp-config.php (nunca en el código del tema).

wp-config.php
define('SHALOM_API_KEY', 'sk_tu_api_key');

2. Resuelve la agencia de destino

Mapea la ciudad del cliente a una agencia del catálogo con la búsqueda avanzada (guárdalo en un transiente: el catálogo cambia poco):

PHP — buscar agencia
<?php
$res = wp_remote_get(
  "https://api.shalom-api.lat/agencies/search?q=" . urlencode($ciudad) . "&per_page=1",
  ["headers" => ["x-api-key" => SHALOM_API_KEY]]
);
$agencia = json_decode(wp_remote_retrieve_body($res), true)["data"][0] ?? null;

3. Crea la guía al pagar el pedido

Engancha el hook woocommerce_order_status_processing y registra el envío en tu instancia de Shalom Pro:

PHP — crear guía
<?php
add_action('woocommerce_order_status_processing', function ($order_id) {
  $order = wc_get_order($order_id);
  $res = wp_remote_post("https://api.shalom-api.lat/account/register", [
    "headers" => [
      "x-api-key" => SHALOM_API_KEY,
      "Content-Type" => "application/json",
    ],
    "body" => wp_json_encode([
      "instanceId" => SHALOM_INSTANCE_ID,
      "origen" => 7, // tu agencia de despacho
      "destino" => $agencia["ter_id"],
      "destinatario" => [
        "dni" => $order->get_meta("_dni"),
        "nombre" => $order->get_shipping_first_name() . " " . $order->get_shipping_last_name(),
        "telefono" => $order->get_billing_phone(),
        "direccion" => $order->get_shipping_address_1(),
      ],
    ]),
  ]);
  $data = json_decode(wp_remote_retrieve_body($res), true);
  if (!empty($data["orderNumber"])) {
    $order->update_meta_data("_shalom_guia", $data["orderNumber"]);
    $order->save();
  }
});

4. Notifica el rastreo al cliente

Suscribe cada guía a los webhooks de tracking y muestra el estado en la página de gracias o en el correo de completado. Cada cambio de estado llega firmado a tu endpoint; valida la firma con el secreto whsec_ antes de mostrarlo.

Continúa con