Livraison (StoreShipping)
Le module StoreShippingModule permet de configurer les profils d’expédition, les zones de livraison et les tarifs associés.
Accès : client.app.store.shipping
Concepts clés
Structure hiérarchique
Profil de livraison (Shipping Profile)
└── Zones (Zones)
└── Tarifs (Rates)- Profil : Configuration de livraison globale (ex: “Livraison Standard”, “Express”)
- Zone : Région géographique (liste de pays)
- Tarif : Prix et conditions de livraison pour une zone
Types de tarifs
| Type | Description |
|---|---|
FLAT | Tarif fixe |
WEIGHT_BASED | Basé sur le poids (minVal/maxVal en kg) |
PRICE_BASED | Basé sur le montant (minVal/maxVal en devise) |
Méthodes
create
Crée un nouveau profil de livraison avec ses zones et tarifs.
Exemple
const response = await client.app.store.shipping.create({
appId: "app_id",
apiKey: "user_api_key",
name: "Livraison Standard",
sellerId: "seller_id",
isDefault: true,
zones: [
{
name: "Abidjan",
countries: ["CI"],
rates: [
{
name: "Standard",
type: "FLAT",
price: 1500
},
{
name: "Express",
type: "FLAT",
price: 3000
}
]
},
{
name: "Afrique de l'Ouest",
countries: ["SN", "ML", "BF", "GH"],
rates: [
{
name: "Standard",
type: "WEIGHT_BASED",
price: 5000,
minVal: 0,
maxVal: 5 // jusqu'à 5kg
},
{
name: "Lourd",
type: "WEIGHT_BASED",
price: 10000,
minVal: 5,
maxVal: 20 // 5-20kg
}
]
}
]
});list
Liste tous les profils de livraison.
Exemple
const response = await client.app.store.shipping.list({
appId: "app_id",
apiKey: "user_api_key"
});
// Trouver le profil par défaut
const defaultProfile = response.data.find(p => p.isDefault);get
Récupère les détails d’un profil de livraison.
Exemple
const response = await client.app.store.shipping.get({
appId: "app_id",
apiKey: "user_api_key",
id: "profile_id"
});
if (response.success) {
const profile = response.data;
console.log(`Profil: ${profile.name}`);
console.log(`Zones: ${profile.zones.length}`);
console.log(`Produits associés: ${profile._count.products}`);
}update
Met à jour un profil de livraison.
Exemple
// Renommer le profil
const response = await client.app.store.shipping.update({
appId: "app_id",
apiKey: "user_api_key",
id: "profile_id",
name: "Livraison Express"
});
// Définir comme profil par défaut
const response2 = await client.app.store.shipping.update({
appId: "app_id",
apiKey: "user_api_key",
id: "profile_id",
isDefault: true
});
// Modifier les zones et tarifs
const response3 = await client.app.store.shipping.update({
appId: "app_id",
apiKey: "user_api_key",
id: "profile_id",
zones: [
{
name: "Nouvelle Zone",
countries: ["CI", "SN"],
rates: [
{ name: "Standard", type: "FLAT", price: 2000 }
]
}
]
});delete
Supprime un profil de livraison.
Exemple
const response = await client.app.store.shipping.delete({
appId: "app_id",
apiKey: "user_api_key",
id: "profile_id"
});
if (response.success) {
console.log("Profil de livraison supprimé");
}Exemple complet
// Créer un profil de livraison complet
const profile = await client.app.store.shipping.create({
appId: "app_id",
apiKey: "user_api_key",
name: "Livraison Internationale",
sellerId: "seller_id",
isDefault: true,
zones: [
{
name: "Local (Abidjan)",
countries: ["CI"],
rates: [
{ name: "Gratuit (+50000)", type: "PRICE_BASED", price: 0, minVal: 50000 },
{ name: "Standard", type: "FLAT", price: 1500 },
{ name: "Express (24h)", type: "FLAT", price: 3500 }
]
},
{
name: "Afrique de l'Ouest",
countries: ["SN", "ML", "BF", "GH", "TG", "BJ"],
rates: [
{ name: "Léger (<2kg)", type: "WEIGHT_BASED", price: 8000, minVal: 0, maxVal: 2 },
{ name: "Standard (2-10kg)", type: "WEIGHT_BASED", price: 15000, minVal: 2, maxVal: 10 },
{ name: "Lourd (>10kg)", type: "WEIGHT_BASED", price: 25000, minVal: 10 }
]
},
{
name: "Europe",
countries: ["FR", "BE", "CH", "DE"],
rates: [
{ name: "Standard (7-14j)", type: "FLAT", price: 35000 },
{ name: "Express (3-5j)", type: "FLAT", price: 55000 }
]
}
]
});Gestion des erreurs
| Code erreur | Description |
|---|---|
shipping-profile-not-found | Le profil n’existe pas |
not-authorized | La clé API n’a pas les droits nécessaires |
Last updated on