Download the PHP package shubo/module-shipping-shippo without Composer
On this page you can find all versions of the php package shubo/module-shipping-shippo. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download shubo/module-shipping-shippo
More information about shubo/module-shipping-shippo
Files in shubo/module-shipping-shippo
Package module-shipping-shippo
Short Description Shippo carrier adapter for Shubo_ShippingCore — first real carrier integration proving the carrier-agnostic abstraction (rate quote, label purchase, webhook, polling).
License Apache-2.0
Homepage https://github.com/nshubitidze/module-shipping-shippo
Informations about the package module-shipping-shippo
Shubo_ShippingShippo
First real carrier adapter for Shubo_ShippingCore. Integrates Shippo as a multi-carrier aggregator — one API key gives access to USPS, UPS, FedEx, DHL, and dozens of regional carriers.
Apache 2.0 · Magento 2.4.8 · PHP ≥ 8.1.
What it does
- Rate quote — POST
/shipments→ returns all eligible rates, filtered by your allowed-carriers config. - Label purchase — POST
/transactions→ picks cheapest (or the operator's preferred carrier) and persists the Shippo transaction id for idempotent retries. - Tracking — webhook handler for
track_updatedevents + poller fallback via GET/tracks/{carrier}/{tracking}. - Cancel — POST
/refundsto void a purchased label. - Signature verification — HMAC-SHA256 with
hash_equalstiming-safe compare; empty signatures rejected.
What it does NOT do
- COD (Shippo supports it only on USPS, not relevant for international shipments from Georgia).
- Georgia-domestic delivery (use a domestic carrier adapter — Wolt Drive or Trackings.ge when those adapters land).
listCities()/listPudos()— both return[]. Shippo does not expose a city or PUDO API.
Install
For local development on this module inside a duka container, bind-mount the standalone repo. See /home/nika/duka/docker-compose.override.yml for the pattern.
Configure
Set the API key + webhook secret via CLI. Test keys start with shippo_test_* and cannot purchase real labels — the project's spending-safety floor.
For live rollout, save the shippo_live_* key through the admin UI (Stores → Configuration → Sales → Shippo Carrier) so the Encrypted backend model encrypts it at rest. Live mode hard-fails if it reads a plaintext value from core_config_data.
Register the webhook
The webhook URL is owned by Shubo_ShippingCore's WebhookReceiver — this module only registers the handler inside the core dispatcher.
Smoke test (live sandbox)
Expected output (sandbox):
Status enum map (Shippo → ShippingCore normalized)
| Shippo | ShippingCore | Terminal |
|---|---|---|
UNKNOWN |
pending |
no |
PRE_TRANSIT |
awaiting_pickup |
no |
TRANSIT |
in_transit |
no |
DELIVERED |
delivered |
yes |
RETURNED |
returned |
yes |
FAILURE |
failed |
yes |
Development
Tests mock CurlFactory — no live Shippo calls from PHPUnit. Live verification goes through the smoke CLI only.
Cost note
Shippo charges ~$0.05 per purchased label on top of the carrier's posted rate. This lands in the buyer/merchant's shipping cost, not Shubo's margin.
Design doc
docs/design.md — ~200 lines, authoritative spec for the 10 core flows + failure handling + idempotency + security.
All versions of module-shipping-shippo with dependencies
ext-bcmath Version *
ext-json Version *
magento/framework Version ^103.0
shubo/module-shipping-core Version ^0.11.0 || ^0.12.0