PluginProbe
Route ‑ Shipping Protection / 2.4.18
Route ‑ Shipping Protection v2.4.18
2.4.19 2.4.18 2.4.17 2.4.16 2.4.15 2.4.14 2.4.13 2.4.12 2.4.11 2.4.10 2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.2.4 2.2.5 2.2.6 2.2.8 2.2.9 2.3.0 2.3.1 All 153 releases
← All changes | includes/class-routeapp-cron-schedules.php +10 -10 2.4.16 → 2.4.18 View file →
@@ -307,17 +307,10 @@
307 307
308 308 try {
309 309 $response = $routeapp_client->create_shipment($trackingPayload['tracking_number'], $trackingPayload);
310 310
311 - if (!is_wp_error($response) &&
312 - (wp_remote_retrieve_response_code($response) == 409 ||
313 - wp_remote_retrieve_response_code($response) == 201)
314 - ) {
315 - return true;
316 - }
311 + return Routeapp_WooCommerce_Common_Tracking_Provider::is_successful_shipment_create_response($response);
317 312
318 - return false;
319 -
320 313 } catch (Exception $exception) {
321 314 self::get_route_public_instance()->routeapp_log($exception, [
322 315 'endpoint' => 'shipments',
323 316 'params' => $trackingPayload,
@@ -445,8 +438,9 @@
445 438 try {
446 439
447 440 $trackingPayloads = self::format_shipping_data_api($order->get_id());
448 441 $tracking_numbers = array();
442 + $create_failed = false;
449 443 foreach ($trackingPayloads as $trackingPayload){
450 444 $shipmentResponse = $routeapp_client->get_shipment($trackingPayload['tracking_number'], $order->get_id());
451 445 $tracking_numbers[] = $trackingPayload['tracking_number'];
452 446 if (is_wp_error($shipmentResponse) || (isset($shipmentResponse['response']['code']) && $shipmentResponse['response']['code'] == 200)) {
@@ -452,9 +446,11 @@
452 446 if (is_wp_error($shipmentResponse) || (isset($shipmentResponse['response']['code']) && $shipmentResponse['response']['code'] == 200)) {
453 447 continue;
454 448 }
455 449
456 - self::resend_shipment($trackingPayload);
450 + if ( ! self::resend_shipment($trackingPayload) ) {
451 + $create_failed = true;
452 + }
457 453 }
458 454
459 455 //save on post_meta the tracking ids
460 456 if (!empty($tracking_numbers)) {
@@ -461,9 +457,13 @@
461 457 $tracking_numbers = implode(Routeapp_WooCommerce_Tracking_Provider::SEPARATOR_PIPE, $tracking_numbers);
462 458 self::update_post_meta_value($order->get_id(), 'routeapp_shipment_tracking_number', $tracking_numbers);
463 459 }
464 460
465 - self::set_reconcile_shipping_triggered($order->get_id());
461 + // A 400 from create_shipment is not success — leave the cron
462 + // flag unset so the next run can retry (EXT-425).
463 + if ( ! $create_failed ) {
464 + self::set_reconcile_shipping_triggered($order->get_id());
465 + }
466 466
467 467 } catch (Exception $exception) {
468 468 continue;
469 469 }