Skip to content

InPost integration (Paczkomaty)

El módulo InPost integra WooCommerce con la API ShipX. Genere etiquetas, permita que los clientes elijan un Paczkomat en el mapa y haga seguimiento de los envíos desde el panel de administración.

Vaya a WooCommerce > Ajustes > Polski PRO > InPost.

AjusteDescripción
Token de APIToken de autorización del panel de InPost Manager
ID de organizaciónIdentificador de la organización en el sistema de InPost
Modo sandboxUsa el entorno de pruebas de la API ShipX

El token de API se envía en la cabecera Authorization: Bearer {token} con cada solicitud a la API ShipX. El token debe tener permisos para crear envíos y generar etiquetas.

Después de configurar la API, cree un nuevo método de envío:

  1. Vaya a WooCommerce > Ajustes > Envío > Zonas de envío
  2. Edite la zona “Polonia”
  3. Haga clic en “Añadir método de envío”
  4. Seleccione “InPost Paczkomat” o “InPost Mensajería”
Ajuste del métodoValor predeterminadoDescripción
Título del método”InPost Paczkomat”Nombre mostrado al cliente
Coste0Coste de envío (0 = gratis)
Envío gratis a partir de""Importe del pedido a partir del cual el envío es gratis
Tamaño de paquete predeterminadoATamaño: A, B, C
SeguroNoAñadir seguro al envío

En la página de pago, tras seleccionar el método de envío “InPost Paczkomat”, se muestra un widget de mapa interactivo que permite al cliente seleccionar un Paczkomat.

El widget ofrece:

  • Mapa con marcadores de Paczkomaty
  • Búsqueda por ciudad - escriba el nombre de una ciudad para centrar el mapa
  • Búsqueda por coordenadas - geolocalización automática (con el consentimiento del usuario)
  • Búsqueda por código postal - encontrar los Paczkomaty más cercanos
  • Lista de Paczkomaty - ordenada del más cercano
  • Detalles del punto - dirección, horario de apertura, tamaños de casilleros disponibles

El widget envía una solicitud al endpoint de la API ShipX:

GET /v1/points?type=parcel_locker&city={city}&per_page=25

Los resultados se almacenan en caché durante 24 horas en transients de WordPress para minimizar el número de solicitudes a la API.

Cuando el cliente consiente la geolocalización:

GET /v1/points?type=parcel_locker&relative_point={lat},{lng}&per_page=10
/**
* Filtruje listę punktów odbioru InPost.
*
* @param array $points Tablica punktów odbioru z API
* @param string $city Wyszukiwane miasto
* @param array $coords Współrzędne [lat, lng] lub pusta tablica
*/
apply_filters('polski_pro/inpost/points', array $points, string $city, array $coords): array;

Ejemplo - excluir puntos temporalmente no disponibles:

add_filter('polski_pro/inpost/points', function (array $points, string $city, array $coords): array {
$excluded_points = ['KRA123', 'WAW456']; // Tymczasowo wyłączone
return array_filter($points, function (array $point) use ($excluded_points): bool {
return ! in_array($point['name'], $excluded_points, true);
});
}, 10, 3);

En la página de edición del pedido, el panel InPost ofrece las siguientes opciones:

  1. Generar etiqueta - crea un envío en la API ShipX y genera una etiqueta PDF
  2. Descargar etiqueta - descarga la etiqueta generada
  3. Imprimir etiqueta - abre una vista previa de impresión

En la lista de pedidos, seleccione varios pedidos y elija la acción masiva “Generar etiquetas InPost”. Las etiquetas se generan de forma asíncrona - al finalizar aparece una notificación con un enlace para descargar el archivo ZIP.

La etiqueta se genera a partir de:

CampoOrigenDescripción
RemitenteAjustes de la tiendaDirección y datos de la empresa de WooCommerce
DestinatarioDatos del pedidoNombre, apellidos, teléfono, correo electrónico
Punto de recogidaSelección del clienteID del Paczkomat seleccionado en el pago
Tamaño del paqueteAjuste del métodoO anulación en el pedido
Importe contra reembolsoPedido contra reembolsoSolo para pedidos contra reembolso
/**
* Filtruje dane przesyłki przed wysłaniem do API ShipX.
*
* @param array $shipment_data Dane przesyłki
* @param \WC_Order $order Zamówienie WooCommerce
*/
apply_filters('polski_pro/inpost/shipment_data', array $shipment_data, \WC_Order $order): array;

Ejemplo - añadir una referencia del pedido:

add_filter('polski_pro/inpost/shipment_data', function (array $shipment_data, \WC_Order $order): array {
$shipment_data['reference'] = sprintf('ORDER-%s', $order->get_order_number());
return $shipment_data;
}, 10, 2);

Tras generar una etiqueta, el módulo comprueba automáticamente el estado del envío cada 2 horas (WP-Cron). Los estados se asignan a los estados de pedido de WooCommerce:

Estado de InPostEstado de WooCommerceDescripción
createdprocessingEnvío creado
dispatched_by_senderprocessingEnviado por el remitente
collected_from_sendershippedRecogido del remitente
out_for_deliveryshippedEn reparto
ready_to_pickupshippedListo para recoger en el Paczkomat
deliveredcompletedEntregado / recogido

El cliente recibe un correo electrónico con un enlace de seguimiento a la página de seguimiento de InPost. El enlace de seguimiento se añade a:

  • El correo electrónico “Pedido en proceso”
  • La página “Mi cuenta > Pedidos > Detalles”
  • Las notas del pedido (visibles para el cliente)
/**
* Akcja wywoływana po aktualizacji statusu przesyłki.
*
* @param int $order_id ID zamówienia
* @param string $tracking_number Numer śledzenia
* @param string $old_status Poprzedni status InPost
* @param string $new_status Nowy status InPost
*/
do_action('polski_pro/inpost/status_updated', int $order_id, string $tracking_number, string $old_status, string $new_status);

Ejemplo - notificación por SMS sobre la disponibilidad para recogida:

add_action('polski_pro/inpost/status_updated', function (
int $order_id,
string $tracking_number,
string $old_status,
string $new_status
): void {
if ($new_status === 'ready_to_pickup') {
$order = wc_get_order($order_id);
$phone = $order->get_billing_phone();
send_sms($phone, sprintf(
'Twoja paczka %s czeka w Paczkomacie. Kod odbioru w e-mailu.',
$tracking_number
));
}
}, 10, 4);
TamañoDimensiones (cm)Peso máx.
A8 x 38 x 6425 kg
B19 x 38 x 6425 kg
C41 x 38 x 6425 kg

El tamaño del paquete se puede establecer globalmente, por método de envío o anular manualmente en el pedido.

El mapa de Paczkomaty no carga Compruebe que el token de API sea válido y esté activo. Revise la consola del navegador en busca de errores de CORS o JavaScript. Asegúrese de que el script polski-pro-inpost-map.js esté cargado.

Error de generación de etiqueta “Unauthorized” El token de API ha caducado o no tiene permisos para crear envíos. Genere un nuevo token en el panel de InPost Manager.

El estado del envío no se actualiza Compruebe que WP-Cron funcione correctamente. Ejecute manualmente: wp cron event run polski_pro_inpost_tracking.

Esta página tiene únicamente carácter informativo y no constituye asesoramiento legal. Consulte con un abogado antes de la implementación. Polski for WooCommerce es software de código abierto (GPLv2) que se proporciona sin garantía.