API NoEST en Node.js et PHP
NoEST (NOEST Express) expose une API publique pour ses partenaires e-commerce. Avec dz-delivery, le provider noest parle cette API avec le même code que les autres transporteurs.
Installer
npm install @dz-delivery/core
composer require dz-delivery/sdk
Node.js ≥ 18 (aucune dépendance) ou PHP ≥ 8.2 (Guzzle 7). Le même code fonctionne ensuite pour les autres transporteurs : seule la configuration du client change.
Identifiants NoEST
| Option | Valeur | Notes |
|---|---|---|
apiToken | Token API du tableau de bord partenaire NOEST | Envoyé en Authorization: Bearer <token> |
userGuid | GUID partenaire (même page) | Envoyé en user_guid dans chaque POST |
autoValidate | false par défaut | true : valid/order juste après la création |
NoEST en TypeScript / Node.js
import { createClient, isShippingError } from '@dz-delivery/core'; const noest = createClient('noest', { apiToken: process.env.NOEST_API_TOKEN!, userGuid: process.env.NOEST_USER_GUID!, autoValidate: true, // remettre le colis au transporteur tout de suite }); const desks = await noest.getStopDesks({ wilayaId: 16 }); const quote = await noest.getFees({ toWilayaId: 16 }); try { const parcel = await noest.createParcel({ recipientName: 'Mohamed Amine', phone: '0550123456', address: 'Cité 221 lots, n°98', wilayaId: 16, communeName: 'Bab Ezzouar', productName: 'T-shirt', price: 2500, orderId: 'ORDER-1001', }); const { parcel: current, events } = await noest.track(parcel.trackingNumber); } catch (err) { if (isShippingError(err)) console.error(err.code, err.message); }
NoEST en PHP / Laravel
use DzDelivery\ClientFactory; use DzDelivery\Errors\ShippingError; $noest = ClientFactory::create('noest', [ 'apiToken' => getenv('NOEST_API_TOKEN'), 'userGuid' => getenv('NOEST_USER_GUID'), 'autoValidate' => true, ]); $quote = $noest->getFees(['toWilayaId' => 16]); try { $parcel = $noest->createParcel([ 'recipientName' => 'Mohamed Amine', 'phone' => '0550123456', 'address' => 'Cité 221 lots, n°98', 'wilayaId' => 16, 'communeName' => 'Bab Ezzouar', 'productName' => 'T-shirt', 'price' => 2500, 'orderId' => 'ORDER-1001', ]); $result = $noest->track($parcel->trackingNumber); } catch (ShippingError $e) { echo "{$e->code}: {$e->getMessage()}"; }
Guide PHP complet (Laravel, erreurs, tests) : guide-php.md.
Méthodes supportées
| Méthode | Support | Notes |
|---|---|---|
createParcel | oui | Reste pending jusqu’à validation (voir autoValidate). |
track | oui | Statut unifié + historique (event_key). |
getFees | oui | Grille du partenaire par wilaya (domicile, stop desk, retour). |
getWilayas / getCommunes | oui | Communes actives uniquement. |
getStopDesks | oui | Stations NOEST (id = code station, ex. 16B). |
listParcels | NOT_SUPPORTED | L’API NOEST n’a pas de liste des commandes. |
cancelParcel | oui | Uniquement avant validation. |
healthCheck | oui | Vérifie le token (appel réel). |
À savoir sur l’API NoEST
- Validation : sans
autoValidate: true, les commandes restent modifiables et supprimables, mais NOEST ne les ramasse pas. - Noms de communes : NOEST écrit par exemple « Bab Azzouar ». Le SDK accepte aussi « Bab Ezzouar » (correspondance tolérante, seulement quand une seule commune correspond).
orderId(référence NOEST) doit faire au moins 5 caractères : sinonVALIDATION_ERRORavant tout appel.- Compte suspendu ou
userGuidinconnu →AUTH_FAILED; doublon, commune inactive… →VALIDATION_ERRORavecdetails[].code. - Le
baseUrldoit être en HTTPS.
Mapping natif détaillé (endpoints, champs, statuts) : PROVIDERS.md.
FAQ NoEST
Où trouver mon token et mon GUID NoEST ?
Dans le tableau de bord partenaire NOEST, rubrique API. Les deux sont nécessaires.
Pourquoi mes commandes NoEST ne sont pas ramassées ?
Elles ne sont pas validées. Activez autoValidate: true ou validez-les depuis le tableau de bord.
Puis-je lister mes colis NoEST ?
Non : l’API NOEST n’a pas d’endpoint de liste, listParcels renvoie NOT_SUPPORTED. Utilisez track par numéro.
Autres transporteurs
Même interface, mêmes statuts normalisés (pending, in_transit, delivered…).